使用指针从GPU复制带有pyCuda的数组

时间:2016-03-05 14:59:35

标签: python gpu pycuda

我正在通过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

我做错了什么?

谢谢!

1 个答案:

答案 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()