CU_CTX_SCHED_BLOCKING_SYNC делает ядра синхронными? - PullRequest
0 голосов
/ 24 мая 2018

Делает ли создание контекста CUDA с помощью CU_CTX_SCHED_BLOCKING_SYNC то, что ядро ​​CUDA запускает фактически синхронно (т. Е. Останавливает поток ЦП, как если бы выполнялась функция обычного ЦП с тем же потоком)?

В документации только состояния

CU_CTX_SCHED_BLOCKING_SYNC: поручить CUDA блокировать поток ЦП на примитиве синхронизации при ожидании завершения работы графического процессора.

, но я не уверен, что правильно понял.

1 Ответ

0 голосов
/ 24 мая 2018

Нет.

Эти флаги управляют тем, как будет вести себя поток хоста, когда API синхронизации устройства <-> хоста, такой как cuCtxSynchronize , cuEventSynchronize или cuStreamSynchonize вызывается с использованием хост-API.Другие неблокирующие вызовы API в обоих случаях асинхронны.

Существует две модели поведения хоста: блокирование или уступка.Блокировка означает, что вызывающий поток хоста будет вращаться в ожидании возврата вызова и блокировать доступ к драйверу другими потоками, а выход означает, что он может уступать другим потокам хоста, пытающимся взаимодействовать с драйвером графического процессора.

Если вычтобы принудительно установить блокировку при запуске ядра, используйте переменную окружения CUDA_​LAUNCH_​BLOCKING.

...