如果CUDA线程遇到错误,是否可以终止主机和设备程序的执行?

时间:2018-08-31 13:44:01

标签: cuda gpu

我是CUDA编程的新手。在串行代码中,我通常会使用一个函数,以便在发生错误后正常退出代码。例如

void exit_with_error(char * message){
  fprintf(stderr, "%s", message);
  fflush(stderr);
  exit(1);
}

问题:在使用CUDA 8.0的设备代码中,有没有一种干净的方法?

我正在寻找类似于MPI中可以做的事情。因此,如果GPU设备上的一个线程遇到“错误”(例如,永远不应该为真的条件),则

  1. 打印错误

  2. 向所有其他线程发送信号退出(可能刷新其stdout / stderr缓冲区)。

  3. 程序终止。

1 个答案:

答案 0 :(得分:2)

这是不可能的。 CUDA设备代码不能导致主机线程或进程终止。

主机线程的终止必须由主机代码完成。