Я работаю на Arch Linux:
Я читал в нескольких местах, что вызов ядра является асинхронным по отношению к процессору (немедленно вернется и позволит процессору продолжить работу). Тем не менее, я не получаю такого поведения.
например
kernel<<<blocks,threads>>>();
printf("print immediately\n");
check_cuda_error();
Процессор, кажется, блокируется, и ничего не выводится (аналогично, ничего больше не выполняется) на консоль, пока ядро не будет завершено. Протестировано с ядрами всех видов разного времени выполнения (1 с, 2 с, 3 с и т. Д.) И вычислениями, чтобы убедиться, что это не мое ядро.
Это проблема с драйверами? Или я что-то неправильно понимаю
Я обнаружил, что когда я бегу за пределами X (в неграфической среде), я получаю ожидаемое поведение. Моя гипотеза состоит в том, что, хотя мой графический процессор усердно работал в ядре, он не обновлял экранную графику и, следовательно, «зависал» перед печатью на консоль.
Запуск из оболочки дал ожидаемые результаты, поэтому я рассматриваю свой вопрос, на который дан ответ. Прокомментируйте ниже, чтобы узнать больше
Других решений пока нет …