Изменение памяти устройства на CUDA только один раз

0

Я новичок в CUDA. Я выделил память на устройстве для переменной float. Затем я добавил много вычисляемых значений в функцию ядра. Теперь я хочу сделать только одну математическую операцию для этой переменной. Должен ли я скопировать его обратно на хост, чтобы сделать это?

  • 0
    Если вы хотите выполнить некоторые вычисления на хосте, то да, вам понадобятся соответствующие данные на хосте.
  • 0
    Я хочу изменить его один раз, а затем выполнить еще одно параллельное вычисление на устройстве. Мне не нравится идея размещения форм устройства cudaMemcpy и наоборот много раз.
Показать ещё 2 комментария
Теги:
cuda

1 ответ

2
Лучший ответ

Если у вас есть только одна переменная или небольшой объем данных, вы можете рассмотреть возможность использования нулевых копий данных (переменных) на хосте в закрепленной памяти, которые также доступны на устройстве.

Когда устройство обращается к этим переменным, транзакции будут генерироваться через PCIE для доставки значений на устройстве, а затем для обновления значений на хосте.

Таким образом, на самом деле это не устраняет копии, как вы можете видеть. Но это может представлять интерес для вашего приложения, если речь идет только о небольшом количестве данных.

Простой пример CUDA с нулевой копией описывает метод.

Мой ответ здесь также дает простой пример использования нулевой копии памяти для одной переменной как на устройстве, так и на хосте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню