代码之家  ›  专栏  ›  技术社区  ›  ZappaZ

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

  •  0
  • ZappaZ  · 技术社区  · 9 年前

    我正在通过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 回复  |  直到 9 年前
        1
  •  1
  •   inJeans    9 年前

    我想如果你使用 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()