Arcane  v3.16.0.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-2025 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-2025 */
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/*---------------------------------------------------------------------------*/
101
102} // End namespace Arcane::ParallelMngUtils
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
107#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.
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.