Я использую кластер GPU без поддержки GPUDirect. Из этого briefing, следующий делается при передаче данных GPU по узлам:Модель программирования cuda-mpi без GPUDirect
- GPU пишет возлагали sysmem1
- копии CPU от sysmem1 до sysmem2
- Infiniband копии драйверов с sysmem2
сейчас Я не уверен, является ли второй шаг неявным шагом при передаче sysmem1 через Infiniband с использованием MPI. Предполагая это, моя текущая модель программирования что-то вроде этого:
- cudaMemcpy (hostmem, devicemem, размер, cudaMemcpyDeviceToHost).
- MPI_Send (hostmem ...)
ли мое предположение выше верно и будет моя модель программирования работы, не вызывая проблемы связи?
В зависимости от реализации MPI ... может быть возможно принудительно использовать все сообщения (независимо от размера) для использования протокола RDMA. В надежном протоколе библиотека MPI копирует GPU «sysmem1» в предварительно закрепленный буфер «sysmem2» для передачи RDMA. Этот метод может быть полезен для приложений, которые не могут быть изменены. Количество предварительно закрепленной памяти для максимальной производительности в этом случае может быть довольно большим. –