Я студент, чья исследовательская работа включает использование MPI и OpenACC для ускорения нашего внутреннего исследовательского кода CFD на нескольких графических процессорах. Я использую компилятор openmpi 2.0.0 и PGI 17.5. Теперь у меня возникла большая проблема, связанная с «развитием операций в MPI». При использовании нескольких графических процессоров накладные расходы на связь в моем коде очень велики, поэтому я хочу перекрыть связь между хостами (процессорами) и вычислениями на устройствах (графических процессорах). Однако в моем случае фактическое общение часто начинается после завершения вычислений. Поэтому, хотя я написал свой код с перекрытием, перекрытия нет, потому что openmpi не поддерживает асинхронную прогрессию. Кроме того, я уже провел много тестов и добавил функцию MPI_Test в свой код для проверки, я обнаружил, что MPI часто прогрессирует (т.е. фактически отправляет или получает данные) только в том случае, если я блокирую вызов MPI_Wait (тогда нет перекрытия происходит у всех). Моя цель - использовать перекрытие, чтобы скрыть задержку связи и, таким образом, улучшить производительность моего кода. Может ли кто-нибудь дать несколько предложений по этому вопросу? Буду очень признателен за вашу помощь!
Лучший,
Ченг
Привет, Жиль! Большое спасибо за ответ! Похоже, OpenMPI 4.0.0 не был установлен в кластере. 100 Гбит / с EDR-Infiniband используется для связи с низкой задержкой между вычислительными узлами для трафика MPI (сейчас я использую кластер Newriver в моем университете: arc.vt.edu/computing/newriver).
Хорошая новость в том, что вы можете установить и использовать Open MPI как пользователь в своем домашнем каталоге!
Жиль, понял! Я попробую. Большое вам спасибо за вашу помощь!





в Open MPI 2.0.0 нет потока выполнения. Open MPI 4.0.0 был выпущен вчера, и я рекомендую вам попробовать. кстати, какое межсоединение вы используете?