繁体   English   中英

在numpy中获取页面对齐的内存

[英]Getting page aligned memory in numpy

有没有办法在页面边界上分配numpy array的数据部分(即数据)?

为什么我关心,如果我在Intel设备上使用PyOpenCL,并且我想使用CL_MEM_USE_HOST_PTR创建一个缓冲区, 他们建议数据是1)页面对齐的,2)大小是缓存行的倍数。

在C中有多种分配页面对齐内存的方法,例如参见: GCC中的aligned malloc()?

我不知道Numpy此时有任何明确的调用记忆的调用。 除了@Saulio Castro建议的Cython之外,我能想到的唯一方法是使用numpy分配或PyOpenCL API,通过“填充”来明智地分配内存。

您需要创建一个缓冲区“填充”以对齐64K字节的倍数。 您还需要“填充”在数组中分配的各个数据结构元素,这样它们也可以与4k字节边界对齐。 这当然取决于你的元素是什么样的,它们是用numpy数据类型构建的,还是用numpy dtype创建的结构。 dtype的API有一个“align”关键字,但根据此链接的讨论,我会对此保持警惕。

对齐结构的旧学校技巧是从最大的元素开始,向下工作,然后用足够的uint8“填充”,这样一个或N个结构填充对齐边界。

希望不要太模糊......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM