Как я могу использовать GPU-DMA из кода GPU-CUDA для копирования данных?

С CUDA SDK 5.5 я могу использовать для копирования данных:

  • от хозяина: cudaMemcpy(); использовать GPU-DMA, если память закреплена
  • от хозяина: memcpy(); или же cudaMemcpy(); использовать процессорные ядра, если память не закреплена
  • из гпу: for() { dst[i] = src[i]; } или же memcpy(); использовать ядра GPU
  • из гпу: использовать GPU-DMA ???

Как я могу использовать GPU-DMA в ядро-функция кода GPU-CUDA для копирования данных?

3

Решение

То, что вы пытаетесь сделать, невозможно со стороны устройства, если оно не поддерживает вычислительные возможности 3.5. Если у вас есть такая карта, см. Редактирование.

Да, вы можете получить доступ к ОЗУ GPU с другого устройства, передав указателю устройства, назначенному на другом устройстве, ваше ядро. Затем среда выполнения выдаст запрошенные данные на нужный графический процессор. Однако это не очень эффективно, потому что каждый доступ к памяти других устройств приводит к операции memcopy либо одноранговой связи, либо устройства хост-устройство.

Что вы можете сделать, это выполнить предварительную выборку данных из вашего хост-кода и использовать различные потоки для ваших операций memcopy (cudaMemcpy_async) и ваши ядра выполнения. Однако это работает только в том случае, если у вас есть приличная карта с одним отделенным копирующим модулем, и вам нужно сделать явную блокировку, потому что нет встроенных структур, которые будут удерживать ваше ядро ​​до завершения передачи данных.

РЕДАКТИРОВАТЬ:

Если у вас есть устройство с поддержкой вычислений 3.5, вы можете использовать среду выполнения cuda для memcopy с устройства на устройство в коде вашего устройства. Смотрите документацию по динамическому параллелизму здесь: http://docs.nvidia.com/cuda/pdf/cuda_dynamic_parallelism_programming_guide.pdf Обратите внимание, что все операции memcopy на устройстве также являются асинхронными. И вам придется снова самостоятельно сохранять согласованность данных.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]