CUDA编程 基础与实践 学习笔记(四)

本文介绍了CUDA编程中如何进行错误检测,包括runtime API错误检测和核函数错误检测。通过学习,理解了如何利用宏定义进行错误处理,并提到了cudaGetErrorString()函数将错误代码转换为文字。此外,文章强调了核函数异步性导致的检查策略,并推荐使用cuda-memcheck检查内存错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CUDA程序的错误检测
这个还蛮关键的,当时看deformable convolution的cuda代码就看到很多CHECK(…),一头雾水。现在学到了感觉还蛮开心的,老朋友了~
基本就和自己实现的一个try catch语句块一样。
书中给出的模板为:https://github.com/brucefan1983/CUDA-Programming/blob/master/src/04-error-check/error.cuh
注意这里的后缀名,是.cuh。
错误检测分为runtime API 错误检测和 核函数错误检测。
首先是runtime API错误检测。
在这里插入图片描述
宏的定义。等价于#ifndef …那一套,但这个更简洁。几个知识点:

  1. #pragma once确保该文件在同一个编译单元只会被编译一次。
  2. 定义宏时,如果一行写不下,记得要在后面加‘\’
  3. https://blog.youkuaiyun.com/gjggj/article/details/86531006 这里使用do while(0)的原因
  4. 这里有几个常用变量类型:cudaError_t 专门捕捉错误信息,call为runtime API的返回值,如果成功了就是cudaSuccess,否则就是异常错误代码。
  5. 在这里插入图片描述
    注意这里__FILE__和__LINE__都是宏,不用传参,用起来很方便。
  6. cudaGetErrorSt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值