next up previous
Next: Basic Outline of MPITrace Up: Code Overview Previous: Umpire Overview

Relevant Data Structures

Since this project only involves modifying some existing code to add the timing functionality, we do not have to review the entire code. A top down approach to code understanding is followed to understand all relevant sections. Similarly not all data structures need to be analysed or understood. Consequently the relevant data structures are explained below.

replay_op : This data structure is defined in opstruct.h. It is the structure which records the parameters of the MPI call. All parameters required to run a dummy replay of the original MPI call are stored in this structure as members. The structure makes some pointer references to allocated memories.

In this project we do not have to access any of the existing fields from this data structure.

rsd_node : This data structure is a node for a doubly linked list that is used in rsd_queue structures. The rsd_node structure abstracts one step in an MPITrace call sequence. The rsd_node may represent multiple MPI calls compressed into a single node. All MPI calls have to be similar i.e. we cannot compress an MPI_Send and an MPI_Receive into a single node. rsd_node is the data structure which is output in the final trace file to represent one element in the compressed system.

The rsd_node structure contains a replay_op object. This object stores the relevant paramters of an MPI call. It also contains information relevant for matching and prsd information (prsd_stack), which is necessary for internode compression and for nested loops.

rsd_queue : The rsd_queue structure is a wrapper around the doubly-linked list of rsd_nodes. It contains head and tail pointers to the tail.


next up previous
Next: Basic Outline of MPITrace Up: Code Overview Previous: Umpire Overview
Blazing Demon 2006-11-30