«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно отправлять и получать 2D-массивы в MPI?

Как эффективно отправлять и получать 2D-массивы в MPI?

Опубликовано 22 декабря 2024 г.
Просматривать:276

How to Effectively Send and Receive 2D Arrays in MPI?

Отправка и получение 2D-массивов с использованием MPI

Проблема:

У вас большая 2D-матрица, требующая обработки нескольких узлы с использованием MPI. Единственная связь между узлами предполагает обмен значениями ребер после каждого временного шага.

Подход:

Предлагаемый вами подход, изложенный в вопросе, подходит для этой проблемы. Следующие сегменты кода иллюстрируют предлагаемую реализацию:

// (assume A is a 2D array)
if (myrank == 0) {
  for (i = 0; i 

Дополнительные функции MPI:

  • MPI_Allgather: собирает данные со всех процессоров в буфер, доступный всем процессорам. Полезно для сбора распределенного массива на одном процессоре.
  • MPI_Alltoall: Обеспечивает полный обмен данными между всеми процессорами.
  • MPI_Sendrecv: A удобная функция, объединяющая операцию отправки и получения в одну call.
  • MPI_Buffer_attach: присоединяет буфер к процессу без необходимости явно выделять для него память.

Соображения:

  • Для 2D-массивов рекомендуется использовать непрерывное выделение памяти для упрощения MPI связь.
  • MPI_Barrier обеспечивает синхронизацию между процессами, но его можно заменить неблокирующими альтернативами, такими как MPI_Wait или MPI_Test.
  • Здесь используется блокировка отправки и получения, но доступны и неблокирующие варианты. для повышения эффективности.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3