关于CUDA的两个特殊问题

hoolol 2010-03-01 12:45:53
项目需要,刚接触这玩意儿,问两个调试中出现的奇怪问题。环境是windowsXP+VS2005+CUDA开发包,单显卡

因为项目是开发过程,debug过程中使用断点之类的,难免在debug中断退出时,有一些开辟的内存并未释放。如果是VS开发CPU程序,我相信VS会在退出调试例程时回收内存。但对于CUDA设备端的调试,我想问该机制是否存在或者是否健壮。

遇到的奇怪现象是: 1)调试一段时间之后,PC常常会死机; 2)比如前一天调试时用clock()测得的运行时间是0.1s级别,但调试一晚上过后(并未关机),测得的运行时间是1s级别了。重启机器之后,又回到0.1s级别。

诸位高手有遇到类似情况的没?
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuda2010 2010-03-02
  • 打赏
  • 举报
回复
cuda进程退出时有自动回收机制,一般是没问题的(至少我没遇到过)。如不放心,可以调用driver API函数cuMemGetInfo()检查是否有内存泄漏。关于计时精度,我在使用cutilGetTimer()时遇到过类似的问题,程序长时间运行时精度会下降,后来查明是单精度引起的。clock()有没有问题倒没注意。
OpenGPU2010 2010-03-02
  • 打赏
  • 举报
回复
有时操作系统的问题……

:>


—————————————————————————————————————————————————————

OpenGPU论坛 http://www.opengpu.org/bbs

OpenGPU Graphics Open Source community(图形开源社区),聚焦领域(focus domain)包括:
* GPU Architecture(图形处理器体系结构)
* Graphics Algorithm(图形算法)
* GPGPU Programming (面向通用的图形处理器编程)
* Open Source Rendering Engine(开源渲染器)
* Open Source GPU Simulator/RTL Implement(开源GPU模拟器 )
hoolol 2010-03-01
  • 打赏
  • 举报
回复
引用 1 楼 l7331014 的回复:
1)emu模式实际是cpu模拟,没有回收问题.
2)debug模式,gpu上的内存不回收吧.但现象应该是分配失败,而不是速度的问题吧.
3)估计是windows的问题,就像win长时间后,线程切换速度会下降的问题一样.


可能是我没表达清楚

(1) 以上所说的都是debug模式,不是emu模式
(2) 比如这段程序:
cudaMalloc((void **)&a, ...);

func<<<>>>(a);

//断点加在这里

cudaFree(a);

调试的时候,常常会在断点处退出vs的调试实例,没有跑完cudaFree()函数。如果是CPU开发的话,vs有内存会收机制的。但因为cuda调用是典型的RPC,我的问题是设备端的a内存会被释放吗,是否识别调试实例和工作实例?




  • 打赏
  • 举报
回复
1)emu模式实际是cpu模拟,没有回收问题.
2)debug模式,gpu上的内存不回收吧.但现象应该是分配失败,而不是速度的问题吧.
3)估计是windows的问题,就像win长时间后,线程切换速度会下降的问题一样.

580

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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