我已经尝试了一段时间让cudaMalloc在NSight Eclipse中工作,但我无法让它在我自己的项目中工作。它适用于Cuda样本:' Vector Add'我下载,编译并运行正常但是当我将以下代码片段复制并粘贴到我的函数中时,同样的事情发生了:
int numElements = 32;
size_t size = numElements * sizeof(float);
float *d_A = NULL;
assert(cudaMalloc((void **)&d_A, size) == cudaSuccess);
在单步执行cudaMalloc行后,我收到以下错误:
*** glibc detected *** ... : free(): invalid next size (fast): 0x0000000000c43080 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7eb96)[0x7f8f99bccb96]
/usr/lib/nvidia-current/libcuda.so(+0x770a1c)[0x7f8f9965aa1c]
/usr/lib/nvidia-current/libcuda.so(+0x770b6f)[0x7f8f9965ab6f]
/usr/lib/nvidia-current/libcuda.so(+0x268b7e)[0x7f8f99152b7e]
/usr/lib/nvidia-current/libcuda.so(+0x1b1a10)[0x7f8f9909ba10]
/usr/lib/nvidia-current/libcuda.so(+0xe7efd)[0x7f8f98fd1efd]
/usr/lib/nvidia-current/libcuda.so(cuInit+0x43)[0x7f8f98faa7d3]
...
NSight Debugger也在抱怨:
无法在" ../ nptl / sysdeps / unix / sysv / linux / raise.c"中找到源文件。 找到文件或编辑源查找路径以包含其位置。
提前致谢。
答案 0 :(得分:2)
然而,当我将以下代码段复制并粘贴到我的函数
中时
*** glibc detected *** ... : free(): invalid next size
您展示的代码没有任何问题。问题出现在函数的其余中(在调用cudaMalloc
之前,您已经损坏了堆。)
在Valgrind下运行您的程序可能会直接指出错误。