Skip to content

A C++ static library for fine-grain profiling MPI programs.

License

Notifications You must be signed in to change notification settings

dle8/MPI-Profiler

Repository files navigation

A C++ static library for fine-grain profiling MPI programs. Measure each MPI routines & CPU time for each process with better visualization.

📚 Table of contents

⚙ Technical stack

🚀 Features

  • Time MPI routines used in linked programs
  • Render timed result in mpi_record.<process_id>

⬇ Installation

  • In order to run MPI, you should have GNU C++ compiler (g++).
    • For Windows users, you should start by installing MinGW Package Installer
    • For Mac users, XCode has already (most of the time) had g++ pre-installed to you
    • For Ubuntu users, you can download Homebrew and use the following command brew install gcc
  • MPICC/C++ is included with GNU package.

📋 Usage

  • To compile and get the static library mpi_timer.a, run make
  • To profile your program, compile & run it together with the generated .a file and supply number of threads:
    • For example, to profile mpi_test.cpp running with 4 tasks (processes), either way works:
      make all SRC=mpi_test.cpp NP=4
      or
      mpic++ mpi_timer.a mpi_test.cpp -o run && mpirun ./run -np 4
  • After compile & run, each timing result for each process p will be in mpi_record.p file
  • To clean object files, run make clean
  • To clean processes' records, run make clean_all

👨‍💻 Contributors

  • Dung Tuan Le
    Computer Science major.
    University of Rochester '21.

📄 License

Kronos is MIT licensed.

About

A C++ static library for fine-grain profiling MPI programs.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published