Giter Club home page Giter Club logo

mpitrace's Introduction

This repository contains a collection of tools that are aimed at analysis
of distributed-memory parallel applications written with MPI.  The profiling
interface provided by MPI makes it possible to collect detailed information
about messaging, and it also provides a convenient place to enable other
performance tools, including program sampling via interrupts, or collection
of aggregate values for hardware counter events.  The methods to build and
use these tools are described in separate directories.  A brief overview is
sketched here.  Please consult the README files in each directory for more
information.

================================================================================
Tool : libmpitrace.so   ;   directory = src

purpose : Collect and report information on MPI calls, task placement,
          memory utilization, user and system time.

outputs : text files : mpi_profile.jobid.rank
          optional binary program-sampling outputs : vmon.out.jobid.rank

requires : mpicc with the underlying C compiler set to gcc.

optional : Enable program sampling via the profil() routine.
           Program-sampling requires GNU binutils development files.
           Note : a different program sampling method using hardware counters
           is preferred ... see the section on libhpmprof.so.

build : cd src
        ./configure   (builds only the MPI wrappers)
   or   ./configure --with-vprof --with-binutils=/path/to/binutils
        make libmpitrace.so

typical use :  export LD_PRELOAD=/path/to/libmpitrace.so
               mpirun --np 2048 your.exe
               unset LD_PRELOAD

================================================================================
Tool : libmpihpm.so   ;   directory = src

purpose : Provides the same MPI information as libmpitrace.so, plus
          enables collection and reporting of aggregate values for
          hardware counters.  By default counts are reported from
          MPI_Init() to MPI_Finalize(), but one can instrument the 
          code with calls to HPM_Start("label"); HPM_Stop("label");
          to collect counts for specific code sections.

outputs : text files : mpi_profile.jobid.rank      ... MPI data
                       hpm_job_summary.jobid.group ... counter data

requires : mpicc with the underlying C compiler set to gcc.
           PAPI include and library paths, and a suitable set of
           hardware counters for your system's CPUs.

build : cd src
        ./configure --with-hpm=core   --with-papi=/path/to/papi
   or   ./configure --with-hpm=uncore --with-papi=/path/to/papi
         make libmpihpm.so

typical use :  export LD_PRELOAD=/path/to/libmpihpm.so
               mpirun --np 2048 your.exe
               unset LD_PRELOAD

================================================================================
Tool : libhpmprof.so   ;   directory = hpmprof

purpose : Provides the same MPI information as libmpitrace.so, plus
          enables interrupt-based program sampling via hardware counters.
          This library is the preferred method for program sampling for
          systems that enable user-level access to hardware counters.

outputs :  text files : mpi_profile.jobid.rank      ... MPI data
           binary files : hpm_histogram.jobid.rank  ... pc sampling data

requires : mpicc with the underlying C compiler set to gcc.
           PAPI include and library paths with a suitable set of
           hardware counters for your system's CPUs, and GNU binutils
           development files.

build : cd hpmprof
        ./configure --with-binutils=/path/to/binutils --with-papi=/path/to/papi
        make libhpmprof.so

typical use :  export LD_PRELOAD=/path/to/libhpmprof.so
         mpirun --np 2048 your.exe
         unset LD_PRELOAD
         bfdprof your.exe  hpm_histogram.jobid.rank > source_profile.txt
         annotate_objdump your.exe  hpm_histogram.jobid.rank > asm_profile.txt

================================================================================
Tools : bfdprof  and  annotate_objdump   ;   directory = bfdprof

purpose : These tools are required to analyze outputs generated by either of
          the program-sampling methods.  The bfdprof utility provides function
          and statement-level profile data, and the annotate_objdump utility
          provides profile data at the assembly level.

outputs : text files

requires : GNU binutils development files.

build : cd bfdprof
        ./configure --with-binutils=/path/to/binutils
        make

typical use : bfdprof  your.exe  hpm_histogram.jobid.rank >source_profile.txt
        annotate_objdump your.exe  hpm_histogram.jobid.rank > asm_profile.txt

================================================================================
Alternate builds of libmpitrace.so

directory : ctx   Adds the ability to separately report MPI profile data from
                  different code regions.  The user must annotate the source
                  code and mark start/stop boundaries for each code block of
                  interest.

directory : nvtx  Adds NVIDIA nvtx range markers around entry and exit of each
                  MPI function for graphical display using NVIDIA's visual
                  profiling tools.  This is intended to add insight into the
                  timelines for MPI calls along with GPU kernel execution.

mpitrace's People

Contributors

stevemar avatar walkup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mpitrace's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.