Ale*_*erg 5 numpy memory-alignment opencl pyopencl
array有没有办法在页边界上分配 numpy 的数据部分(即数据) ?
出于我关心的原因,如果我在 Intel 设备上使用 PyOpenCL,并且我想使用 创建缓冲区CL_MEM_USE_HOST_PTR,他们建议数据 1) 页面对齐,2) 大小为缓存行的倍数。
C 中有多种分配页对齐内存的方法,例如:aligned malloc() in GCC?
我不知道 Numpy 此时有任何显式调用来对齐内存。除了@Saulio Castro 建议的 Cython 之外,我能想到的唯一方法是通过明智的内存分配,使用“填充”,使用 numpy 分配或 PyOpenCL API。
您需要创建一个“填充”缓冲区以对齐 64K 字节的倍数。您还需要“填充”在数组中分配的各个数据结构元素,以便它们也依次与 4k 字节边界对齐。这当然取决于您的元素的外观,它们是使用 numpy 数据类型构建的,还是使用 numpy 数据类型创建的结构。dtype 的 API 有一个“align”关键字,但根据此链接的讨论,我对此持谨慎态度。
对齐结构的一个老派技巧是从最大的元素开始,一直向下,然后用足够的 uint8“填充”,以便一个或 N 个结构填充对齐边界。
希望这不是太模糊...
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |