MPI (MPMD 通信) を使用して 2 つの異なるプロセスを通信しようとしています。そのうちの 1 つは GLUT を使用して、他のプロセスから送信されたデータに基づいて生成されたデータをレンダリングします。
私の問題は、初期化フェーズ中に「コンシューマー」(GLUT を使用するもの) が特定の構成データを「プロデューサー」に送信することですが、MPI_Send 呼び出しがブロックされていないようです。たとえば、コンシューマーからプロデューサーに 4 つの異なるメッセージを送信し、それぞれに異なるタグを付けます。それはうまくいくようです。次に、他のプロセスのコードを変更せずに、最初の MPI_Send にコメントを付けます (つまり、最初の MPI_Send と MPI_Recv を超えて処理を進める必要はありません)。問題は、送信者が 3 つのメッセージすべてを送信することです。各 MPI_Send の後に行うテストでは、正しい進化に対応するメッセージが出力されるため、各 MPI_Send が MPI_SUCCESS を返すようです。その間、レシーバーは進行しません。
GLUT を使用せずに、より単純なアプリケーションでこの動作を再現しようとしましたが、うまくいきました。しかし同時に、GLUT がこの問題を引き起こす理由もわかりません。何か提案はありますか?
前もって感謝します。