找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 65|回复: 2

cudaMallocHost分配的page-locked memory有容量限制吗

[复制链接]
发表于 2018-7-7 07:42:28 | 显示全部楼层 |阅读模式
ESC4000G3
在asyncAPI的CUDA samples里面,我在asyncAPI.cu里修改int n = 16*1024*1024; int nbytes = n*sizeof(int);中n的大小,当n修改成400*1024*1024时,程序可以正常运行,如果修改成1000*1024*1024,编译可以通过,但是执行时在cudaMallocHost函数就会报错。我的系统是ubuntu16.04,显卡Nvidia gtx 1080ti,内存大小有4G,为什么可以分配page-lock memory这么小呢
回复

使用道具 举报

发表于 2018-7-7 22:01:47 | 显示全部楼层
Jetson TX2
你好,

(1)你的代码存在BUG:
int nbytes = n * sizeof(int); 当n较大的时候, 应当写成:
size_t nbytes = n * sizeof(int);

(2)能否成功进行cudaMallocHost()或者cudaHostAlloc()或者cudaHostRegister()需要看你当前的可用物理内存的剩余容量(非可分页内存,也就是不包含你的交换分区)。物理内存是一个稀缺资源,请不要分配过大的不可分页内存(page-locked memory),分配过大的不可分页内存将会影响系统整体性能。

(3)你的卡支持unified memory, 特别你是在Linux 64-bit的系统下的时候。建议使用这个,而不是老式的zero-copy memory. 很多时候前者具有更好性能。

(4)在Maxwell时代(~2015年)即使一台64-bit系统的机器,具有很大的内容容量(例如插入了64GB的条子),依然一次只能分配最多约4GB的zero-copy内存的,目前尚不清楚这个限制来自于那里,也不清楚现在或者将来是否会改变这个限制(手册没有说有这个限制)。

大致这四点。周末愉快。
屠戮人神
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-9 21:02:34 | 显示全部楼层
Tesla P100
屠戮人神 发表于 2018-7-7 22:01
你好,

(1)你的代码存在BUG:

多谢大神的回复,您的回答完美的解决了我的问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表