Convert a NumPy array to a HeteroCL array of bitwidth larger than 64
Opened this issue · 1 comments
A_ = hcl.asarray(np.zeros((10,)), dtype=hcl.Int(128))
will result in:
TypeError: data type 'i16' not understood
numpy seems to support large integers:
>>> a = numpy.array([2**64 * 10])
>>> a
array([184467440737095516160], dtype=object)
>>> a.dtype
dtype('O')
Following are some pointers:
-
In this file, it shows how NumPy arrays interact with the HeteroCL/TVM arrays.
https://github.com/cornell-zhang/heterocl/blob/master/python/heterocl/tvm/_ffi/ndarray.py -
More specifically, this function loads NumPy arrays into HeteroCL/TVM.
heterocl/python/heterocl/tvm/_ffi/ndarray.py
Line 157 in 83a4c11
-
And this function loads HeteroCL/TVM array into NumPy arrays.
heterocl/python/heterocl/tvm/_ffi/ndarray.py
Line 225 in 83a4c11
-
This is where we handle the array data copy.
heterocl/tvm/src/runtime/c_runtime_api.cc
Line 415 in 83a4c11
So there'd be no problem if we just want to copy the NumPy data into HeteroCL (though we need to know the size to copy first, for sure). The problem is, how do we decode that at the LLVM level.