Halide
DeviceInterface.h
Go to the documentation of this file.
1 #ifndef HALIDE_DEVICE_INTERFACE_H
2 #define HALIDE_DEVICE_INTERFACE_H
3 
4 /** \file
5  * Methods for managing device allocations when jitting
6  */
7 
8 #include "Target.h"
9 
10 namespace Halide {
11 
12 /** Gets the appropriate halide_device_interface_t * for a
13  * DeviceAPI. If error_site is non-null, e.g. the name of the routine
14  * calling get_device_interface_for_device_api, a user_error is
15  * reported if the requested device API is not enabled in or supported
16  * by the target, Halide has been compiled without this device API, or
17  * the device API is None or Host or a bad value. The error_site
18  * argument is printed in the error message. If error_site is null,
19  * this routine returns nullptr instead of calling user_error. */
21  const Target &t = get_jit_target_from_environment(),
22  const char *error_site = nullptr);
23 
24 /** Get the specific DeviceAPI that Halide would select when presented
25  * with DeviceAPI::Default_GPU for a given target. If no suitable api
26  * is enabled in the target, returns DeviceAPI::Host. */
28 
29 /** This attempts to sniff whether a given Target (and its implied DeviceAPI) is usable on
30  * the current host. If it appears to be usable, return true; if not, return false.
31  * Note that a return value of true does *not* guarantee that future usage of
32  * that device will succeed; it is intended mainly as a simple diagnostic
33  * to allow early-exit when a desired device is definitely not usable.
34  * Also note that this call is *NOT* threadsafe, as it temporarily redirect various
35  * global error-handling hooks in Halide. */
36 bool host_supports_target_device(const Target &t);
37 
38 namespace Internal {
39 /** Get an Expr which evaluates to the device interface for the given device api at runtime. */
40 Expr make_device_interface_call(DeviceAPI device_api);
41 } // namespace Internal
42 
43 } // namespace Halide
44 
45 #endif
Halide::get_default_device_api_for_target
DeviceAPI get_default_device_api_for_target(const Target &t)
Get the specific DeviceAPI that Halide would select when presented with DeviceAPI::Default_GPU for a ...
Halide::host_supports_target_device
bool host_supports_target_device(const Target &t)
This attempts to sniff whether a given Target (and its implied DeviceAPI) is usable on the current ho...
Target.h
Halide::get_device_interface_for_device_api
const halide_device_interface_t * get_device_interface_for_device_api(DeviceAPI d, const Target &t=get_jit_target_from_environment(), const char *error_site=nullptr)
Gets the appropriate halide_device_interface_t * for a DeviceAPI.
Halide
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Definition: AddAtomicMutex.h:21
Halide::LinkageType::Internal
@ Internal
Not visible externally, similar to 'static' linkage in C.
Halide::Internal::make_device_interface_call
Expr make_device_interface_call(DeviceAPI device_api)
Get an Expr which evaluates to the device interface for the given device api at runtime.
Halide::get_jit_target_from_environment
Target get_jit_target_from_environment()
Return the target that Halide will use for jit-compilation.
halide_device_interface_t
Each GPU API provides a halide_device_interface_t struct pointing to the code that manages device all...
Definition: HalideRuntime.h:721
Halide::DeviceAPI
DeviceAPI
An enum describing a type of device API.
Definition: DeviceAPI.h:15