Bug #1947: Fix mpi-win-x86_64-smp hang for nodegroup zerocopy api in pingpong 50/4450/4
authorNitin Bhat <nbhat4@illinois.edu>
Mon, 6 Aug 2018 16:34:32 +0000 (11:34 -0500)
committerNitin Bhat <nbhat4@illinois.edu>
Tue, 7 Aug 2018 14:42:49 +0000 (09:42 -0500)
commitbf8f98b377ef95456a43682ee5d4ad749fe00cbb
tree96eb522f15f3bee9a21db1a4054bf17337bfb575
parent794cf808f00f15abd994988cc29bb44fa201c7a5
Bug #1947: Fix mpi-win-x86_64-smp hang for nodegroup zerocopy api in pingpong

The hang was because MPI was initialized in MPI_THREAD_SINGLE mode,
but instead of the comm. thread, the worker thread was posting the
recv buffer. The fix was to have the comm thread post the buffer instead of
the worker thread.

This commit also includes another fix related to the zerocopy api used
for nodegroups. For nodegroups, the pingpong example crashed for
mpi-win-x86_64-smp when run on 1 PE because of a stack overflow. This
was due to inlining of the send method causing recursive calls which
caused stack overflow when run with a large number of iterations (~900).
The fix was to not use inlining in this code path.

Change-Id: I1c86dbac2ce81832d5f728aadf769fe9e49cf9f7
src/arch/mpi/machine-onesided.c
src/arch/mpi/machine-onesided.h
src/arch/mpi/machine.C
src/ck-core/ck.C
src/ck-core/ckrdma.C