【问题标题】:cudaMalloc fails with error: ** glibc detected **cudaMalloc 失败并出现错误:** 检测到 glibc **
【发布时间】: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。 *

标签: cuda glibc


【解决方案1】:

但是,当我只是将以下 sn-p 复制并粘贴到我的函数中时

*** glibc detected *** ... : free(): invalid next size

您显示的代码没有任何问题。问题出在您函数的其余部分中(在调用cudaMalloc 之前,您的堆已损坏)。

Valgrind 下运行您的程序可能会直接指出错误。

【讨论】:

    猜你喜欢
    • 2017-06-06
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2018-02-24
    • 2012-09-24
    相关资源
    最近更新 更多