<html dir="ltr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" id="owaParaStyle">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #333399;font-size: 10pt;">Hi,<br>
<br>
I'm looking at Mpich's code for MPI_Allgather (src/mpi/coll/allgather.c), lines 183 to 222, where the recursive doubling algorithm is used. I''m under the impression that the MPI_Sendrecv operation used line 206 is not issued with the same recvcount value than
 the sendcount value of the sending process.<br>
<br>
Example: if I compute manually for an allgather across 4 processes: in the first loop iteration, process 0 and 1 will exchange data, and process 2 and 3 will do the same. Focusing on 0 and 1, process 0 sends 1 item and expects 3, process 1 sends 1 item and
 expects 4.<br>
<br>
I know that posting a receive with a size larger than what is sent is correct in MPI, and that would explain why line 220 we have MPIR_Get_count_impl(&status, recvtype, &last_recv_cnt);<br>
I just want to make sure that I'm not missing something, and if not, I'd like to know why processes overestimate the received size instead of doubling the curr_cnt variable at every step? Is it to allow the next part of the code (which is between /* --BEGIN
 EXPERIMENTAL-- */ comments) to work?<br>
<br>
Thanks<br>
<br>
Matthieu<br>
</div>
</body>
</html>