How It Works


Up: Producing Logfiles Next: The MPI Profiling Interface Previous: Producing Logfiles

A logfile-creation library for parallel programs has a number of requirements. Meeting these requirements is eased by assuming that MPI is available, and we do make that assumption.


CLOG makes a number of compromises in meeting these requirements.
At the end of the run, all processes participate in merging the records by timestamp to create a single logfile. After the last log record is written and postprocessing of local buffers is complete, each process has a linked list of buffers, each containing a large number of log records. The processes form themselves into a binary tree, with (MPI) Process 0 at the root. The processes at the leaves begin by sending their buffers to their parents. Each nonleaf process performs a three-way merge of its own buffer with the buffers arriving from its children. When a merged buffer has been filled, it is sent to its parent. At the root, merged, filled buffers are written to the logfile. MPI is used for all communication. The file is in MPI's ``external-32'' portable format [7], which is the same format used by Java for portability of files, and which makes it portable, but requires byte-swapping on some machines for some fields in the log records.

The post mortem processing, although it makes collection of the logfiles less intrusive, makes jumpshot less useful for debugging, since the logfile is only fully assembled when the program terminates normally. This underscores the fact that Jumpshot is a performance debugging tool rather than a correctness debugging tool.



Up: Producing Logfiles Next: The MPI Profiling Interface Previous: Producing Logfiles