[hpct] MPI_trace: Issues: Problem 1
Vitali A. Morozov
morozov at anl.gov
Wed Aug 13 15:15:24 CDT 2008
Dear HPCT experts,
I would like to make available to everybody the list of outstanding
issues I have with Part 1 of the HPCT: MPI profiler and tracer.
To keep the issues separate, I will shoot one problem at a time.
Problem 1: A Fortran 90 code intentionally contains MPI_Send/MPI_Recv
from/to non-zero MPI ranks. Manual instrumentation is used to bracket
the region of interest with MT_trace_start()/MT_trace_stop() functions
to trace only enclosed calls. Both compiling and linking were done with
-g. The results are confusing.
We expect
a) To see MPI_Send/MPI_Recv calls in mpi_profile.0 file, because, as
follows from the manual, this file contains the calls from all mpi tasks.
b) Do not see MPI_Comm_size(), MPI_Comm_rank() calls in mpi_profile.0,
as this calls are outside the bracketed region.
c) Post-process *.viz file with peekperf:
c1) "peekperf mpi_profile_0.viz trace" opens a file dialog, asking for
IHPCT_BASE directory. Any choice says "Cannot generate the binary
analysis file!" and opens the window without sources.
c2) peekperf does not have MPI_Send/MPI_Recv calls.
d) Post-process single_trace file with "peekperf single_trace". There is
no MPI calls in the trace. However, mpi_profile.2 file registered
MPI_Recv(), which is even more confusing, because this call is outside
the brackets.
d1) In case the trace stamps are large compared to a single
communication, we would like to be able to manipulate by this length.
e) Error file contains "Error getting the executable name, line number
information will not be available" message. What else should be done
additionally to "-g" option?
=========
program selective
implicit none
include 'mpif.h'
integer ierr, rank, nprocs, istat( MPI_STATUS_SIZE )
real(8) d
call MPI_Init( ierr )
call MPI_Comm_size( MPI_COMM_WORLD, nprocs, ierr )
call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr )
call MT_trace_start_()
if ( rank .eq. 4 ) call MPI_Send( d, 1, MPI_DOUBLE_PRECISION, 8, 0,
MPI_COMM_WORLD, ierr )
if ( rank .eq. 8 ) call MPI_Recv( d, 1, MPI_DOUBLE_PRECISION, 4, 0,
MPI_COMM_WORLD, istat, ierr )
call MT_trace_stop_()
if ( rank .eq. 12 ) call MPI_Send( d, 1, MPI_DOUBLE_PRECISION, 2, 0,
MPI_COMM_WORLD, ierr )
if ( rank .eq. 2 ) call MPI_Recv( d, 1, MPI_DOUBLE_PRECISION, 12, 0,
MPI_COMM_WORLD, istat, ierr )
call MPI_Finalize()
stop
end program selective
============
build it with
mpixlf90 -g -c trace.f90
mpixlf90 -g -o trace trace.o -L/home/morozov/soft/hpct_bgp/lib/
-lmpitrace -llicense -lgfortran
run it with
--env TRACE_SEND_PATTERN=yes:TRACE_ALL_TASKS=yes:TRACE_ALL_EVENTS=no, 16
nodes, smp.
Thank you
Vitali Morozov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alcf.anl.gov/pipermail/hpct/attachments/20080813/497cfecb/attachment.html>
More information about the hpct
mailing list