Next: , Previous: , Up: Supplied backends   [Contents][Index]

3.3.8 The picl backend

PICL, 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: , Previous: , Up: Supplied backends   [Contents][Index]

Scott Pakin,