This is a python package which contains tools for processing Recorder traces.
recorder-viz
relies on Recorder and a few python libraries to run.
Please see the document here.
Below are some example graphs generated from the FLASH traces.
The RecorderReader
class contains all infomration about the Recorder traces.
class RecorderReader:
self.GM: instance of GlobalMetadata
self.LMs: list of LocalMetadata objects, one for each rank
self.records: self.records[i] is a list of Record objects of rank i.
GlobalMetadta
, LocalMetadata
and Record
are three Python wrappers of C structures.
class LocalMetadata(Structure):
self.total_records: int
self.num_files: int
self.filemap: set()
self.function_count: []
class RecorderMetadata(Structure):
_fields_ = [
("total_ranks", c_int),
("start_ts", c_double),
("time_resolution", c_double),
("ts_buffer_elements", c_int),
("ts_compression_algo", c_int),
]
class Record(Structure):
_fields_ = [
("tstart", c_double),
("tend", c_double),
("level", c_ubyte),
("func_id", c_ubyte),
("tid", c_int),
("arg_count", c_ubyte),
("args", POINTER(c_char_p)),
]
Here's an example on how to use the provided classes.
from recorder_viz import RecorderReader
reader = RecorderReader("path/to/Recorder-traces-folder")
for rank in range(reader.GM.total_ranks):
LM = reader.LMs[rank]
print("Rank: %d, Number of trace records: %d" %(rank, LM.total_records))