Проблема перекрытия коммуникации и вычислений

Я студент, чья исследовательская работа включает использование MPI и OpenACC для ускорения нашего внутреннего исследовательского кода CFD на нескольких графических процессорах. Я использую компилятор openmpi 2.0.0 и PGI 17.5. Теперь у меня возникла большая проблема, связанная с «развитием операций в MPI». При использовании нескольких графических процессоров накладные расходы на связь в моем коде очень велики, поэтому я хочу перекрыть связь между хостами (процессорами) и вычислениями на устройствах (графических процессорах). Однако в моем случае фактическое общение часто начинается после завершения вычислений. Поэтому, хотя я написал свой код с перекрытием, перекрытия нет, потому что openmpi не поддерживает асинхронную прогрессию. Кроме того, я уже провел много тестов и добавил функцию MPI_Test в свой код для проверки, я обнаружил, что MPI часто прогрессирует (т.е. фактически отправляет или получает данные) только в том случае, если я блокирую вызов MPI_Wait (тогда нет перекрытия происходит у всех). Моя цель - использовать перекрытие, чтобы скрыть задержку связи и, таким образом, улучшить производительность моего кода. Может ли кто-нибудь дать несколько предложений по этому вопросу? Буду очень признателен за вашу помощь!

Лучший,

Ченг

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

Gilles Gouaillardet 13.11.2018 22:30

Привет, Жиль! Большое спасибо за ответ! Похоже, OpenMPI 4.0.0 не был установлен в кластере. 100 Гбит / с EDR-Infiniband используется для связи с низкой задержкой между вычислительными узлами для трафика MPI (сейчас я использую кластер Newriver в моем университете: arc.vt.edu/computing/newriver).

Cheng 13.11.2018 23:03

Хорошая новость в том, что вы можете установить и использовать Open MPI как пользователь в своем домашнем каталоге!

Gilles Gouaillardet 13.11.2018 23:41

Жиль, понял! Я попробую. Большое вам спасибо за вашу помощь!

Cheng 14.11.2018 01:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
103
0

Другие вопросы по теме