Bonsoir Eugene,

 First thanks for trying to help me.

 I already gave a try to some profiling tool, namely IPM, which is rather
simple to use. Here follows some output for a 1024 core run.
Unfortunately, I'm yet unable to have the equivalent MPT chart.

#IPMv0.983####################################################################
#
# command : unknown (completed)
# host    : r34i0n0/x86_64_Linux           mpi_tasks : 1024 on 128 nodes
# start   : 12/21/10/13:18:09              wallclock : 3357.308618 sec
# stop    : 12/21/10/14:14:06              %comm     : 27.67
# gbytes  : 0.00000e+00 total              gflop/sec : 0.00000e+00 total
#
##############################################################################
# region  : *       [ntasks] =   1024
#
#                           [total] <avg>           min           max
# entries 1024 1 1 1 # wallclock 3.43754e+06 3356.98 3356.83 3357.31 # user 2.82831e+06 2762.02 2622.04 2923.37 # system 376230 367.412 174.603 492.919 # mpi 951328 929.031 633.137 1052.86 # %comm 27.6719 18.8601 31.363 # gflop/sec 0 0 0 0 # gbytes 0 0 0 0
#
#
#                            [time]       [calls] <%mpi> <%wall>
# MPI_Waitall 741683 7.91081e+07 77.96 21.58 # MPI_Allreduce 114057 2.53665e+07 11.99 3.32 # MPI_Recv 40164.7 2048 4.22 1.17 # MPI_Isend 27420.6 6.53513e+08 2.88 0.80 # MPI_Barrier 25113.5 2048 2.64 0.73 # MPI_Sendrecv 2123.6 212992 0.22 0.06 # MPI_Irecv 464.616 6.53513e+08 0.05 0.01 # MPI_Reduce 215.447 171008 0.02 0.01 # MPI_Bcast 85.0198 1024 0.01 0.00 # MPI_Send 0.377043 2048 0.00 0.00 # MPI_Comm_rank 0.000744925 4096 0.00 0.00 # MPI_Comm_size 0.000252183 1024 0.00 0.00
###############################################################################

It seems to my non-expert eye that MPI_Waitall is dominant among MPI calls, but not for the overall application, however I will have to compare with MPT,
before concluding.

 Thanks again for your suggestions, that I'll address one by one.

 Best,     G.




Le 22/12/2010 18:50, Eugene Loh a écrit :
Can you isolate a bit more where the time is being spent? The performance effect you're describing appears to be drastic. Have you profiled the code? Some choices of tools can be found in the FAQ http://www.open-mpi.org/faq/?category=perftools The results may be "uninteresting" (all time spent in your MPI_Waitall calls, for example), but it'd be good to rule out other possibilities (e.g., I've seen cases where it's the non-MPI time that's the culprit).

If all the time is spent in MPI_Waitall, then I wonder if it would be possible for you to reproduce the problem with just some MPI_Isend|Irecv|Waitall calls that mimic your program. E.g., "lots of short messages", or "lots of long messages", etc. It sounds like there is some repeated set of MPI exchanges, so maybe that set can be extracted and run without the complexities of the application.

Anyhow, some profiling might help guide one to the problem.

Gilbert Grosdidier wrote:

There are indeed a high rate of communications. But the buffer
size is always the same for a given pair of processes, and I thought
that mpi_leave_pinned should avoid freeing the memory in this case.
Am I wrong ?

Reply via email to