Я пытаюсь передать два разных процесса с использованием MPI (MPMD-связи). Один из них использует GLUT для отображения некоторых данных, которые генерируются на основе данных, отправленных другим процессом.Glut + MPI_Send, фактически не блокирует
Моя проблема заключается в том, что на этапе инициализации «потребитель» (тот, кто использует GLUT) отправляет определенные данные конфигурации «продюсеру», но кажется, что вызовы MPI_Send не блокируются. Например, я отправляю 4 разных сообщения от потребителя производителю, каждый из которых имеет другой тег. Кажется, все работает нормально. Затем я комментирую первый MPI_Send, не изменяя код другого процесса (это означает, что ни один из них не должен превышать первые MPI_Send и MPI_Recv, соответственно). Проблема заключается в том, что отправитель отправляет все три сообщения, и кажется, что каждый MPI_Send возвращает MPI_SUCCESS, поскольку тесты, которые я выполняю после каждого сообщения печати MPI_Send, соответствуют правильной эволюции. Между тем, приемник не прогрессирует.
Я попытался воспроизвести это поведение в более простых приложениях, без GLUT, и они сработали. Но в то же время я не вижу причин, по которым GLUT вызывает эти проблемы. Есть ли у вас предложения?
Заранее спасибо.
Вы ошибаетесь _synchronous behaviour_ с _blocking_. –