Currently, memnesia is missing many MPI wrappers, so unless your application uses only a subset of the calls found in trace/memnesia-pmpi.cc, then statistics generated by memnesia will be inaccurate.
cd build && CC=mpicc CXX=mpic++ cmake .. && make -j2 && cd -
Running under memnesia supervision is straightforward for dynamically linked
executables: simply LD_PRELOAD
the memnesia-trace.so
library that is
generated at build time.
For example,
LD_PRELOAD=/path/to/memnesia-trace.so mpirun -n 2 ./supermagic
If memnesia instrumentation was successfully loaded, then the following banner will be displayed:
#
#
# _______ _______________ _________________________(_)_____ _
# __ __ `__ \ _ \_ __ `__ \_ __ \ _ \_ ___/_ /_ __ `/
# _ / / / / / __/ / / / / / / / / __/(__ )_ / / /_/ /
# /_/ /_/ /_/\___//_/ /_/ /_//_/ /_/\___//____/ /_/ \__,_/
#
#
At the end of the application's execution, memnesia will emit the path of the newly generated output data. For example,
#
# memnesia memory consumption analysis complete...
#
# Report written to /home/samuel/supermagic-20210812-132413.memnesia
Install script prerequisites:
python3 -m pip install --user matplotlib
Run memnesia-report:
/path/to/memnesia-report /path/to/output_data.memnesia
If successful, the path to the newly generated report will be displayed. For example,
# Report written to /home/samuel/supermagic-2PE-memnesia-report
@article{gutierrez:ccpe:2019,
title={{On the Memory Attribution Problem: A Solution and Case Study Using MPI}},
author={Samuel K. Guti\'{e}rrez and Dorian C. Arnold and Kei Davis and Patrick
McCormick},
journal={Journal on Concurrency and Computation: Practice and Experience},
pages={e5159},
publisher={Wiley Online Library},
year={2019},
month={February},
doi={https://doi.org/10.1002/cpe.5159}
}