Есть ли способ прекратить выполнение программы хоста и устройства, если поток CUDA обнаружит ошибку? - PullRequest
0 голосов
/ 31 августа 2018

Я новичок в программировании CUDA. В последовательном коде у меня часто есть функция, которую я использую для изящного выхода из кода после возникновения ошибки. Э.Г.

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

ВОПРОС: Есть ли чистый способ сделать это в коде устройства с помощью CUDA 8.0?

Я ищу что-то похожее на то, что вы можете сделать в MPI . Таким образом, если в одном потоке на устройстве с графическим процессором возникает «ошибка» (например, условие, которое никогда не должно быть истинным), оно

  1. печатает ошибку

  2. отправляет сигнал всем другим потокам о выходе (возможно, сбрасывая их буферы stdout / stderr).

  3. Программа завершается.

1 Ответ

0 голосов
/ 31 августа 2018

Это невозможно. Код устройства CUDA не может вызвать завершение потока или процесса хоста.

Завершение хост-потока должно выполняться кодом хоста.

...