【发布时间】:2014-07-02 20:06:26
【问题描述】:
我一直在尝试让 cudaMalloc 在 NSight Eclipse 中工作,但我无法让它在我自己的项目中工作。它适用于我下载、编译并运行良好的 Cuda Sample: 'Vector Add' 但是当我将以下 sn-p 复制并粘贴到我的函数中时,同样的事情会发生:
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 调试器也抱怨:
在“../nptl/sysdeps/unix/sysv/linux/raise.c”中找不到源文件 找到文件或编辑源查找路径以包含其位置。
提前致谢。
【问题讨论】:
-
请使用 cuda-memcheck 查找错误。调试器消息“../nptl/sysdeps/unix/sysv/linux/raise.c”在那里,因为您在源不存在的系统对象中遇到异常。如果您提供完整的代码,那么可以提供更多帮助。它很可能是您损坏了一些内存。请记住在您的代码中使用 cudaFree 和 cudaDeviceReset。 *