How danielesavino/collbench works
CollBench instruments MPI point-to-point operations inside user-defined collectives, records per-operation timing, gathers rank-local records at the root, and exports JSON for visualization. The graph also preserves the documented profiling toggle and both visualization tools. Source excerpts establish the list, gather, and export implementation; some wiring is documented in the README rather than shown in sampled implementation files.
Main entry points: dist_list.c Record list and gather · init.h Scope and macros · export.c JSON export · tree.py Tree visualizer
Components 13
Profiling API
- Scope and macros
include/CollBench/init.h - Operation records
include/CollBench/bench.h - Profiled MPI calls
include/CollBench/dist_list.h
Recording Runtime
- Record list and gather
src/dist_list.c - Timing and MPI datatype
src/bench.c - JSON export
src/export.c - Error handling
include/CollBench/errors.h
Visualization
- Tree visualizer
scripts/tree.py - Collective visualizer
scripts/butterfly.py
Other components
- MPI application
- Profiling JSON
- Analyst
- Plots
Connections 17
- MPI application → Scope and macros: opens profiling scope
README.MD - MPI application → Profiled MPI calls: instruments MPI calls
README.MD - Scope and macros → Timing and MPI datatype: initializes datatype
README.MD - Scope and macros → Record list and gather: allocates and gathers
include/CollBench/init.h - Scope and macros → JSON export: exports gathered records
include/CollBench/init.h - Profiled MPI calls → Record list and gather: records operations
include/CollBench/dist_list.h - Record list and gather → Timing and MPI datatype: initializes records
src/dist_list.c - Record list and gather → Error handling: checks errors
src/dist_list.c - JSON export → Record list and gather: reads gathered records
src/export.c - JSON export → Timing and MPI datatype: formats operation data
src/export.c - JSON export → Profiling JSON: writes JSON
src/export.c - Analyst → Tree visualizer: visualizes tree data
scripts/tree.py - Analyst → Collective visualizer: visualizes collective data
scripts/butterfly.py - Profiling JSON → Tree visualizer: reads JSON
scripts/tree.py - Profiling JSON → Collective visualizer: reads JSON
scripts/butterfly.py - Tree visualizer → Plots: renders plot
scripts/tree.py - Collective visualizer → Plots: renders plot
scripts/butterfly.py