Arcane  v4.1.7.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ParallelMngUtils.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/* ParallelMngUtils.h (C) 2000-2026 */
9/* */
10/* Fonctions utilitaires associées aux 'IParallelMng'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_PARALLELMNGUTILS_H
13#define ARCANE_CORE_PARALLELMNGUTILS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24/*!
25 * \brief Fonctions utilitaires associées à IParallelMng.
26 */
28{
29/*!
30 * \brief Retourne une opération pour récupérer les valeurs d'une variable
31 * sur les entités d'un autre sous-domaine.
32 */
33extern "C++" ARCANE_CORE_EXPORT Ref<IGetVariablesValuesParallelOperation>
35
36//! Retourne une opération pour transférer des valeurs entre rangs.
37extern "C++" ARCANE_CORE_EXPORT Ref<ITransferValuesParallelOperation>
38createTransferValuesOperationRef(IParallelMng* pm);
39
40//! Retourne une interface pour transférer des messages entre rangs
41extern "C++" ARCANE_CORE_EXPORT Ref<IParallelExchanger>
42createExchangerRef(IParallelMng* pm);
43
44/*!
45 * \brief Retourne une interface pour synchroniser des
46 * variables sur le groupe de la famille \a family
47 */
48extern "C++" ARCANE_CORE_EXPORT Ref<IVariableSynchronizer>
49createSynchronizerRef(IParallelMng* pm, IItemFamily* family);
50
51/*!
52 * \brief Retourne une interface pour synchroniser des
53 * variables sur le groupe \a group.
54 */
55extern "C++" ARCANE_CORE_EXPORT Ref<IVariableSynchronizer>
56createSynchronizerRef(IParallelMng* pm, const ItemGroup& group);
57
58/*!
59 * \brief Créé une instance contenant les infos sur la topologie des rangs de ce gestionnnaire.
60 *
61 * Cette opération est collective.
62 */
63extern "C++" ARCANE_CORE_EXPORT Ref<IParallelTopology>
64createTopologyRef(IParallelMng* pm);
65
66/*!
67 * \brief Créé un nouveau gestionnaire de parallélisme pour un sous-ensemble
68 * des rangs.
69 *
70 * Cette opération est collective et est équivalent à MPI_Comm_split.
71 *
72 * Les rangs dont \a color vaut la même valeur seront dans le même communicateur.
73 * \a key permet d'ordonner les rangs dans le sous-communicateur créé. S'il vaut
74 * pm->commRank() alors les rangs dans le sous-communicateur auront le même ordre
75 * que dans \a pm.
76 *
77 * * Si \a color est négatif, alors le rang actuel ne sera associé à aucun
78 * communicateur et la valeur retournée sera nulle.
79 */
80extern "C++" ARCANE_CORE_EXPORT Ref<IParallelMng>
81createSubParallelMngRef(IParallelMng* pm, Int32 color, Int32 key);
82
83/*!
84 * \brief Créé un message de sérialisation non bloquant en envoi au rang \a rank.
85 *
86 * Le message est traité uniquement lors de l'appel à IParallelMng::processMessages().
87 */
88extern "C++" ARCANE_CORE_EXPORT Ref<ISerializeMessage>
90
91/*!
92 * \brief Créé un message de sérialisation non bloquant en réception du rang \a rank.
93 *
94 * Le message est traité uniquement lors de l'appel à IParallelMng::processMessages().
95 */
96extern "C++" ARCANE_CORE_EXPORT Ref<ISerializeMessage>
98
99/*!
100 * \brief Fonction permettant de savoir si le mode fenêtre en mémoire partagée
101 * est supporté et si son utilisation est possible.
102 *
103 * Appel collectif.
104 *
105 * Cette fonction peut être utile pour l'utilisation des classes :
106 * - MachineShMemWin(Base)
107 * - ContigMachineShMemWin(Base)
108 * - MachineShMemWinVariable...
109 *
110 * \return true si les classes ci-dessus peut être utilisées.
111 */
112extern "C++" ARCANE_CORE_EXPORT bool
114
115/*---------------------------------------------------------------------------*/
116/*---------------------------------------------------------------------------*/
117
118} // End namespace Arcane::ParallelMngUtils
119
120/*---------------------------------------------------------------------------*/
121/*---------------------------------------------------------------------------*/
122
123#endif
Déclarations des types généraux de Arcane.
Fichier contenant les déclarations concernant le modèle de programmation par échange de message.
Déclarations des types utilisés dans Arcane.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Référence à une instance.
Fonctions utilitaires associées à IParallelMng.
Ref< ISerializeMessage > createSendSerializeMessageRef(IParallelMng *pm, Int32 rank)
Créé un message de sérialisation non bloquant en envoi au rang rank.
Ref< IParallelMng > createSubParallelMngRef(IParallelMng *pm, Int32 color, Int32 key)
Créé un nouveau gestionnaire de parallélisme pour un sous-ensemble des rangs.
Ref< IParallelExchanger > createExchangerRef(IParallelMng *pm)
Retourne une interface pour transférer des messages entre rangs.
Ref< IGetVariablesValuesParallelOperation > createGetVariablesValuesOperationRef(IParallelMng *pm)
Retourne une opération pour récupérer les valeurs d'une variable sur les entités d'un autre sous-doma...
Ref< ITransferValuesParallelOperation > createTransferValuesOperationRef(IParallelMng *pm)
Retourne une opération pour transférer des valeurs entre rangs.
Ref< IParallelTopology > createTopologyRef(IParallelMng *pm)
Créé une instance contenant les infos sur la topologie des rangs de ce gestionnnaire.
bool isMachineShMemWinAvailable(IParallelMng *pm)
Fonction permettant de savoir si le mode fenêtre en mémoire partagée est supporté et si son utilisati...
Ref< ISerializeMessage > createReceiveSerializeMessageRef(IParallelMng *pm, Int32 rank)
Créé un message de sérialisation non bloquant en réception du rang rank.
Ref< IVariableSynchronizer > createSynchronizerRef(IParallelMng *pm, IItemFamily *family)
Retourne une interface pour synchroniser des variables sur le groupe de la famille family.
std::int32_t Int32
Type entier signé sur 32 bits.