Мотивация:
Я пишу программу 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
Программа MPI зависает, потому что MPI_Isends не все получены ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1734116133
Anonymous
[b]Мотивация:[/b]
Я пишу программу MPI для Kinetic Monte Carlo. В настоящее время я пишу подпрограмму, которая сообщает другим процессорам об изменениях в сайтах-ореолах (сайтах-призраках), пересечении доменов частиц и конфликтах границ. Все это обрабатывается функцией [b]receive_parallel_comm_helper()[/b], но для обработки отмены действий она вызывает подпрограмму [b]reverse_ghost_sites()[/b]. изменения в местах гало/призраков в случае конфликта границ.
[b]Текущая проблема:[/b] Когда [b]reverse_ghost_sites()[/b] закомментирован и поэтому НЕ вызывается, код работает отлично и не зависает. Однако, если оставить его, код зависает при вызове [b]MPI_Probe()[/b] в [b] while ((!stop_conflict))[/b] внутри [b]receive_parallel_comm_helper()[/b]. Распечатка полученных сообщений показала, что сообщение типа тега conflict_ghost_done_tag принимается в вышеупомянутом цикле while вызовом зонда, который отправляется из [b]MPI_Isend()< /strong> вызов внутри reverse_ghost_sites()[/b]. Однако все они должны быть сопоставлены с последующим вызовом [b]MPI_Recv()[/b] в [b]reverse_ghost_sites()[/b], предназначенным для сигнализации функции, что данные больше не передаются друг от друга. Я не уверен, почему у меня возникает эта ошибка, поскольку структура моего кода для отправки этих сигналов «передачи данных больше нет» идентична структуре аналогичных сигналов, отправленных ранее в [b]receive_parallel_comm_helper()[/b]< /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
Подробнее здесь: [url]https://stackoverflow.com/questions/79279192/mpi-program-hanging-because-mpi-isends-not-all-being-received[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия