cuda编程out of memory

我再空白项目里面,直接写的如下代码:

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函数调用的问题。

LZ您好:

如果只是您1#贴出的那部分代码的话,那果断不应该出问题的,请您检查该段之前的代码,以分析问题所在。

祝您好运~

楼主还确定之前的代码没有分配光所有显存么?

说过多次了,您的这里的分配4KB显存的代码无问题,是个显卡都能完成的。

要不楼主换个显卡吧。:frowning:

恩 最近正有这个打算 【华硕GT640-FMLII-2GD3参数】ASUS GT640-FMLII-2GD3显卡参数_规格_性能_功能-ZOL中关村在线 这款显卡 真的支持3.5的计算能力吗? 看有个帖子说的

LZ您好:

您提供的链接的产品的规格中写到:核心代号:GK107

GK107核心是计算能力3.0的。

计算能力3.5的GT640是GK208核心的,请注意辨别。

祝您好运!