Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Parallel.h
Aller à la documentation de ce fichier.
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* Parallel.h (C) 2000-2024 */
9/* */
10/* Espace de nom des types gérant le parallélisme. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_PARALLEL_H
13#define ARCANE_CORE_PARALLEL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/utils/ArrayView.h"
19
21#include "arccore/message_passing/Request.h"
22#include "arccore/message_passing/Communicator.h"
23#include "arccore/message_passing/PointToPointMessageInfo.h"
24#include "arccore/message_passing/IControlDispatcher.h"
25
27
28#define ARCANE_BEGIN_NAMESPACE_PARALLEL \
29 namespace Parallel \
30 {
31#define ARCANE_END_NAMESPACE_PARALLEL }
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36namespace Arcane
37{
43}
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
47/*!
48 * \brief Types des classes du parallélisme.
49 */
50namespace Arcane::Parallel
51{
52
57
60using Arccore::MessagePassing::WaitAll;
63
64using Arccore::MessagePassing::Blocking;
66using Arccore::MessagePassing::NonBlocking;
67
69using Arccore::MessagePassing::MsgReceive;
70using Arccore::MessagePassing::MsgSend;
71
81
83
84class IStat;
85}
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89/*!
90 * \brief Déclarations des types et méthodes utilisés par les mécanismes
91 * d'échange de messages.
92 */
94{
95/*!
96 * \brief Effectue une barrière nommée de nom \a name
97 *
98 * Effectue une barrière de nom \a name en utilisant le gestionnaire
99 * \a pm.
100 *
101 * Tous les rangs de \a pm bloquent dans cette barrière et vérifient
102 * que tous les rangs utilisent le même nom de barrière. Si un des rangs
103 * utilise un nom différent une exception est levée.
104 *
105 * Cette opération permet de vérifier que tous les rangs utilisent
106 * la même barrière contrairement à l'opération IParallelMng::barrier().
107 *
108 * \note Seuls les 1024 premiers caractères de \a name sont utilisés.
109 */
110extern "C++" ARCANE_CORE_EXPORT void
111namedBarrier(IParallelMng* pm, const String& name);
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115/*!
116 * \brief Filtre les chaînes de caractères communes à tous les rangs de \a pm.
117 *
118 * Prend en entrée une liste \a input_string de chaînes de caractères et retourne
119 * dans \a common_strings celles qui sont communes à tous les rangs de \a pm.
120 * Les chaînes de caractères retournées dans \a common_strings sont triées
121 * par ordre alphabétique.
122 */
123extern "C++" ARCANE_CORE_EXPORT void
125 Array<String>& common_strings);
126
127/*---------------------------------------------------------------------------*/
128/*---------------------------------------------------------------------------*/
129/*!
130 * \brief Écrit dans \a tm la date et la mémoire consommée.
131 *
132 * L'opération est collective sur \a pm et affiche la mémoire minimimale,
133 * moyenne et maximale consommée ainsi que les rangs de ceux qui consomment
134 * le moins et le plus de mémoire.
135 */
136extern "C++" ARCANE_CORE_EXPORT void
138
139/*---------------------------------------------------------------------------*/
140/*---------------------------------------------------------------------------*/
141
142} // namespace Arcane::MessagePassing
143
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146
147namespace Arcane
148{
149
150/*---------------------------------------------------------------------------*/
151/*---------------------------------------------------------------------------*/
152
153inline std::ostream&
154operator<<(std::ostream& o, const Parallel::Request prequest)
155{
156 prequest.print(o);
157 return o;
158}
159
160/*---------------------------------------------------------------------------*/
161/*---------------------------------------------------------------------------*/
162
163} // End namespace Arcane
164
165/*---------------------------------------------------------------------------*/
166/*---------------------------------------------------------------------------*/
167
168#endif
169
Fichier de configuration d'Arcane.
Déclarations des types généraux de Arcane.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Classe de base des vecteurs 1D de données.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
Communicateur pour l'échange de message.
Interface du gestionnaire des échanges de messages.
Interface d'un créateur de requête.
Definition Request.h:52
Informations sur la source d'un message.
Informations pour envoyer/recevoir un message point à point.
Requête d'un message.
Definition Request.h:77
Chaîne de caractères unicode.
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
Definition Parallel.h:94
void namedBarrier(IParallelMng *pm, const String &name)
Effectue une barrière nommée de nom name.
Definition Parallel.cc:59
void dumpDateAndMemoryUsage(IParallelMng *pm, ITraceMng *tm)
Écrit dans tm la date et la mémoire consommée.
Definition Parallel.cc:162
void filterCommonStrings(IParallelMng *pm, ConstArrayView< String > input_strings, Array< String > &common_strings)
Filtre les chaînes de caractères communes à tous les rangs de pm.
Definition Parallel.cc:93
Implémentation de la concurrence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::ostream & operator<<(std::ostream &ostr, eItemKind item_kind)
Opérateur de sortie sur un flot.
eBlockingType
Type indiquant si un message est bloquant ou non.
ePointToPointMessageType
Type de message point à point.
@ WaitSome
Attend que tous les messages de la liste soient traités.
@ TestSome
Attend que au moins un message de la liste soit traité
eReduceType
Types des réductions supportées.
@ ReduceMin
Minimum des valeurs.
@ ReduceSum
Somme des valeurs.
@ ReduceMax
Maximum des valeurs.