2013-04-17 2 views
1

Я использую: cudaMemcpy2DArrayToArray(). Существует ли асинхронный аналог этой функции? cudaMemcpy2DArrayToArrayAsync(), не существует. Я хочу избежать неявной синхронизации моих операций cuda.Cuda cudaMemcpy2DArrayToArray не имеет асинхронного аналога

+0

Кажется, вы ответили на свой вопрос. –

+0

Мне трудно поверить, что вы не можете асинхронно копировать массив cuda в другой массив cuda. Я хочу избежать любой синхронизации. – Luc

ответ

1

Другие 10 или около того вызовов cudaMemcpy *() имеют версию async, поэтому я предполагаю, что этот вызов каким-то образом реализован, что предотвращает полностью асинхронную версию. Заметим, однако, что документы говорят, что «Эта функция показывает синхронное поведение для наиболее случаев использования» и, к тому, что они, кажется, означают:

  1. Для переводов из выгружаемой памяти хоста в память устройства, синхронизация потока выполняется до начала копирования. Функция вернется после того, как буфер для печати будет скопирован в промежуточную память для передачи DMA в память устройства, но DMA для конечного адресата может не завершиться.

  2. Для передачи из закрепленной памяти хоста в память устройства функция синхронна относительно хоста.

  3. Для передачи с устройства на любую доступную или закрепленную память хоста функция возвращается только после завершения копирования.

  4. Для передачи из памяти устройства в память устройства не выполняется синхронизация на стороне хоста.

  5. Для передачи из любой памяти хоста в любую память хоста функция полностью синхронна относительно хоста.

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