Отключение ВСЕХ асинхронного выполнения в программах CUDA - PullRequest
4 голосов
/ 19 января 2011

Согласно руководству по программированию CUDA, вы можете отключить асинхронный запуск ядра во время выполнения, установив переменную среды (CUDA_LAUNCH_BLOCKING = 1).

Это полезный инструмент для отладки. Я также хочу определить выгоду в моем коде от использования параллельных ядер и передач.

Я также хочу отключить другие одновременные вызовы, в частности cudaMemcpyAsync.

Влияет ли CUDA_LAUNCH_BLOCKING на подобные вызовы, помимо запуска ядра? Я подозреваю, что нет. Какой будет лучшая альтернатива? Я могу добавить cudaStreamSynchronize вызовов, но я бы предпочел решение во время выполнения. Я могу запустить в отладчике, но это повлияет на время и победит цель.

1 Ответ

1 голос
/ 06 апреля 2011

Установка CUDA_LAUNCH_BLOCKING вообще не повлияет на API потоков. Если вы добавите некоторый код отладки, чтобы заставить весь код потоков использовать поток 0, все вызовы, кроме вызовов ядра, вернутся к синхронному поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...