我是CUDA编程的新手。在串行代码中,我通常会使用一个函数,以便在发生错误后正常退出代码。例如
void exit_with_error(char * message){
fprintf(stderr, "%s", message);
fflush(stderr);
exit(1);
}
问题:在使用CUDA 8.0的设备代码中,有没有一种干净的方法?
我正在寻找类似于MPI中可以做的事情。因此,如果GPU设备上的一个线程遇到“错误”(例如,永远不应该为真的条件),则
打印错误
向所有其他线程发送信号退出(可能刷新其stdout / stderr缓冲区)。
程序终止。
答案 0 :(得分:2)
这是不可能的。 CUDA设备代码不能导致主机线程或进程终止。
主机线程的终止必须由主机代码完成。