I am using Open MPI 2.1.0 on RHEL 7.  My application has one unavoidable
pinch point where a large amount of data needs to be transferred (about 8
GB of data needs to be both sent to and received all other ranks), and I'm
seeing worse performance than I would expect; this step has a major impact
on my overall runtime.  In the real application, I am using MPI_Alltoall()
for this step, but for the purpose of a simple benchmark, I simplified to
simply do a single MPI_Send() / MPI_Recv() between two ranks of a 2 GB
buffer.

I'm running this in AWS with instances that have 10 Gbps connectivity in
the same availability zone (according to tracepath, there are no hops
between them) and MTU set to 8801 bytes.  Doing a non-MPI benchmark of
sending data directly over TCP between these two instances, I reliably get
around 4 Gbps.  Between these same two instances with MPI_Send() /
MPI_Recv(), I reliably get around 2.4 Gbps.  This seems like a major
performance degradation for a single MPI operation.

I compiled Open MPI 2.1.0 with gcc 4.9.1 and default settings.  I'm
connecting between instances via ssh and using I assume TCP for the actual
network transfer (I'm not setting any special command-line or programmatic
settings).  The actual command I'm running is:
mpirun -N 1 --bind-to none --hostfile hosts.txt my_app

Any advice on other things to test or compilation and/or runtime flags to
set would be much appreciated!
-Adam
_______________________________________________
users mailing list
users@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/users

Reply via email to