Arcane  4.2.3.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IMessagePassingMng.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* IMessagePassingMng.h (C) 2000-2026 */
9/* */
10/* Interface du gestionnaire des échanges de messages. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_MESSAGEPASSING_IMESSAGEPASSINGMNG_H
13#define ARCCORE_MESSAGEPASSING_IMESSAGEPASSINGMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Détruit l'instance de passage de messages \a p.
29 *
30 * \warning Ceci ne doit être utilisé qu'avec les fonctions obsolètes
31 * qui ne retournent pas d'instances de Ref<IMessagePassingMng> et
32 * retournent seulement un IMessagePassingMng*.
33 */
34extern "C++" void ARCCORE_MESSAGEPASSING_EXPORT
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39/*!
40 * \brief Interface du gestionnaire des échanges de messages.
41 *
42 * Cette classe utilise une sémantique par référence et les instances
43 * sont automatiquement détruites lorsque cela est nécessaire.
44 *
45 * La plupart des opérations sur cette classe utilisent des fonctions libres
46 * (comme mpSend() ou mpReceive()) qui sont définies dans le fichier 'Messages.h'.
47 *
48 * %Arcane fournit plusieurs implémentations pour le passage de messages, en
49 * utilisant MPI, le passage de messages en mémoire partagée ou le passage de
50 * messages hybride (MPI + mémoire partagée). Lorsqu'on utilise MPI, il est
51 * possible de créer une instance de cette classe en utilisant la classe
52 * StandaloneMpiMessagePassingMng.
53 */
54class ARCCORE_MESSAGEPASSING_EXPORT IMessagePassingMng
55{
56 friend void ARCCORE_MESSAGEPASSING_EXPORT mpDelete(IMessagePassingMng*);
58
59 public:
60
61 virtual ~IMessagePassingMng() = default;
62
63 public:
64
65 //! Rang de cette instance dans le communicateur
66 virtual Int32 commRank() const = 0;
67
68 //! Nombre d'instance dans le communicateur
69 virtual Int32 commSize() const = 0;
70
71 //! Interface pour collecter les temps d'exécution (peut être nul)
72 virtual ITimeMetricCollector* timeMetricCollector() const = 0;
73
74 //! Gestionnaire de trace associé à cette instance.
75 virtual ITraceMng* traceMng() const =0;
76
77 /*!
78 * \brief Communicateur MPI associé à cette instance.
79 *
80 * Le communicateur n'est valide que si l'instance est associée à une
81 * implémentation MPI. Vous pouvez convertir un communicateur en communicateur
82 * MPI en utilisant les méthodes d'aide toMpiCommunicator() et
83 * fillMpiCommunicatorIfValid() ou comme ceci :
84 *
85 * \code
86 * IMessagePassingMng* mpm = ...;
87 * Communicator comm = mpm->communicator();
88 * if (comm.isValid())
89 * MPI_Comm mpi_comm = static_cast<MPI_Comm>(comm).
90 * \endcode
91 */
92 virtual Communicator communicator() const;
93
94 public:
95
96 virtual IDispatchers* dispatchers() = 0;
97};
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102} // End namespace Arccore::MessagePassing
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
107#endif
Déclarations générales de la composante 'message_passing'.
#define ARCCORE_DECLARE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour déclarer les méthodes virtuelles gérant les compteurs de référence.
Interface du gestionnaire de traces.
Communicateur pour l'échange de message.
Interface du conteneur des dispatchers.
Interface du gestionnaire des échanges de messages.
virtual ITraceMng * traceMng() const =0
Gestionnaire de trace associé à cette instance.
friend void mpDelete(IMessagePassingMng *)
Détruit l'instance de passage de messages p.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual Communicator communicator() const
Communicateur MPI associé à cette instance.
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
virtual ITimeMetricCollector * timeMetricCollector() const =0
Interface pour collecter les temps d'exécution (peut être nul).
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
void mpDelete(IMessagePassingMng *p)
Détruit l'instance de passage de messages p.
std::int32_t Int32
Type entier signé sur 32 bits.