MPI には、 や などの非ブロッキング呼び出しがMPI_Isend
ありMPI_Irecv
ます。
私が p2p プロジェクトに取り組んでいる場合、サーバーは多くのクライアントをリッスンします。
それを行う1つの方法:
for(int i = 1; i < highest_rank; i++){
MPI_Irecv(....,i,....statuses[i]); //listening to all slaves
}
while(true){
for( int i = 1; i < highest_rank; i++){
checkStatus(statuses[i])
if true do somthing
}
私ができる別の古い方法は次のとおりです。
Server creating many POSIX threads, pass in a function,
that function will call MPI_Recv and loop forever.
理論的には、サーバー側でより高速に実行できるのはどれですか? サーバーを書くための別のより良い方法があれば、私にも知らせてください。