大家好,我写了一个cuda程序,kernel中我给每个线程分配了一个数组,所以程序中用的到local memory有大约20MB,用到的globalmemory为12780B,用到的constant memory为12780B,其他就是很多的寄存器。我的显卡是9800GT,显存是1G的。
程序能够执行结束,但是问题是:如果连续运行几次(每次都是在上一次运行完后即返回控制台后,在手动运行的)后,屏幕上就会出现很多“雪花”,很模糊,屏幕上的字都看不清。重启计算机后又好了。
开始我以为是我的程序没有完全释放分配的内存空间,但仔细检查后发现,动态分配的内存在程序结尾都释放过了(除了静态分配的constant memory 和local memory,看手册上说这些内存不用显示的释放,对吗?),而且我还加上了cudaThreadExit()函数。按说应该在程序结束时,程序用的内存资源都释放了吧,那怎么屏幕会出现“雪花”,而且重启后“雪花”就没了。
还有没有其他原因会造成屏幕出现“雪花”?很急,请大家帮忙看看到底是什么原因。