首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyCUDA内存寻址:内存偏移?

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

Stack Overflow用户
提问于 2011-04-20 01:38:18
回答 2查看 549关注 0票数 1

我在设备上有一大块生成的数据(Ai,j,k),但我只需要一个Ai,:,:的‘切片’,在常规的CUDA中,这可以通过一些指针算法轻松完成。

在pycuda中可以做同样的事情吗?i.e

代码语言:javascript
复制
cuda.memcpy_dtoh(h_iA,d_A+(i*stride))

显然,这是完全错误的,因为没有大小信息(除非从dest形状推断),但希望您能理解?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-20 03:57:23

pyCUDA gpuArray类支持一维数组的切片,但不支持需要步幅的更高维度(尽管它即将到来)。但是,您可以从pycuda.driver.DeviceAllocation类型的gpuArray成员访问多维gpuarray中的底层指针,并从gpuArray.dtype.itemsize成员获取大小信息。然后,你可以做同样类型的指针运算,以获得驱动程序memcpy函数可以接受的值。

它不是很有效,但它确实可以工作(至少在去年我做了大量的pyCUDA + MPI黑客攻击时是这样的)。

票数 2
EN

Stack Overflow用户

发布于 2011-04-20 02:53:51

这不太可能在PyCuda中实现。

我可以想到以下解决方案:

  1. 将整个数组复制到内存中,并从感兴趣的切片中创建一个numpy数组。
  2. 创建一个读取矩阵的内核,并以一次可以从指针算法读取一个切片的方式创建所需的slice.
  3. Rearrange生成的数据。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5720376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档