
Hi Patrik, On Thu, Nov 17, 2011 at 00:09, Patrik Jonsson <patrik-web@familjenjonsson.org> wrote:
I'm having some problem with nonblocking p2p communications. This is with boost 1.47 and openmpi-1.5.3 compiled with icpc 12.0.3.
I tried to run your example on my Ubuntu 11.04 box (GCC 4.5.2, OpenMPI 1.4.3, both coming from the main Ubuntu packages) and get no error: $ mpirun -np 3 --gmca btl tcp,self ./a.out Task 2 posting recv from 0 Task 2 sending to 0 Task 0 posting recv from 1 Task 1 posting recv from 0 Task 0 sending to 1 Task 1 sending to 0 Task 2 posting recv from 1 Task 2 sending to 1 Task 0 posting recv from 2 Task 0 sending to 2 Task 1 posting recv from 2 Task 1 sending to 2 Task 1 received message tag 13 from task 0 Task 2 received message tag 13 from task 1 Task 1 received message tag 13 from task 2 I have tried up to "-np 8" without any problem. Note that the final loop does not receive all pending messages, but that's because the final "for" loop only does one pass over "handshake_reqs_". If I substitute it with the following, all messages are received correctly: // receive all messages in final loop while (not handshake_reqs_.empty()) { int i = 0; while(i<handshake_reqs_.size()) { boost::optional<status> s=handshake_reqs_[i].test(); if(s.is_initialized()) { const int source_task = s.get().source(); const int tag = s.get().tag(); printf("Task %d received message tag %d from task %d\n", me, tag, source_task); cout.flush(); handshake_reqs_.erase(handshake_reqs_.begin()+i); ++i; }; }; }; # sample output $ mpirun -np 3 --gmca btl tcp,self ./a.out Task 0 posting recv from 1 Task 0 sending to 1 Task 1 posting recv from 0 Task 2 posting recv from 0 Task 2 sending to 0 Task 0 posting recv from 2 Task 0 sending to 2 Task 1 sending to 0 Task 2 posting recv from 1 Task 2 sending to 1 Task 1 posting recv from 2 Task 1 sending to 2 Task 2 received message tag 13 from task 0 Task 2 received message tag 13 from task 1 Task 0 received message tag 13 from task 1 Task 0 received message tag 13 from task 2 Task 1 received message tag 13 from task 0 Task 1 received message tag 13 from task 2 Best regards, Riccardo