A trace file has three types of records:
- State: Record associating a state value for one thread during a time interval. Paraver associates no semantics to the encoding of the state field.
- Event: This record represents a punctual event that happen on one object. It is encoded in two integers (type and value). Paraver associates no semantics to the encoding of these fields.
- Relation (communication): event relating two objects in two points in time. Actually represent a pair of events in two different threads and represents a causal relationship between the event happening in the first thread and the second.
To extract the information from the trace records in a flexible and powerfull way, Paraver is structured in three levels of modules.
The whole operation of Paraver corresponds to a demand driven evaluation, where the Representation module inquires the semantic module for values and this one asks for the records it needs to the filter.
The Filter module has direct access to the trace and provides to the Semantic module a partial view of the tracefile.
The Semantic module is the key of the expressive power of Paraver. Its role is to generate a numeric value (semantic value) for each object to be represented. For each object, the semantic value is a function of time that is computed from the records that correspond to the object following the corresponding object model structure.
For both programming model objects (workload, application, task and thread) and resources model objects (system, node and CPU) the semantic value is hierarchically computed acording to the general object model structure. This means that for an object of type thread, the semantic value will be computed by processing the records of that thread. For an object of type task, all the semantic values of its constituent threads will be combined by a task function. Similarly, an application function will be applied to all the semantic values of its constituent tasks.
Two additional functions such as sign, div, mod, stacked val can be composed on top of the hierarchically computed value.
The events in the trace that reach the semantic module are passed unaltered to the next module.
Three Representation modules are available: Visualization, textual and analysis. Each of them handles one of the three types of views as described in the introduction.