chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
from ..base import DGLError
|
||||
from libcpp.vector cimport vector
|
||||
from libcpp cimport bool
|
||||
from cpython.version cimport PY_MAJOR_VERSION
|
||||
from cpython cimport pycapsule
|
||||
from libc.stdint cimport int32_t, int64_t, uint64_t, uint8_t, uint16_t
|
||||
import ctypes
|
||||
|
||||
cdef enum DGLObjectTypeCode:
|
||||
kObjectInt = 0
|
||||
kObjectUInt = 1
|
||||
kObjectFloat = 2
|
||||
kHandle = 3
|
||||
kNull = 4
|
||||
kDGLDataType = 5
|
||||
kDGLContext = 6
|
||||
kArrayHandle = 7
|
||||
kObjectHandle = 8
|
||||
kModuleHandle = 9
|
||||
kFuncHandle = 10
|
||||
kStr = 11
|
||||
kBytes = 12
|
||||
kNDArrayContainer = 13
|
||||
kExtBegin = 15
|
||||
|
||||
cdef extern from "dgl/runtime/c_runtime_api.h":
|
||||
ctypedef struct DGLDataType:
|
||||
uint8_t code
|
||||
uint8_t bits
|
||||
uint16_t lanes
|
||||
|
||||
ctypedef struct DGLContext:
|
||||
int32_t device_type
|
||||
int32_t device_id
|
||||
|
||||
ctypedef struct DGLArray:
|
||||
void* data
|
||||
DGLContext ctx
|
||||
int32_t ndim
|
||||
DGLDataType dtype
|
||||
int64_t* shape
|
||||
int64_t* strides
|
||||
uint64_t byte_offset
|
||||
|
||||
ctypedef struct DLManagedTensor:
|
||||
DGLArray dl_tensor
|
||||
void* manager_ctx
|
||||
void (*deleter)(DLManagedTensor* self)
|
||||
|
||||
ctypedef struct DGLValue:
|
||||
int64_t v_int64
|
||||
double v_float64
|
||||
void* v_handle
|
||||
const char* v_str
|
||||
DGLDataType v_type
|
||||
DGLContext v_ctx
|
||||
|
||||
ctypedef int64_t dgl_index_t
|
||||
ctypedef DGLArray* DGLArrayHandle
|
||||
ctypedef void* DGLStreamHandle
|
||||
ctypedef void* DGLRetValueHandle
|
||||
ctypedef void* DGLFunctionHandle
|
||||
ctypedef void* ObjectHandle
|
||||
|
||||
ctypedef int (*DGLPackedCFunc)(
|
||||
DGLValue* args,
|
||||
int* type_codes,
|
||||
int num_args,
|
||||
DGLRetValueHandle ret,
|
||||
void* resource_handle)
|
||||
|
||||
ctypedef void (*DGLPackedCFuncFinalizer)(void* resource_handle)
|
||||
|
||||
cdef extern from "dgl/runtime/c_runtime_api.h":
|
||||
void DGLAPISetLastError(const char* msg)
|
||||
const char *DGLGetLastError()
|
||||
int DGLFuncCall(DGLFunctionHandle func,
|
||||
DGLValue* arg_values,
|
||||
int* type_codes,
|
||||
int num_args,
|
||||
DGLValue* ret_val,
|
||||
int* ret_type_code) nogil
|
||||
int DGLFuncFree(DGLFunctionHandle func)
|
||||
int DGLCFuncSetReturn(DGLRetValueHandle ret,
|
||||
DGLValue* value,
|
||||
int* type_code,
|
||||
int num_ret)
|
||||
int DGLFuncCreateFromCFunc(DGLPackedCFunc func,
|
||||
void* resource_handle,
|
||||
DGLPackedCFuncFinalizer fin,
|
||||
DGLFunctionHandle *out)
|
||||
int DGLCbArgToReturn(DGLValue* value, int code)
|
||||
int DGLArrayAlloc(dgl_index_t* shape,
|
||||
dgl_index_t ndim,
|
||||
DGLDataType dtype,
|
||||
DGLContext ctx,
|
||||
DGLArrayHandle* out)
|
||||
int DGLArrayAllocSharedMem(const char *mem_name,
|
||||
const dgl_index_t *shape,
|
||||
int ndim,
|
||||
int dtype_code,
|
||||
int dtype_bits,
|
||||
int dtype_lanes,
|
||||
bool is_create,
|
||||
DGLArrayHandle* out)
|
||||
int DGLArrayFree(DGLArrayHandle handle)
|
||||
int DGLArrayCopyFromTo(DGLArrayHandle src,
|
||||
DGLArrayHandle to)
|
||||
|
||||
cdef extern from "dgl/runtime/c_object_api.h":
|
||||
int DGLObjectFree(ObjectHandle handle)
|
||||
int DGLObjectTypeKey2Index(const char* type_key,
|
||||
int* out_index)
|
||||
int DGLObjectGetTypeIndex(ObjectHandle handle,
|
||||
int* out_index)
|
||||
int DGLObjectGetAttr(ObjectHandle handle,
|
||||
const char* key,
|
||||
DGLValue* out_value,
|
||||
int* out_type_code,
|
||||
int* out_success)
|
||||
|
||||
cdef extern from "dgl/runtime/dlpack_convert.h":
|
||||
int DGLArrayFromDLPack(DLManagedTensor* arr_from,
|
||||
DGLArrayHandle* out)
|
||||
int DGLArrayToDLPack(DGLArrayHandle arr_from,
|
||||
DLManagedTensor** out,
|
||||
int alignment)
|
||||
void DGLDLManagedTensorCallDeleter(DLManagedTensor* dltensor)
|
||||
|
||||
cdef inline py_str(const char* x):
|
||||
if PY_MAJOR_VERSION < 3:
|
||||
return x
|
||||
else:
|
||||
return x.decode("utf-8")
|
||||
|
||||
|
||||
cdef inline c_str(pystr):
|
||||
"""Create ctypes char * from a python string
|
||||
Parameters
|
||||
----------
|
||||
string : string type
|
||||
python string
|
||||
|
||||
Returns
|
||||
-------
|
||||
str : c_char_p
|
||||
A char pointer that can be passed to C API
|
||||
"""
|
||||
return pystr.encode("utf-8")
|
||||
|
||||
|
||||
cdef inline CALL(int ret):
|
||||
if ret != 0:
|
||||
raise DGLError(py_str(DGLGetLastError()))
|
||||
|
||||
|
||||
cdef inline object ctypes_handle(void* chandle):
|
||||
"""Cast C handle to ctypes handle."""
|
||||
return ctypes.cast(<unsigned long long>chandle, ctypes.c_void_p)
|
||||
|
||||
|
||||
cdef inline void* c_handle(object handle):
|
||||
"""Cast C types handle to c handle."""
|
||||
cdef unsigned long long v_ptr
|
||||
if handle.value is None:
|
||||
return NULL
|
||||
else:
|
||||
v_ptr = handle.value
|
||||
return <void*>(v_ptr)
|
||||
Reference in New Issue
Block a user