我再空白项目里面,直接写的如下代码:
float * d_a;
size_t d_size=1000*sizeof(float);
cudaMalloc((viod**) &d_a,d_size);
通过cudaError_t测试,直接返回 错误代码2 out of memory
我的显存大小是256MB的,显卡是9300MGS,有点老。
程序运行前,监测显存大小为140MB
程序运行时,监测显存大小为163MB
此时运行bandWithTest.exe
得到如下的提示:code=2(cudaErrorMemoryAllocation) “cudaEventCreate(&start)”
请问这是什么情况?
看到有说,可能是之前失败的项目残留的数据还继续保留在显存上面,那么有没有什么函数,能清理掉这些垃圾信息呢
以前的进程如果结束后,资源将被自动释放的。
所以您直接分配4KB的显存应该毫无压力的。您的现象我不能给出直接答案。
建议您尝试重新安装显卡驱动,看看有无改善。
以及,如果可能,建议您使用GT430或者更高级别的显卡(大约需要100多元)。
感谢来访。
楼主您好,
如果您正确安装了显卡驱动,和cuda toolkit,
以及您是在贵程序开头分配的显存,
那么您分配~4KB的显存是毫无压力的。
无法为您解释为何您连4KB都分配不了。
建议自我检查环境。
目前感觉就是这段代码,可能申请成功,释放的时候不知道哪里遇到了问题。运行其他的代码,暂时良好。
LZ您好:
请您仔细检查您的环境/代码,并调试您的代码。
因为正常情况下,完全不可能连4KB的显存都无法申请到。(要知道接近20年以前的S3 765显卡都有1MB显存的)
祝您好运~
程序开始前调用 cudaDeviceReset() 试试。
不知道怎么回事,那段代码,一运行就有问题,其他的代码,目前还好。可能是我的kernel函数调用的问题。
system
10
LZ您好:
如果只是您1#贴出的那部分代码的话,那果断不应该出问题的,请您检查该段之前的代码,以分析问题所在。
祝您好运~
system
11
楼主还确定之前的代码没有分配光所有显存么?
说过多次了,您的这里的分配4KB显存的代码无问题,是个显卡都能完成的。
要不楼主换个显卡吧。
system
12
system
13
LZ您好:
您提供的链接的产品的规格中写到:核心代号:GK107
GK107核心是计算能力3.0的。
计算能力3.5的GT640是GK208核心的,请注意辨别。
祝您好运!