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


3.3.9 The paraver backend

The Paraver trace visualizer accepts a trace file format that records an execution trace of a message-passing (or other) application and uses that to display application timelines and statistical data. Normally, one uses an application-instrumentation tool such as Extrae to generate Paraver traces, and Extrae is, in fact, compatible with programs generated using the coNCePTuaL c_mpi backend (see The c_mpi backend). However, the paraver backend produces Paraver files directly. The intention is to use the Paraver 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 paraver 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, paraver 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 Paraver output produced by passing the paraver backend the coNCePTuaL program, ‘TASK 0 SENDS A 32 KILOBYTE MESSAGE TO TASK 1 THEN TASK 1 SENDS A 256 BYTE MESSAGE TO TASK 0.’:

#Paraver (06/01/2011 at 11:22):2001_ns:2(1,1):1:2(1:1,1:2),0
3:1:1:1:1:0:0:2:1:2:1:1000:1000:32768:0
2:1:1:1:1:0:1000000:6
2:1:1:1:1:0:1000000:13
2:2:1:2:1:0:1000000:6
2:2:1:2:1:0:1000000:9
1:1:1:1:1:0:1000:4
1:2:1:2:1:0:1000:3
3:2:1:2:1:1000:1000:1:1:1:1:2000:2000:256:0
2:1:1:1:1:1000:1000000:9
2:2:1:2:1:1000:1000000:13
1:1:1:1:1:1000:2000:3
1:2:1:2:1:1000:2000:4

The paraver backend also generates an associated configuration file that maps program state and event numbers to names and colors. For example, state 4 represents “blocking send” and is colored a neon fuchsia in Paraver’s graphical interface; event 1000000 represents “coNCePTuaL,” and event 1000000, value 13 represents a coNCePTuaL ‘SEND’ event. See the manual, Paraver Parallel Program Visualization and Analysis Tool: Tracefile Description, for a detailed description of the various fields used in the preceding trace file.

paraver 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 paraver does not produce log files, the --logfile option is absent. paraver additionally supports the following two command-line options:

  -D, --dimemas-events=<number> 0=no Dimemas events; 1=extra events for
                                Dimemas simulator [default: 0]
  -E, --conc-events=<number>    0=exclude names of coNCePTuaL event types;
                                1=include them [default: 0]
  -O, --comp-time=<number>      Time spent in each non-communication event
                                (ns) [default: 0]
  -P, --event-time=<number>     Paraver event time (ns) [default: 1000]
  -R, --conc-source=<number>    0=exclude references to coNCePTuaL source
                                lines; 1=include them [default: 1]

By default, only coNCePTuaL communication events are written to the trace file. If --comp-time is set to a positive integer then all events are written to the trace file, and all non-communication events take the specified amount of time. Because Paraver events are marked with physical time (a integral number of nanoseconds) but paraver uses exclusively logical time, paraver needs to associate a (fabricated) physical time with each logical time. The --event-time option specifies that mapping. By default, paraver pretends that each unit of logical time corresponds to 1 microsecond (i.e, 1000 nanoseconds) of physical time. In addition to coNCePTuaL, Paraver also has a notion of an “event.” The --conc-source and --conc-events options tell the paraver backend which Paraver events to include in the trace file. If --conc-source is ‘1’ (the default), Paraver will display text like the following in its Info panel:

User Event at 529,000 ns  myfile.ncptl source line Unknown value 203

which indicates that the most recently clicked time in the Paraver timeline represents logical time 529 and corresponds to line 203 of myfile.ncptl. If --conc-events is ‘1’, Paraver will display text like the following in its Info panel:

User Event at 529,000 ns  coNCePTuaL event RECEIVE

which indicates that the most recently clicked time in the Paraver timeline represents logical time 529 and represents a coNCePTuaL interpreter ‘RECEIVE’ event (see The interpret backend). The Dimemas network simulator accepts the same traces as the Paraver visualizer but expects to see a number of additional events in the trace file. If --dimemas-events is ‘1’, the paraver backend will generate those extra events.

One of the goals of coNCePTuaL is to facilitate the explanation of network performance tests. The paraver 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, pakin@lanl.gov