小编And*_*ner的帖子

OpenCL中最大内存分配大小只有可用主内存的四分之一 - 为什么?

对于设备信息参数CL_DEVICE_MAX_MEM_ALLOC_SIZE,OpenCL标准(2.0,在早期版本中类似)有这样的说法:

内存对象分配的最大大小,以字节为单位 对于非CL_DEVICE_TYPE_CUSTOM类型的设备,最小值为max(min(1024*1024*1024,CL_DEVICE_GLOBAL_MEM_SIZE的1/4),128*1024*1024).

事实证明,AMD和英特尔CPU OpenCL实现只能提供四分之一的可用内存(我的机器上大约2 GiB,其中8 GiB,同样在其他机器上)可以同时分配.我没有看到这方面的良好技术理由.我知道AMD GPU有类似的限制,由GPU_MAX_ALLOC_PERCENT环境变量控制,但即使在那里,我也不太清楚只需提供所有内存进行分配就有困难.

总结一下:限制一次分配的内存量的技术原因是什么?毕竟,我可以把malloc()所有的内存都集中在CPU上.是否有一些我不理解的性能问题?

opencl

5
推荐指数
1
解决办法
2767
查看次数

标签 统计

opencl ×1