四次元口袋 2019-07-25 11:04 采纳率: 0%
浏览 453

使用 CUDA 运行时 API 检查错误的规范方法是什么?

通过查看 CUDA 问题的答案和评论,以及在 CUDA 标记维基中,我看到经常有人建议检查每个 API 调用的返回状态是否有错误。 API 文档包含了诸如 cuda / etlasterror、 cuda / ekatlasterror 和 cudaigerstring 这样的功能,但是如何才能在不需要大量额外代码的情况下将这些功能组合在一起以可靠地捕获和报告错误呢?

  • 写回答

3条回答 默认 最新

  • weixin_38166374 2019-07-25 11:13
    关注

    我用下面的方法很管用。 该解决方案使用内置的 cuda 功能,实现起来非常简单。
    有关代码如下:

    #include <stdio.h>#include <stdlib.h>
    __global__ void foo(int *ptr){
      *ptr = 7;}
    int main(void){
      foo<<<1,1>>>(0);
      // make the host block until the device is finished with foo
      cudaDeviceSynchronize();
      // check for error
      cudaError_t error = cudaGetLastError();
      if(error != cudaSuccess)
      {
        // print the CUDA error message and exit
        printf("CUDA error: %s\n", cudaGetErrorString(error));
        exit(-1);
      }
      return 0;}
    
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大