tqchen commented on a change in pull request #7488:
URL: https://github.com/apache/tvm/pull/7488#discussion_r583158464
##########
File path: python/tvm/runtime/ndarray.py
##########
@@ -253,42 +254,35 @@ def numpyasarray(np_data):
return arr, shape
-def empty(shape, dtype="float32", ctx=context(1, 0)):
+def empty(shape, dtype="float32", ctx=context(1, 0), mem_scope=None):
"""Create an empty array given shape and device
Parameters
----------
shape : tuple of int
- The shape of the array
+ The shape of the array.
dtype : type or str
The data type of the array.
ctx : TVMContext
- The context of the array
+ The context of the array.
+
+ mem_scope : str
+ The memory scope of the array.
Returns
-------
arr : tvm.nd.NDArray
The array tvm supported.
"""
- shape = c_array(tvm_shape_index_t, shape)
- ndim = ctypes.c_int(len(shape))
- handle = TVMArrayHandle()
+ arr = np.array(shape, 'int64')
+ ptr = arr.ctypes.data_as(ctypes.POINTER(ctypes.c_int64))
+ shape_ptr = ctypes.cast(ptr, ctypes.c_void_p)
+ ndim = len(shape)
dtype = DataType(dtype)
- check_call(
- _LIB.TVMArrayAlloc(
- shape,
- ndim,
- ctypes.c_int(dtype.type_code),
- ctypes.c_int(dtype.bits),
- ctypes.c_int(dtype.lanes),
- ctx.device_type,
- ctx.device_id,
- ctypes.byref(handle),
- )
- )
- return _make_array(handle, False, False)
+ arr = _ffi_api.TVMArrayAllocWithScope(shape_ptr, ndim, dtype, ctx,
mem_scope)
Review comment:
We felt that a C API change is a bigger one that would need more
thoughts(e.g. delete the API or upgrade). using a FFI function defers that to a
future point without breaking backward compact
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]