我正在通过pycuda复制GPU上的一些数组,然后将指针存储到这些数组中。如何恢复数据?
dist = np.zeros(numPoints).astype(np.float32)
distAddress = [gpuarray.to_gpu(dist).ptr for i in range(100)]
如果我调用memcpy_dtoh函数:
buf = np.zeros(400).astype(np.float32)
cuda.memcpy_dtoh(buf,distAddress[0])
,(其中type(distAddress[0])
是long
)我收到以下错误:
cuda.memcpy_dtoh(buf, distAddress[0])
LogicError: cuMemcpyDtoH failed: invalid argument
我做错了什么?
谢谢!
答案 0 :(得分:1)
我认为如果您使用GPUArrays
,则使用.get()
方法从设备复制到主机的方式。例如
dist = np.zeros(num_points).astype(np.float32)
dist_list = [gpuarray.to_gpu(dist) for i in range(100)]
buf = dist_list[0].get()