41 #ifndef TVM_RUNTIME_C_RUNTIME_API_H_
42 #define TVM_RUNTIME_C_RUNTIME_API_H_
46 #define TVM_WEAK __declspec(selectany)
48 #define TVM_WEAK __attribute__((weak))
52 #include <emscripten/emscripten.h>
53 #define TVM_DLL EMSCRIPTEN_KEEPALIVE
58 #define TVM_ATTRIBUTE_UNUSED __attribute__((unused))
60 #define TVM_ATTRIBUTE_UNUSED
66 #define TVM_DLL __declspec(dllexport)
68 #define TVM_DLL __declspec(dllimport)
71 #define TVM_DLL __attribute__((visibility("default")))
76 #define TVM_VERSION "0.20.dev0"
79 #include <dlpack/dlpack.h>
115 typedef enum : int32_t {
130 #define TVM_HARCODED_INTEGER_CHANGED_MSG \
131 "Change in compile-time integer. Make sure hardcoded uses of this integer throughout TVM are " \
133 static_assert(kDLCPU == 1, TVM_HARCODED_INTEGER_CHANGED_MSG);
134 static_assert(kDLCUDA == 2, TVM_HARCODED_INTEGER_CHANGED_MSG);
135 static_assert(kDLCUDAHost == 3, TVM_HARCODED_INTEGER_CHANGED_MSG);
136 static_assert(kDLOpenCL == 4, TVM_HARCODED_INTEGER_CHANGED_MSG);
137 static_assert(kDLVulkan == 7, TVM_HARCODED_INTEGER_CHANGED_MSG);
138 static_assert(kDLMetal == 8, TVM_HARCODED_INTEGER_CHANGED_MSG);
139 static_assert(kDLVPI == 9, TVM_HARCODED_INTEGER_CHANGED_MSG);
140 static_assert(kDLROCM == 10, TVM_HARCODED_INTEGER_CHANGED_MSG);
141 static_assert(kDLROCMHost == 11, TVM_HARCODED_INTEGER_CHANGED_MSG);
142 static_assert(kDLExtDev == 12, TVM_HARCODED_INTEGER_CHANGED_MSG);
143 static_assert(kDLCUDAManaged == 13, TVM_HARCODED_INTEGER_CHANGED_MSG);
144 static_assert(kDLOneAPI == 14, TVM_HARCODED_INTEGER_CHANGED_MSG);
145 static_assert(kDLWebGPU == 15, TVM_HARCODED_INTEGER_CHANGED_MSG);
146 static_assert(kDLHexagon == 16, TVM_HARCODED_INTEGER_CHANGED_MSG);
148 #undef TVM_HARCODED_INTEGER_CHANGED_MSG
380 TVMValue* ret_val,
int* ret_type_code);
419 void* resource_handle);
681 DLDataType type_hint,
void** out_data);
697 DLDataType dtype,
const char* mem_scope,
int TVMArrayAlloc(const tvm_index_t *shape, int ndim, int dtype_code, int dtype_bits, int dtype_lanes, int device_type, int device_id, TVMArrayHandle *out)
Allocate a nd-array's memory, including space of shape, of given spec.
int TVMDeviceFreeDataSpace(DLDevice dev, void *ptr)
Free a data space on device.
int TVMDeviceAllocDataSpace(DLDevice dev, size_t nbytes, size_t alignment, DLDataType type_hint, void **out_data)
Allocate a data space on device.
int(* TVMPackedCFunc)(TVMValue *args, int *type_codes, int num_args, TVMRetValueHandle ret, void *resource_handle)
C type of packed function.
Definition: c_runtime_api.h:418
int TVMArrayCopyFromTo(TVMArrayHandle from, TVMArrayHandle to, TVMStreamHandle stream)
Copy the array, both from and to must be valid during the copy.
TVMArgTypeCode
The type code in used and only used in TVM FFI for argument passing.
Definition: c_runtime_api.h:167
@ kTVMExtReserveEnd
Definition: c_runtime_api.h:191
@ kTVMExtBegin
Definition: c_runtime_api.h:187
@ kTVMPackedFuncHandle
Definition: c_runtime_api.h:177
@ kTVMNNVMLast
Definition: c_runtime_api.h:189
@ kTVMNDArrayHandle
Definition: c_runtime_api.h:180
@ kTVMModuleHandle
Definition: c_runtime_api.h:176
@ kTVMExtEnd
Definition: c_runtime_api.h:192
@ kTVMBytes
Definition: c_runtime_api.h:179
@ kTVMNNVMFirst
Definition: c_runtime_api.h:188
@ kTVMDataType
Definition: c_runtime_api.h:172
@ kTVMArgBool
Definition: c_runtime_api.h:182
@ kTVMArgInt
Definition: c_runtime_api.h:168
@ kTVMDLTensorHandle
Definition: c_runtime_api.h:174
@ kDLDevice
Definition: c_runtime_api.h:173
@ kTVMOpaqueHandle
Definition: c_runtime_api.h:170
@ kTVMObjectHandle
Definition: c_runtime_api.h:175
@ kTVMObjectRValueRefArg
Definition: c_runtime_api.h:181
@ kTVMNullptr
Definition: c_runtime_api.h:171
@ kTVMArgFloat
Definition: c_runtime_api.h:169
@ kTVMStr
Definition: c_runtime_api.h:178
int TVMObjectDerivedFrom(uint32_t child_type_index, uint32_t parent_type_index, int *is_derived)
Check that an object is derived from another.
const char * TVMGetLastBacktrace()
Return the backtrace of the most recent error.
int TVMSynchronize(int device_type, int device_id, TVMStreamHandle stream)
Wait until all computations on stream completes.
int TVMFuncListGlobalNames(int *out_size, const char ***out_array)
List all the globally registered function name.
int(* TVMExtensionFuncDeclarer)(TVMFunctionHandle register_func_handle)
Signature for extension function declarer.
Definition: c_runtime_api.h:436
void TVMAPISetLastError(const char *msg)
Used for implementing C API function. Set last error message before return.
int TVMModLoadFromFile(const char *file_name, const char *format, TVMModuleHandle *out)
Load module from file.
int TVMArrayCopyFromBytes(TVMArrayHandle handle, void *data, size_t nbytes)
Copy array data from CPU byte array.
int TVMDeviceAllocDataSpaceWithScope(DLDevice dev, int ndim, const int64_t *shape, DLDataType dtype, const char *mem_scope, void **out_data)
Allocate a data space on device with special memory scope.
TVMDeviceExtType
Extension device types in TVM.
Definition: c_runtime_api.h:117
@ TVMDeviceExtType_End
Definition: c_runtime_api.h:122
int TVMArrayFree(TVMArrayHandle handle)
Free the TVM Array.
int TVMModGetFunction(TVMModuleHandle mod, const char *func_name, int query_imports, TVMFunctionHandle *out)
Get function from the module.
void TVMAPISetLastPythonError(void *py_object)
Used for implementing C API function. Set last exception before return.
void TVMDLManagedTensorCallDeleter(DLManagedTensor *dltensor)
Delete (free) a DLManagedTensor's data.
int TVMObjectFree(TVMObjectHandle obj)
Free the object.
void * TVMRetValueHandle
Handle to hold return value.
Definition: c_runtime_api.h:225
int TVMCbArgToReturn(TVMValue *value, int *code)
Inplace translate callback argument value to return value. This is only needed for non-POD arguments.
int TVMStreamCreate(int device_type, int device_id, TVMStreamHandle *out)
Create a new runtime stream.
DLTensor * TVMArrayHandle
the array handle
Definition: c_runtime_api.h:196
const char * TVMGetLastError(void)
return str message of the last error all function in this file will return 0 when success and nonzero...
int TVMObjectTypeKey2Index(const char *type_key, unsigned *out_tindex)
Convert type key to type index.
int TVMFuncCall(TVMFunctionHandle func, TVMValue *arg_values, int *type_codes, int num_args, TVMValue *ret_val, int *ret_type_code)
Call a Packed TVM Function.
int TVMFuncRegisterGlobal(const char *name, TVMFunctionHandle f, int override)
Register the function to runtime's global table.
int TVMStreamFree(int device_type, int device_id, TVMStreamHandle stream)
Free a created stream handle.
int TVMDeviceCopyDataFromTo(DLTensor *from, DLTensor *to, TVMStreamHandle stream)
Copy data from one place to another.
int TVMStreamStreamSynchronize(int device_type, int device_id, TVMStreamHandle src, TVMStreamHandle dst)
Synchronize two streams of execution.
int TVMByteArrayFree(TVMByteArray *arr)
Free a TVMByteArray returned from TVMFuncCall, and associated memory.
int TVMModImport(TVMModuleHandle mod, TVMModuleHandle dep)
Add dep to mod's dependency. This allows functions in this module to use modules.
void * TVMStreamHandle
The stream that is specific to device can be NULL, which indicates the default one.
Definition: c_runtime_api.h:230
void * TVMGetLastPythonError()
Return the previous python error, if any.
void TVMDropLastPythonError()
Remove the propagated python error, if any.
int TVMFuncRemoveGlobal(const char *name)
Remove a global function.
int TVMObjectGetTypeIndex(TVMObjectHandle obj, unsigned *out_tindex)
Get the type_index from an object.
void(* TVMPackedCFuncFinalizer)(void *resource_handle)
C callback to free the resource handle in C packed function.
Definition: c_runtime_api.h:425
int TVMModFree(TVMModuleHandle mod)
Free the Module.
int TVMSetStream(int device_type, int device_id, TVMStreamHandle handle)
Set the runtime stream of current thread to be stream. The subsequent calls to the same device_type w...
void * TVMModuleHandle
Handle to TVM runtime modules.
Definition: c_runtime_api.h:221
void TVMThrowLastError()
Re-throw the most recent error.
int64_t tvm_index_t
type of array index.
Definition: c_runtime_api.h:89
void * TVMFunctionHandle
Handle to packed function handle.
Definition: c_runtime_api.h:223
int TVMCFuncSetReturn(TVMRetValueHandle ret, TVMValue *value, int *type_code, int num_ret)
Set the return value of TVMPackedCFunc.
int TVMFuncGetGlobal(const char *name, TVMFunctionHandle *out)
Get a global function.
int TVMArrayFromDLPack(DLManagedTensor *from, TVMArrayHandle *out)
Produce an array from the DLManagedTensor that shares data memory with the DLManagedTensor.
int TVMFuncCreateFromCFunc(TVMPackedCFunc func, void *resource_handle, TVMPackedCFuncFinalizer fin, TVMFunctionHandle *out)
Wrap a TVMPackedCFunc to become a FunctionHandle.
int TVMArrayCopyToBytes(TVMArrayHandle handle, void *data, size_t nbytes)
Copy array data to CPU byte array.
int TVMArrayToDLPack(TVMArrayHandle from, DLManagedTensor **out)
Produce a DLMangedTensor from the array that shares data memory with the array.
int TVMObjectTypeIndex2Key(unsigned tindex, char **out_type_key)
Convert type index to type key.
int TVMObjectRetain(TVMObjectHandle obj)
Increase the reference count of an object.
int TVMFuncFree(TVMFunctionHandle func)
Free the function when it is no longer needed.
void * TVMObjectHandle
Handle to Object.
Definition: c_runtime_api.h:232
constexpr const char * device_id
The allocation device for global malloc in host.
Definition: stmt.h:1420
constexpr const char * device_type
The device type.
Definition: stmt.h:1422
const Op & ret()
Return value.
tvm::PrimExpr mod(const tvm::PrimExpr &a, const tvm::PrimExpr &b)
Definition: broadcast.h:290
Tensor shape(const Tensor &src, DataType dtype, const std::string name="T_shape", const std::string tag=kInjective)
Get the shape of input tensor.
Definition: transform.h:1913
Byte array type used to pass in byte array When kTVMBytes is used as data type.
Definition: c_runtime_api.h:215
size_t size
Definition: c_runtime_api.h:217
const char * data
Definition: c_runtime_api.h:216
Union type of values being passed through API and function calls.
Definition: c_runtime_api.h:202
DLDevice v_device
Definition: c_runtime_api.h:208
void * v_handle
Definition: c_runtime_api.h:205
DLDataType v_type
Definition: c_runtime_api.h:207
int64_t v_int64
Definition: c_runtime_api.h:203
const char * v_str
Definition: c_runtime_api.h:206
double v_float64
Definition: c_runtime_api.h:204