cuda - 如何在 CUDA 设备代码中使用 Try-Catch 之类的东西
问题描述
有没有办法在设备代码中执行语句而不引发 CUDA 错误?如下所示:
__global__ void myKernel(float* X1, float* X2, float* Y){
try{
Y[0] = X1[0] / X2[0];
}catch(){
Y[0] = 0.0f;
}
}
我知道我们可以在除法之前检查 X2[0] 的值,但是如果我想在不检查有效输入的情况下执行语句并安全地执行呢?
解决方案
目前,CUDA 设备代码不支持异常处理。
try
/catch
不能在 CUDA 设备代码中使用。
如果语句会导致设备端错误(例如,越界访问),则无法在设备代码中执行该语句而不触发设备端错误。
为了避免错误,您需要修改语句,或者有条件地不执行它,以避免触发设备端错误。
推荐阅读
- javascript - 如何使用 Angular 6 中的组件交互使用事件将文本替换为文本框
- javascript - 如何为特定目的正确使用点击功能
- python - 在集合列表中循环期间增加 id
- ios - iOS:如何在 WKWebView 中加载本地文件(不在包中)?
- java - 从 Java 6 中的 UFT-8 BOM 文件中猜测文本编码
- javascript - Sankey:在 x 轴上动态显示文本
- c# - 在模型集合中获取模型的值
- xml - 将xml文件导入neo4j?
- django - 我们可以使用 django canvas 为 celery 任务运行 2 组并行任务吗
- javascript - 什么类型的排序算法与这段代码最相似?(如果有的话)。