Skip to content

Latest commit

 

History

History

memnesia

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

memnesia: MPI Memory Consumption Utilities

NOTE TO USERS

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.

Build

cd build &&  CC=mpicc CXX=mpic++ cmake .. && make -j2 && cd -

Run

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

Generating a Report

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

Citing memnesia

@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}
}