KaMPIng 0.2.1
(Near) zero-overhead MPI wrapper for C++
Loading...
Searching...
No Matches
mpi_datatype.hpp File Reference

Utility that maps C++ types to types that can be understood by MPI. More...

#include <type_traits>
#include <mpi.h>
#include "kamping/environment.hpp"
#include "kamping/kassert/kassert.hpp"
#include "kamping/noexcept.hpp"
#include "kamping/types/builtin_types.hpp"
#include "kamping/types/contiguous_type.hpp"
#include "kamping/types/detail/type_helpers.hpp"
#include "kamping/types/mpi_type_traits.hpp"
#include "kamping/types/scoped_datatype.hpp"
#include "kamping/types/struct_type.hpp"
Include dependency graph for mpi_datatype.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  kamping::mpi_type_traits< T, Enable >
 The type trait that maps a C++ type T to an MPI_Datatype for full KaMPIng. More...
 
struct  kamping::mpi_type_traits< T, std::enable_if_t< has_auto_dispatched_type_v< T > > >
 Partial specialization of mpi_type_traits for types handled by type_dispatcher. More...
 
struct  kamping::has_static_type< typename, Enable >
 Check if the type has a static type definition, i.e. kamping::mpi_type_traits is defined. More...
 
struct  kamping::has_static_type< T, std::void_t< decltype(mpi_type_traits< T >::data_type())> >
 Check if the type has a static type definition, i.e. kamping::mpi_type_traits is defined. More...
 
struct  kamping::kamping_lookup
 Lookup policy for KaMPIng that resolves MPI_Datatypes via kamping::mpi_type_traits. More...
 

Typedefs

template<typename T , size_t N>
using kamping::contiguous_type = types::contiguous_type<T, N, kamping_lookup>
 Constructs a contiguous MPI type of N elements of type T, using kamping_lookup to resolve element types (includes the byte-serialization fallback for trivially-copyable types).
 
template<typename T >
using kamping::struct_type = types::struct_type<T, kamping_lookup>
 Constructs an MPI struct type for T, using kamping_lookup to resolve field types (includes the byte-serialization fallback for trivially-copyable types).
 

Functions

template<typename T >
auto kamping::type_dispatcher ()
 Maps a C++ type T to a type trait for constructing an MPI_Datatype.
 
template<typename T >
MPI_Datatype kamping::construct_and_commit_type ()
 Register a new MPI_Datatype for T with the MPI environment. It will be freed when the environment is finalized.
 
template<typename T >
MPI_Datatype kamping::mpi_datatype () KAMPING_NOEXCEPT
 Translate type T to an MPI_Datatype using the type defined via mpi_type_traits.
 

Variables

template<typename T >
static constexpr bool kamping::has_auto_dispatched_type_v
 Whether the type is handled by the auto-dispatcher type_dispatcher, i.e. whether mpi_type_traits is defined without a user-provided specialization.
 
template<typename T >
static constexpr bool kamping::has_static_type_v = has_static_type<T>::value
 true if kamping::mpi_type_traits provides a data_type() function.
 

Detailed Description

Utility that maps C++ types to types that can be understood by MPI.