PyCUDA内存寻址:内存偏移量?

| 我在设备上有大量生成的数据(A [i,j,k]),但我只需要A [i,:::]的一个\'slice \',在常规CUDA中,可以通过一些指针算法轻松完成。 pycuda可以做同样的事情吗?即
cuda.memcpy_dtoh(h_iA,d_A+(i*stride))
显然,这是完全错误的,因为没有尺寸信息(除非从目标形状推断出),但希望您能明白这一点?     
已邀请:
pyCUDA gpuArray类支持一维数组的切片,但不支持需要跨步的更高维度(尽管即将到来)。但是,您可以从gpuarray成员(即pycuda.driver.DeviceAllocation类型)访问多维gpuArray中的基础指针,并从gpuArray.dtype.itemsize成员获取大小信息。然后,您可以执行与脑子相同的指针算术运算,以获取驱动程序memcpy函数将接受的内容。 它不是很pythonic,但是它确实可以工作(或者至少去年我做了很多pyCUDA + MPI hacking的时候就可以了)。     
不太可能在PyCuda中实现。 我可以考虑以下解决方案: 复制整个数组A到内存中,然后从感兴趣的切片中创建一个numpy数组。 创建一个读取矩阵并创建所需切片的内核。 重新排列产生的数据,使您可以一次从指针算术中读取一个切片。     

要回复问题请先登录注册