KaMPIng 0.1.1
Flexible and (near) zero-overhead C++ bindings for MPI
Loading...
Searching...
No Matches
KaMPIng Documentation Overview

This is KaMPIng [kampɪŋ], a (near) zero-overhead MPI wrapper for modern C++.

It covers the whole range of abstraction levels from low-level MPI calls to convenient STL-style bindings, where most parameters are inferred from a small subset of the full parameter set. This allows for both rapid prototyping and fine-tuning of distributed code with predictable runtime behavior and memory management.

Using template-metaprogramming, only code paths required for computing parameters not provided by the user are generated at compile time, which results in (near) zero-overhead bindings.

KaMPIng is developed at the Algorithm Engineering Group at Karlsruhe Institute of Technology.

First Example: (All)gathering an std::vector

#include "kamping/communicator.hpp"
#include "kamping/collectives/allgather.hpp"
std::vector<int> input(comm.rank(), comm.rank_signed());
auto const result = comm.allgatherv(send_buf(input));
Wrapper for MPI communicator providing access to rank() and size() of the communicator....
Definition communicator.hpp:49
size_t rank() const
Rank of the current MPI process in the communicator as size_t.
Definition communicator.hpp:155
int rank_signed() const
Rank of the current MPI process in the communicator as int.
Definition communicator.hpp:149
Wrapper for MPI functions that don't require a communicator. If the template parameter init_finalize_...
Definition environment.hpp:52
auto allgatherv(Args... args) const
Wrapper for MPI_Allgatherv.
Definition allgather.hpp:326
auto send_buf(internal::ignore_t< Data > ignore)
Generates a dummy send buf that wraps a nullptr.
Definition named_parameters.hpp:51

See allgatherv_example.cpp and the other files in examples directory for more details.

Overview and Design

Functionality

Dependencies

  • Building this documentation requires Doxygen 1.10.0.

Guidelines