Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
MessageRank.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* MessageRank.h (C) 2000-2020 */
9/* */
10/* Rang d'un message. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_MESSAGEPASSING_MESSAGERANK_H
13#define ARCCORE_MESSAGEPASSING_MESSAGERANK_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include <iosfwd>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
25{
26/*!
27 * \brief Rang d'un message.
28 *
29 * Le type exact du rang dépend de l'implémentation. Pour être le plus
30 * générique possible, on utilise le type 'Int32' qui est aussi celui
31 * utilisé par MPI.
32 *
33 * Il existe trois valeurs spéciales pour le rang:
34 * - la valeur par défaut
35 * - la valeur procNullRank() qui correspond à MPI_PROC_NULL
36 * - la valeur anySourceRang() qui correspond à MPI_ANY_SOURCE
37 *
38 * \sa PointToPointMessageInfo
39 */
40class ARCCORE_MESSAGEPASSING_EXPORT MessageRank
41{
42 public:
43
44 /*!
45 * \brief Rang par défaut.
46 *
47 * La signification du rang par défaut dépend du type de message.
48 * \sa PointToPointMessageInfo.
49 */
51 : m_rank(A_NULL_RANK)
52 {}
53
54 explicit MessageRank(Int32 rank)
55 : m_rank(rank)
56 {}
57
58 friend bool operator==(const MessageRank& a, const MessageRank& b)
59 {
60 return a.m_rank == b.m_rank;
61 }
62 friend bool operator!=(const MessageRank& a, const MessageRank& b)
63 {
64 return a.m_rank != b.m_rank;
65 }
66 friend bool operator<(const MessageRank& a, const MessageRank& b)
67 {
68 return a.m_rank < b.m_rank;
69 }
70
71 //! Valeur du rang
72 Int32 value() const { return m_rank; }
73
74 //! Positionne la valeur du rang
75 void setValue(Int32 rank) { m_rank = rank; }
76
77 //! Vrai si rang non initialisé correspondant au rang par défaut
78 bool isNull() const { return m_rank == A_NULL_RANK; }
79
80 //! Vrai si rang correspondant à anySourceRank()
81 bool isAnySource() const { return m_rank == A_ANY_SOURCE_RANK; }
82
83 //! Vrai si rang correspondant à procNullRank()
84 bool isProcNull() const { return m_rank == A_PROC_NULL_RANK; }
85
86 //! Rang correspondant à MPI_ANY_SOURCE
87 static MessageRank anySourceRank() { return MessageRank(A_ANY_SOURCE_RANK); }
88
89 //! Rang correspondant à MPI_PROC_NULL
90 static MessageRank procNullRank() { return MessageRank(A_PROC_NULL_RANK); }
91
92 void print(std::ostream& o) const;
93 friend inline std::ostream& operator<<(std::ostream& o, const MessageRank& tag)
94 {
95 tag.print(o);
96 return o;
97 }
98
99 private:
100
101 Int32 m_rank;
102};
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
107} // End namespace Arccore::MessagePassing
108
109/*---------------------------------------------------------------------------*/
110/*---------------------------------------------------------------------------*/
111
112#endif
113
Déclarations générales de la composante 'message_passing'.
static MessageRank anySourceRank()
Rang correspondant à MPI_ANY_SOURCE.
Definition MessageRank.h:87
void setValue(Int32 rank)
Positionne la valeur du rang.
Definition MessageRank.h:75
Int32 value() const
Valeur du rang.
Definition MessageRank.h:72
static MessageRank procNullRank()
Rang correspondant à MPI_PROC_NULL.
Definition MessageRank.h:90
bool isAnySource() const
Vrai si rang correspondant à anySourceRank()
Definition MessageRank.h:81
bool isNull() const
Vrai si rang non initialisé correspondant au rang par défaut.
Definition MessageRank.h:78
bool isProcNull() const
Vrai si rang correspondant à procNullRank()
Definition MessageRank.h:84
bool operator<(const Item &item1, const Item &item2)
Compare deux entités.
Definition Item.h:533
Espace de nommage contenant les types et déclarations qui gèrent le mécanisme de parallélisme par éch...
std::int32_t Int32
Type entier signé sur 32 bits.