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

 帝京 发布于 2023-02-12 16:25

对于设备信息参数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上.是否有一些我不理解的性能问题?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有