#ifndef HALIDE_DEVICE_INTERFACE_H
#define HALIDE_DEVICE_INTERFACE_H
/** \file
* Methods for managing device allocations when jitting
*/
#include "Target.h"
namespace Halide {
/** Get the appropriate halide_device_interface_t * for a
* target. Corresponds to the device interface that would be used for
* DeviceAPI::Default_GPU. Creates a GPU runtime module for the target
* if necessary. Returns nullptr if no device APIs are enabled in the
* target. */
EXPORT const halide_device_interface_t *get_default_device_interface_for_target(const Target &t);
/** Gets the appropriate halide_device_interface_t * for a
* DeviceAPI. Returns null if that device API is not enabled in the
* target, or if the argument is None or Host. */
EXPORT const halide_device_interface_t *get_device_interface_for_device_api(const DeviceAPI &d,
const Target &t = get_jit_target_from_environment());
/** Get the specific DeviceAPI that Halide would select when presented
* with DeviceAPI::Default_GPU for a given target. If no suitable api
* is enabled in the target, returns DeviceAPI::Host. */
EXPORT DeviceAPI get_default_device_api_for_target(const Target &t);
}
#endif