Next: The paraver backend, Previous: The stats backend, Up: Supplied backends [Contents][Index]
picl
backendPICL, the Portable Instrumented Communication Library, defines a trace file format that records an execution trace of a message-passing application. In particular, MPICL is an MPI-specific implementation of PICL that facilitates instrumenting MPI programs. Normally, one passes a PICL file to a performance-visualization tool such as ParaGraph, which renders the trace data using any of a number of graphical views.
Although MPICL
is compatible with the
c_mpi
backend (see The c_mpi
backend), coNCePTuaL provides a
picl
backend that produces PICL files directly. The intention is to use
the PICL format to
represent an idealized view of a communication pattern rather than
to store a time-sensitive execution trace. For example, timing
events recorded by
picl
occur at logical times instead of physical times
and statements such as COMPUTES
/ SLEEPS
(see
Delaying
execution) and TOUCHES
(see Touching memory) take
either zero time or unit time, depending upon a command-line
option. By providing an idealized view of a communication pattern,
picl
abstracts away timing artifacts so events that
one would expect to occur simultaneously are written to the trace
file as being exactly simultaneous.
As an example, the following is the PICL output produced by passing
picl
the coNCePTuaL program ‘TASK 0 SENDS A 32
KILOBYTE MESSAGE TO TASK 1 THEN TASK 1 SENDS A 256 BYTE MESSAGE TO
TASK 0.’:
-3 -901 0.00000 0 0 0 -3 -901 0.00000 1 1 0 -3 -21 0.00001 0 0 4 2 32768 1 1 1 -4 -21 0.00001 0 0 0 -3 -52 0.00001 1 1 3 2 1 0 0 -3 -52 0.00002 0 0 3 2 1 1 1 -4 -52 0.00002 1 1 4 2 32768 1 0 0 -3 -21 0.00002 1 1 4 2 256 1 0 0 -4 -21 0.00002 1 1 0 -4 -52 0.00003 0 0 4 2 256 1 1 1 -4 -901 0.00003 1 1 0 -4 -901 0.00004 0 0 0
See the PICL manual, A new PICL trace file format (ORNL/TM-12125), for a detailed description of the various fields used in the preceding trace file.
ParaGraph is a visualization tool that reads PICL trace files and
graphically displays/animates the corresponding execution in a
variety of formats. Running ParaGraph on output from
picl
makes it easy for a coNCePTuaL programmer to
explain complex communication patterns to other people.
picl
is derived from
interpret
(see The interpret
backend) and therefore supports the
interpret
backend’s --tasks and
--mcastsync options as well
as the standard options described in Running
coNCePTuaL programs. However, because
picl
does not produce log files, the
--logfile option is absent.
picl
additionally supports the following two
command-line options:
-A, --all-events=<number> 0=include only communication events; 1=include all events [default: 0] -F, --frequency=<number> PICL event frequency (Hz) [default: 100000] |
By default, only communication events are written to the trace
file. If --all-events is set to
‘1’ then all events are written to the trace file.
Events not related to communication are defined to take unit time.
Regardless of the setting of --all-events, the OUTPUTS
statement (see Writing
to standard output) writes a PICL ‘tracemsg’ event to the trace
file. A user can tell ParaGraph to pause visualization at
‘tracemsg’ events, making it possible to isolate key
components of a coNCePTuaL program’s execution.
Because PICL
events are marked with physical time (a floating-point number of
seconds) but
picl
uses exclusively logical time,
picl
needs to associate a (fabricated) physical time
with each logical time. The --frequency option specifies
that mapping. By default,
picl
pretends that each unit of logical time
corresponds to 1/100000 of a second
(i.e, 10 microseconds) of physical time. As
an example, the default time step in ParaGraph is 1 microsecond
; this can be specified to
picl
with --frequency=1E6.
One of the goals of coNCePTuaL is to facilitate the explanation
of network performance tests. The
picl
backend aids in the explanation by making it easy
to show graphically how tasks communicate with each other in an
arbitrary coNCePTuaL program.
Next: The paraver backend, Previous: The stats backend, Up: Supplied backends [Contents][Index]