【问题标题】:cudaMallocManaged() issues on Nvidia p100Nvidia p100 上的 cudaMallocManaged() 问题
【发布时间】:2019-03-06 17:29:55
【问题描述】:

我正在尝试在 Nvidia P100 上编译和运行以下代码。我正在运行 CentOS 6.9、驱动程序版本 396.37 和 CUDA-9.2。 appears 这些驱动程序/cuda 版本是兼容的。

#include <stdio.h>
#include <cuda_runtime_api.h>
int main(int argc, char *argv[])
{
    // Declare variables
    int * dimA = NULL; //{2,3};
    cudaMallocManaged(&dimA, 2 * sizeof(float));
    dimA[0] = 2;
    dimA[1] = 3;
    cudaDeviceSynchronize();
    printf("The End\n");

    return 0;
}

它因分段错误而失败。当我用nvcc -g -G src/get_p100_to_work.cu 编译并运行核心文件(cuda-gdb ./a.out core.277512)时,我得到了

Reading symbols from ./a.out...done.
[New LWP 277512]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./a.out'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000000000040317d in main (argc=1, argv=0x7fff585da548) at src/get_p100_to_work.cu:71
71      dimA[0] = 2;
(cuda-gdb) bt full
#0  0x000000000040317d in main (argc=1, argv=0x7fff585da548) at src/get_p100_to_work.cu:71
        dimA = 0x0
(cuda-gdb)

当我在 NVidia K40 上运行此代码时,代码运行没有错误。

问题

如何让我的代码在 P100 上运行?从this tutorial看来,这段代码应该可以运行。

【问题讨论】:

  • 该代码适用于我在 Ubuntu 机器上使用相同的驱动程序和 CUDA 工具包版本。你能在 P100 上成功运行任何东西吗?
  • 我可以运行 devblogs.nvidia.com/easy-introduction-cuda-c-and-c 。在 P100 上,Max error: 2.000000。在 K40 上,Max error: 0.000000
  • 也就是说,你的CUDA安装坏了或者你的卡坏了。我在这里没有看到任何编程问题,您可能想尝试在其他地方提问
  • 任何时候您在使用 CUDA 代码时遇到问题,最好的做法是进行正确的 CUDA 错误检查。我通常会在向他人寻求帮助之前建议这样做。在这种情况下,错误检查可能表明 CUDA 安装有问题。
  • 托管内存使用中的段错误经常发生,因为 cudaMallocManaged 调用失败并返回错误。如果您不进行任何错误检查而只是继续写入您希望分配的区域,您通常会遇到段错误。准确诊断您的情况是不可能的,但我不会去掉错误检查。如果gpuAssert() 语句中的错误检查失败,这很好地表明存在根本问题。将这些信息排除在您的问题之外并不能帮助任何人诊断问题。

标签: cuda unified-memory


【解决方案1】:

以前,我克隆了一个带有 2 个 K40 的 GPU 节点的图像。然后我将该图像放在一个包含 2 - P100 的节点上。我怀疑在K40节点上安装驱动时,机器上的显卡有特定的配置(这是有道理的)。此配置与 P100 不兼容。由于 P100 机器上的驱动程序基本上已损坏,这可以解释为什么我的代码如此灾难性地失败了。

解决方案:我最终不得不重新安装驱动程序,现在它可以工作了。

【讨论】:

    猜你喜欢
    • 2019-11-13
    • 2018-12-06
    • 2019-02-15
    • 2020-12-10
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2018-06-29
    • 2013-06-02
    相关资源
    最近更新 更多