KaMPIng 0.1.0
(Near) zero-overhead C++ MPI bindings.
Loading...
Searching...
No Matches
named_parameter_types.hpp
Go to the documentation of this file.
1// This file is part of KaMPIng.
2//
3// Copyright 2021-2023 The KaMPIng Authors
4//
5// KaMPIng is free software : you can redistribute it and/or modify it under the terms of the GNU Lesser General Public
6// License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
7// version. KaMPIng is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
8// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
9// for more details.
10//
11// You should have received a copy of the GNU Lesser General Public License along with KaMPIng. If not, see
12// <https://www.gnu.org/licenses/>.
13
14/// @file
15/// @brief File containing the parameter types used by the KaMPIng library
16
17#pragma once
18
19namespace kamping {
20/// @brief Internal namespace marking the code that is not user-facing.
21///
22namespace internal {
23
24/// @addtogroup kamping_utility
25/// @{
26
27/// @brief Each input parameter to one of the \c MPI calls wrapped by KaMPIng needs to has one of the following tags.
28///
29/// The \c MPI calls wrapped by KaMPIng do not rely on the restricting positional parameter paradigm but use named
30/// parameters instead. The ParameterTypes defined in this enum are necessary to implement this approach, as KaMPIng
31/// needs to identify the purpose of each (unordered) argument.
32/// Note that not all enum entries are necessary in each wrapped \c MPI call.
33enum class ParameterType {
34 send_buf, ///< Tag used to represent a send buffer, i.e. a buffer containing
35 ///< the data elements to be sent via \c MPI.
36 recv_buf, ///< Tag used to represent a receive buffer, i.e. a buffer
37 ///< containing the data elements to be received via \c MPI.
38 send_recv_buf, ///< Tag used to represent a send and receive buffer, i.e. a
39 ///< buffer containing the data elements to be sent or received
40 ///< (depending on the process' rank) via \c MPI.
41 recv_counts, ///< Tag used to represent a receive counts buffer, i.e. a buffer
42 ///< containing the receive counts from the involved PEs.
43 recv_count, ///< Tag used to represent the number of elements to be received.
44 recv_displs, ///< Tag used to represent a receive displacements buffer, i.e. a
45 ///< buffer containing the receive displacements from the
46 ///< involved PEs.
47 send_counts, ///< Tag used to represent a send counts buffer, i.e. a buffer
48 ///< containing the send counts from the involved PEs.
49 send_count, ///< Tag used to represent the number of elements to be sent.
50 send_displs, ///< Tag used to represent a send displacements buffer, i.e. a
51 ///< buffer containing the send displacements from the involved
52 ///< PEs.
53 send_recv_count, ///< Tag used to represent the number of elements to be sent or
54 ///< received.
55 op, ///< Tag used to represent a reduce operation in a \c MPI call.
56 source, ///< Tag used to represent the sending PE in a \c MPI call.
57 destination, ///< Tag used to represent the receiving PE in a \c MPI call.
58 status, ///< Tag used to represent the status in a \c MPI call.
59 statuses, ///< Tag used to represent a container of statuses in a \c MPI call.
60 request, ///< Tag used to represent an \c MPI_Request.
61 root, ///< Tag used to represent the root PE in a \c MPI collectives call.
62 tag, ///< Tag used to represent the message tag in a \c MPI call.
63 send_mode, ///< Tag used to represent the send mode used by a send operation.
64 values_on_rank_0, ///< Tag used to represent the value of the exclusive scan
65 ///< operation on rank 0.
66 send_type, ///< Tag used to represent a send type in an \c MPI call.
67 recv_type, ///< Tag used to represent a recv type in an \c MPI call.
68 send_recv_type, ///< Tag used to represent a send and/or recv type in an \c MPI call. This parameter type is used
69 ///< for example in \c MPI collective operations like \c MPI_Bcast where the corresponding \c MPI
70 ///< function expects only one \c MPI_Datatype parameter of type \c MPI_Datatype.
71};
72/// @}
73} // namespace internal
74} // namespace kamping
ParameterType
Each input parameter to one of the MPI calls wrapped by KaMPIng needs to has one of the following tag...
Definition named_parameter_types.hpp:33
@ request
Tag used to represent an MPI_Request.
@ op
Tag used to represent a reduce operation in a MPI call.
@ recv_count
Tag used to represent the number of elements to be received.
@ source
Tag used to represent the sending PE in a MPI call.
@ send_mode
Tag used to represent the send mode used by a send operation.
@ recv_type
Tag used to represent a recv type in an MPI call.
@ root
Tag used to represent the root PE in a MPI collectives call.
@ destination
Tag used to represent the receiving PE in a MPI call.
@ status
Tag used to represent the status in a MPI call.
@ send_type
Tag used to represent a send type in an MPI call.
@ statuses
Tag used to represent a container of statuses in a MPI call.
@ tag
Tag used to represent the message tag in a MPI call.
@ send_count
Tag used to represent the number of elements to be sent.