2011-01-18 6 views
3

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

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

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

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

+1

Запуск в отладчике повлияет на сроки, но сериализации все не будет ?! – Tom

+0

Конечно, сериализация все повлияет на сроки, и это то, что я хочу знать. – jmilloy

ответ

1

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

+0

Меня интересует не только синхронное выполнение ядра, но и достижение НЕТ параллелизма между gpu и процессором. Я думаю, что использование cudaMemcpyAsync в потоке 0 достаточно для первой цели, но не для последней. – jmilloy

+0

@jmilloy: CUDA_LAUNCH_BLOCKING, для того чтобы все запуски ядра были синхронны с хостом и перенаправление API потоков в поток 0 также остановили бы любые другие операции асинхронного API. Если вы выполняете обе эти вещи, каждая операция CUDA должна блокироваться/сериализоваться. Разве это не то, чего вы пытаетесь достичь? – talonmies

+0

@talonmies: Документы cuda говорят, что CUDA_LAUNCH_BLOCKING блокирует запуск всех _kernel_ запусков_ асинхронно. Является ли cudaMemcpyAsync запуском ядра? Если CUDA_LAUNCH_BLOCKING блокирует не только запуск ядра, но и другие операции CUDA, то да, это то, что я хочу. Честно говоря, я должен был просто написать что-нибудь, чтобы проверить его сам! – jmilloy

Смежные вопросы