[mpich-devel] Suboptimal MPI_Allreduce() for intercommunicators

Lisandro Dalcin dalcinl at gmail.com
Thu May 1 09:46:52 CDT 2014

On 1 May 2014 16:53, Rajeev Thakur <thakur at mcs.anl.gov> wrote:
>>> (For example, on one side of the intercommunicator sendbuf=1 byte, recvbuf=1 gigabyte; on the other side, sendbuf=1 gigabyte, recvbuf=1 byte)
>> For Allreduce, you cannot have 1 byte/  1gigabyte at each side.
> For intercommunicator collectives, one side gets the results from the other side. For allgather, it is specified that the communication can be of unequal amounts: MPI-3 pg 166, 9-15. I am assuming the same holds for allreduce, which just says "Both groups should provide count and datatype arguments that specify the same type signature." (188:23-24)

OK, you are right. After looking more closely to the code, I managed
to write a patch and upload it to the trac ticket. I'm doing a memory
allocation, but the original implementation also had to allocate
memory at ranks 0 on left and right groups (look at
MPIR_Reduce_inter() )

Lisandro Dalcin
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
3000 Santa Fe, Argentina
Tel: +54-342-4511594 (ext 1016)
Tel/Fax: +54-342-4511169

More information about the devel mailing list