2013-09-20 6 views
0

Я использую кластер GPU без поддержки GPUDirect. Из этого briefing, следующий делается при передаче данных GPU по узлам:Модель программирования cuda-mpi без GPUDirect

  1. GPU пишет возлагали sysmem1
  2. копии CPU от sysmem1 до sysmem2
  3. Infiniband копии драйверов с sysmem2

сейчас Я не уверен, является ли второй шаг неявным шагом при передаче sysmem1 через Infiniband с использованием MPI. Предполагая это, моя текущая модель программирования что-то вроде этого:

  1. cudaMemcpy (hostmem, devicemem, размер, cudaMemcpyDeviceToHost).
  2. MPI_Send (hostmem ...)

ли мое предположение выше верно и будет моя модель программирования работы, не вызывая проблемы связи?

+0

В зависимости от реализации MPI ... может быть возможно принудительно использовать все сообщения (независимо от размера) для использования протокола RDMA. В надежном протоколе библиотека MPI копирует GPU «sysmem1» в предварительно закрепленный буфер «sysmem2» для передачи RDMA. Этот метод может быть полезен для приложений, которые не могут быть изменены. Количество предварительно закрепленной памяти для максимальной производительности в этом случае может быть довольно большим. –

ответ

3

Да, вы можете использовать CUDA и MPI независимо (т. Е. Без GPUDirect), точно так же, как вы описываете.

  1. Переместить данные из устройства для размещения
  2. передавать данные, как вы обычно бы, используя MPI

Вы могли бы быть заинтересованы в this presentation, который объясняет CUDA-осведомленный MPI, и приводит пример бок о бок на слайде 11 не-cuda MPI и CUDA-MPI