Точный критерий неявной синхронизации в CUDA - PullRequest
1 голос
/ 15 января 2020

Руководство по программированию CUDA говорит (Раздел 3.2.5.5.4; выделение мое):

Неявная синхронизация

Невозможно выполнить две команды из разных потоков одновременно, если какая-либо из следующих операций выдается между ними потоком хоста:

  • выделение памяти хоста с блокировкой страницы,
  • устройство выделение памяти,
  • набор памяти устройства,
  • копия памяти между двумя адресами в одной и той же памяти устройства,
  • любая команда CUDA для потока NULL,
  • переключение между конфигурациями L1 / совместно используемой памяти, описанными в Compute Capability 3.x и Compute Capability 7.x.

Что означают фразы «между ними» и «выпущенные в между ними "значит, точно?

1 Ответ

2 голосов
/ 15 января 2020

Если я правильно понимаю - формулировка относится ко времени, в которое команды запланированы, то есть «если вы запланировали какую-то команду C, запускающую неявную синхронизацию после планирования других вещей - все, что вы запланировали до C, будет сначала выполняется, затем выполняется C, затем все, что вы запланировали после C ".

...