Программа MPI зависает, потому что MPI_Isends не все полученыC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Программа MPI зависает, потому что MPI_Isends не все получены

Сообщение Anonymous »

Мотивация:
Я пишу программу MPI для Kinetic Monte Carlo. В настоящее время я пишу подпрограмму, которая сообщает другим процессорам об изменениях в сайтах-ореолах (сайтах-призраках), пересечении доменов частиц и конфликтах границ. Все это обрабатывается функцией receive_parallel_comm_helper(), но для обработки отмены действий она вызывает подпрограмму reverse_ghost_sites(). изменения в местах гало/призраков в случае конфликта границ.
Текущая проблема: Когда reverse_ghost_sites() закомментирован и поэтому НЕ вызывается, код работает отлично и не зависает. Однако, если оставить его, код зависает при вызове MPI_Probe() в while ((!stop_conflict)) внутри receive_parallel_comm_helper(). Распечатка полученных сообщений показала, что сообщение типа тега conflict_ghost_done_tag принимается в вышеупомянутом цикле while вызовом зонда, который отправляется из MPI_Isend()< /strong> вызов внутри reverse_ghost_sites(). Однако все они должны быть сопоставлены с последующим вызовом MPI_Recv() в reverse_ghost_sites(), предназначенным для сигнализации функции, что данные больше не передаются друг от друга. Я не уверен, почему у меня возникает эта ошибка, поскольку структура моего кода для отправки этих сигналов «передачи данных больше нет» идентична структуре аналогичных сигналов, отправленных ранее в receive_parallel_comm_helper()< /em> функции.
void reverse_ghost_sites() {
MPI_Request request1;
MPI_Status status1;
std::vector new_loc_buffer1(9);
std::vector new_loc_buffer2(9);
std::vector stop_conflict_ghost_array(num_procs, 0);
stop_conflict_ghost_array[rank] = 1;
bool stop_conflict_ghost = 0;

for (int new_proc=0; new_proc

Подробнее здесь: https://stackoverflow.com/questions/792 ... g-received
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблема со связью MPI в Python (с использованием MPI.COMM_WORLD.isend и MPI.COMM_WORLD.irecv) — нет получения
    Anonymous » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Когда я подключаюсь к удаленному серверу, scp зависает, команда экрана зависает, htop зависает [закрыто]
    Гость » » в форуме Linux
    0 Ответы
    158 Просмотры
    Последнее сообщение Гость
  • Почему моя программа MPI не ждет ввода?
    Гость » » в форуме C++
    0 Ответы
    23 Просмотры
    Последнее сообщение Гость
  • Простая программа MS-MPI не работает при использовании смешанных процессоров AMD/Intel.
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Xcopy зависает/зависает
    Anonymous » » в форуме C#
    0 Ответы
    89 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»