<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Dear HPCT experts,<br>
<br>
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. <br>
<br>
To keep the issues separate, I will shoot one problem at a time.<br>
<br>
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&nbsp; MT_trace_start()/MT_trace_stop() functions
to trace only enclosed calls. Both compiling and linking were done with
-g. The results are confusing.<br>
<br>
We expect<br>
<br>
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.<br>
<br>
b) Do not see MPI_Comm_size(), MPI_Comm_rank() calls in mpi_profile.0,
as this calls are outside the bracketed region.<br>
<br>
c) Post-process *.viz file with peekperf:<br>
&nbsp;&nbsp;&nbsp; <br>
c1) "peekperf mpi_profile_0.viz trace"&nbsp; opens a file dialog, asking for
IHPCT_BASE directory. Any choice says "Cannot generate the binary
analysis file!" and opens the window without sources.<br>
<br>
c2) peekperf does not have MPI_Send/MPI_Recv calls.<br>
<br>
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.<br>
<br>
d1) In case the trace stamps are large compared to a single
communication, we would like to be able to manipulate by this length.<br>
<br>
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?<br>
<br>
<br>
<font size="3">=========<br>
program selective<br>
implicit none<br>
include 'mpif.h'<br>
<br>
integer ierr, rank, nprocs, istat( MPI_STATUS_SIZE )<br>
real(8) d<br>
<br>
call MPI_Init( ierr )<br>
call MPI_Comm_size( MPI_COMM_WORLD, nprocs, ierr )<br>
call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr )<br>
<br>
call MT_trace_start_()<br>
if ( rank .eq. &nbsp;4 ) call MPI_Send( d, 1, MPI_DOUBLE_PRECISION, 8,
0, MPI_COMM_WORLD, ierr )<br>
if ( rank .eq. &nbsp;8 ) call MPI_Recv( d, 1, MPI_DOUBLE_PRECISION, 4,
0, MPI_COMM_WORLD, istat, ierr )<br>
call MT_trace_stop_()<br>
<br>
if ( rank .eq. 12 ) call MPI_Send( d, 1, MPI_DOUBLE_PRECISION, &nbsp;2,
0, MPI_COMM_WORLD, ierr )<br>
if ( rank .eq. &nbsp;2 ) call MPI_Recv( d, 1, MPI_DOUBLE_PRECISION, 12,
0, MPI_COMM_WORLD, istat, ierr )<br>
<br>
call MPI_Finalize()<br>
stop<br>
<br>
end program selective<br>
============<br>
<br>
build it with<br>
<br>
mpixlf90 -g -c trace.f90<br>
mpixlf90 -g -o trace trace.o -L/home/morozov/soft/hpct_bgp/lib/
-lmpitrace
-llicense -lgfortran<br>
<br>
run it with<br>
--env TRACE_SEND_PATTERN=yes:TRACE_ALL_TASKS=yes:TRACE_ALL_EVENTS=no,
16 nodes, smp.<br>
<br>
Thank you<br>
</font><br>
Vitali Morozov<br>
<br>
<br>
</body>
</html>