Согласно руководству по программированию CUDA, вы можете отключить асинхронный запуск ядра во время выполнения, установив переменную среды (CUDA_LAUNCH_BLOCKING = 1).
Это полезный инструмент для отладки. Я также хочу определить выгоду в моем коде от использования параллельных ядер и передач.
Я также хочу отключить другие одновременные вызовы, в частности cudaMemcpyAsync
.
Влияет ли CUDA_LAUNCH_BLOCKING
на подобные вызовы, помимо запуска ядра? Я подозреваю, что нет. Какой будет лучшая альтернатива? Я могу добавить cudaStreamSynchronize
вызовов, но я бы предпочел решение во время выполнения. Я могу запустить в отладчике, но это повлияет на время и победит цель.