一个令人费解的问题!急啊

luck4917 2015-01-07 04:21:08
运用CUDA函数开空间和拷贝大数据(大概100M)函数时,发现CPU内存空间少了几十M(兆)
CUDA_SAFE_CALL( cudaMalloc((void**)&d_PixelListData, sizeof(short) * TotalNum));
CUDA_SAFE_CALL( cudaMemcpy( (void*)d_PixelListData, h_PData, sizeof(short) * TotalNum,cudaMemcpyHostToDevice) );
感觉就是GPU里面执行程序时,使用了CPU里的缓存?<>
申明变量 short* h_PData(CPU的变量)
short* d_PixelListData;
而且释放函数CUDA_SAFE_CALL( cudaFree((void*)d_PixelListData)); d_PixelListData = NULL; 时CPU资源也没增加。

哪位高手碰到过类似问题,望不吝赐教!感谢
...全文
332 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
linxxx3 2015-01-13
  • 打赏
  • 举报
回复
引用 2 楼 luck4917 的回复:
因为这个操作需要多次执行, 所以经不起折腾啊,这是正常现象吗,有解否?
那你先实验,看看是不是多次执行copy之后,内存会不断减少,比如重复malloc、copy、、free这一套1000次,按你的说法,内存会减少几十个G。 拷贝数据需要在内存开缓冲区是一种可能的原因,不过内存不会持续消耗。 不知你是不是用windows系统,它倾向于在内存足够的时候,推迟回收已经释放的内存,优化程序的执行速度,linux会好一点; 另外一个可能与问题无关的点要提一下,读取文件也会占用缓存。
luck4917 2015-01-12
  • 打赏
  • 举报
回复
因为这个操作需要多次执行, 所以经不起折腾啊,这是正常现象吗,有解否?
linxxx3 2015-01-09
  • 打赏
  • 举报
回复
建议别把时间浪费在业务无关的事情上,只要内存没有持续减少(也就是内存泄露),不用去关注。 做CUDA计算的机器,少说10G以上的内存是肯定有的。

353

社区成员

发帖
与我相关
我的任务
社区描述
CUDA高性能计算讨论
社区管理员
  • CUDA高性能计算讨论社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧