【问题标题】:Way to verify kernel was executed in CUDA验证内核的方法在 CUDA 中执行
【发布时间】:2011-09-19 04:01:18
【问题描述】:

当我使用错误设置的参数调用内核(例如,每个块超过 512 个线程)或者当它内部的操作需要的比我的设备提供的更多(例如,太多的寄存器)时,内核根本不会被执行。但是没有异常或返回值来指示发生了什么。

我想知道是否有办法验证内核是否已执行。

【问题讨论】:

    标签: cuda


    【解决方案1】:

    试试这个

    kernel<<<blocks, threads>>>(params);
    cudaError_t err = cudaGetLastError();
    if (err != cudaSuccess) 
        printf("Error: %s\n", cudaGetErrorString(err));
    

    这应该会为您提供有关问题所在的详细错误信息。

    编辑:以下是关于如何正确检查 CUDA 错误的更详细答案:

    【讨论】:

    • 谢谢这是我的问题!
    【解决方案2】:

    你也可以从内核打印一些东西。这可能对调试有用。

    【讨论】:

      猜你喜欢
      • 2013-08-08
      • 2015-09-28
      • 2015-01-27
      • 2021-05-15
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      相关资源
      最近更新 更多