38,760
edits
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
Line 692: | Line 692: | ||
</tabs> | </tabs> | ||
Is there still a problem here if the number of processors is odd? It might seem so at first as process 0 (which is even) will be sending while process N-1 (also even) is trying to send to 0. But process 0 is originating a send that is correctly paired with a receive at process 1. Since process 1 (odd) begins with a receive, that transaction is guaranteed to complete. When it does, process 0 will proceed to receive the message from process N-1. There may be a (very small!) delay, but there is no chance of a deadlock. | Is there still a problem here if the number of processors is odd? It might seem so at first as process 0 (which is even) will be sending while process N-1 (also even) is trying to send to 0. But process 0 is originating a send that is correctly paired with a receive at process 1. Since process 1 (odd) begins with a receive, that transaction is guaranteed to complete. When it does, process 0 will proceed to receive the message from process N-1. There may be a (very small!) delay, but there is no chance of a deadlock. | ||
<!--T:49--> | |||
[~]$ mpicc -Wall phello3.c -o phello3 | |||
[~]$ mpirun -np 16 ./phello3 | [~]$ mpirun -np 16 ./phello3 | ||
[P_1] process 0 said: "Hello, world! from process 0 of 16"] | [P_1] process 0 said: "Hello, world! from process 0 of 16"] | ||
Line 711: | Line 711: | ||
[P_15] process 14 said: "Hello, world! from process 14 of 16"] | [P_15] process 14 said: "Hello, world! from process 14 of 16"] | ||
[P_11] process 10 said: "Hello, world! from process 10 of 16"] | [P_11] process 10 said: "Hello, world! from process 10 of 16"] | ||
Note that many frequently-occurring communication patterns have been captured in the [http://www.mcs.anl.gov/research/projects/mpi/mpi-standard/mpi-report-1.1/node64.htm#Node64 collective communication] functions of MPI. If there is a collective function that matches the communication pattern you need, you should use it instead of implementing it yourself with <tt>MPI_Send</tt> and <tt>MPI_Recv</tt>. | Note that many frequently-occurring communication patterns have been captured in the [http://www.mcs.anl.gov/research/projects/mpi/mpi-standard/mpi-report-1.1/node64.htm#Node64 collective communication] functions of MPI. If there is a collective function that matches the communication pattern you need, you should use it instead of implementing it yourself with <tt>MPI_Send</tt> and <tt>MPI_Recv</tt>. | ||