АЭС: перекрывающиеся вычисления и передача данных

CUDA позволяет перекрывать вычисления и передачу данных, используя асинхронные функции и потоки cuMemcpy. Но возможно ли это с NPP(Performance Primitives)?

Немного предыстории. Я пытаюсь использовать графический процессор, используя функции изменения размера изображения NPP (в нашем случае это nppiResize_8u_C3R). Я использую закрепленную память и успешно перенести данные в графический процессор, используя cuMemcpy2DAsync_v2 и для каждого потока потока. Проблема в том, что nppiResize_8u_C3R и все другие вычислительные функции не принимают потоки.

Когда я запускаю Nvidia Visual Profiler, я вижу следующее:

  1. Закрепленная память позволяет передавать данные быстрее - ~6,524 ГБ / с.
  2. Процент времени, когда memcpy выполняется параллельно с вычислениями, составляет 0%.

1 ответ

Проблема [sic] заключается в том, что nppiResize_8u_C3R и все другие вычислительные функции не принимают потоки.

АЭС по сути является API без сохранения состояния. Однако, чтобы использовать потоки с АЭС, вы используете nppSetStream установить поток по умолчанию для последующих операций. На странице 2 документации об использовании NPP с потоками указано несколько предостережений и рекомендуемые методы синхронизации при переключении потоков.

Другие вопросы по тегам