Модель программирования cuda-mpi без GPUDirect
Я использую кластер GPU без поддержки GPUDirect. Из этого брифинга при передаче данных графического процессора между узлами делается следующее:
- GPU пишет в закрепленный sysmem1
- Процессор копирует из sysmem1 в sysmem2
- Копии драйверов Infiniband от sysmem2
Теперь я не уверен, является ли второй шаг неявным, когда я передаю sysmem1 через Infiniband с использованием MPI. Предполагая это, моя текущая модель программирования выглядит примерно так:
- cudaMemcpy (hostmem, devicemem, size, cudaMemcpyDeviceToHost).
- MPI_Send (hostmem,...)
Верно ли мое предположение, верно ли, и будет ли моя модель программирования работать без проблем со связью?
1 ответ
Решение
Да, вы можете использовать CUDA и MPI независимо (т.е. без GPUDirect), как вы описали.
- Переместить данные с устройства на хост
- Передайте данные как обычно, используя MPI
Возможно, вас заинтересует эта презентация, в которой объясняется MPI с учетом CUDA и приводится пример на слайде 11 MPI без CUDA и CUDA-MPI.