Giter VIP home page Giter VIP logo

mpi-bench-scoring's Introduction

mpi-bench-scoring

Reproducibility setup assessing whether the existing MPI correctness benchmarks, MPI-CorrBench and the MPI Bugs Initiative, mirror the MPI usage of real-world HPC codes. Our analysis combines static source text analysis and dynamic MPI call tracing to generate a database for comparison.

Using the tool chain

To generate our coverage data for each correctness benchmark, we need to (1) build our PMPI-based interceptor library to trace MPI usage, (2) modify MPI-CorrBench and (3) MPI Bugs Initiative to execute and analyze their tests with our tooling to generate the static & dynamic traces, (4) use our Python-based MPI usage analysis tool to merge the resulting trace with the statically collected MPI usage database, and execute it again to generate the final coverage data of the HPC data set.

1. Tracing MPI calls: mpi-arg-tracer

The MPI call tracer is a shared lib that needs to be preloaded before running the MPI target code.

  1. Call init.sh to clone & compile the code.
    • This requires Clang (v12) & llvm-symbolizer and Python3 for the PMPI wrapper
  2. Source bashrc to set environment path variables for later steps

2. MPI-CorrBench (COBE)

Requires mpi-arg-tracer & mpi-arg-usage (latter is for static collection in step 2.1)

  1. Source bashrc to set required environment (path) variables
  2. Call init.sh to clone & format the MPI test cases and install the MPI tracer tool.
    • format.py is the formats the code using clang-format.
  3. Run execute.sh to evaluate the benchmark with our MPI tracer and generate dynamic MPI usage data.

2.1 Collect static MPI usage

This step is used to generate static MPI usage data (to be merged with the dynamic) one. It relies only on the mpi-arg-usage tool & the benchmarks test sources.

  1. Call collect_static_data.sh runs our MPI usage analysis tool mpi-arg-usage on the test cases.

3. MPI Bugs Initiative (MBI)

Requires mpi-arg-tracer & mpi-arg-usage (latter is for static collection in step 3.1)

  1. Source bashrc to set required environment (path) variables
  2. Call init.sh to clone project and install the MPI tracer tool.
  3. Run execute.sh to evaluate the benchmark with our MPI tracer and generate dynamic MPI usage data.

3.1 Collect static MPI usage

This step is used to generate static MPI usage data (to be merged with the dynamic) one. It relies only on the mpi-arg-usage tool & the benchmarks test sources.

  1. Call collect_static_data.sh runs our MPI usage analysis tool mpi-arg-usage on the test cases.

4. MPI scoring: mpi-arg-usage

Requires previous steps 1-3.

  1. Source bashrc to set required environment (path) variables
  2. Call init.sh to clone project and install Python package requirements with conda.
  3. Run execute.sh to evaluate the benchmarks MPI usage w.r.t. HPC data set.
    • Initializes HPC data set by extracting the existing tar.gz (refer to mpi-arg-usage),
    • merges static and dynamic data of correctness benchmarks and
    • generates the final plots.

Continuous integration for artifacts

Our tool chain automatically generates data sets and plots for publishing purposes, see CI file.

For each (successful) run, artifacts are attached, see All Workflows:

  • corrbench-trace: Dynamic MPI trace of MPI-CorrBench.
  • mbi-trace: Dynamic MPI trace of MPI Bugs Initiative (with 1s timeout (e.g., deadlocks) to save time).
  • plots: Visualization of scoring MPI usage patterns w.r.t. the HPC data set.

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.