Thank you very much.
I tried to clean functions which use MPI:
1) mainInit
2) Rcv_WaitAny
3) SndSyncSlave
I added input data verification - which shows that messages are come as expected.
In current configuration I still see that network measurements become low and ends with fail.
But if I comment out two lines (74,75):
MPI_Recv(RcvBufs[slaveIdx], BUF_SZ, MPI::CHAR, slaveRank, TAG1, MPI_COMM_WORLD, &status);
validateInput(fpLog, RcvBufs, SlavesRcvIters, slaveIdx, myStatistics, &SlavesFinished);
in Rcv_WaitAny function (validate input needs for verification only no MPI inside), I see stable & full network rate, no degradation, no failure.
I suppose that using MPI_Recv together with MPI_Irecv & MPI_Waitany causes this degradation (unexpected messages) and failure.
If I set instead of these two lines "sleep for 0.5 second", I see low but stable network rate, no failure. (Senders are flow controlled by master).
Execution command:
mpiexec.hydra -genvall -f MpiConfigMachines1.txt -launcher=rsh -n 10 mpi_rcv_any_multithread 100000 1000000 out
Is my scenario legal? If it is legal, why I see degradation?
Attached out_r0.log for master and out_r2.log for slave.
I got error in shell:
Assertion failed in file src/mpid/ch3/channels/nemesis/src/ch3_progress.c at line 640: pkt->type >= 0 && pkt->type < MPIDI_NEM_PKT_END
internal ABORT - process 0
Please help.
Regards,
Anatoly.