如果CUDA线程遇到错误,有没有办法终止主机和设备程序执行?

问题描述 投票:0回答:1

我是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. 程序终止。
cuda gpu
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.