Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
VariableParallelOperationBase.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* VariableParallelOperationBase.h (C) 2000-2023 */
9/* */
10/* Classe de base des opérations parallèle sur des variables. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_PARALLEL_VARIABLEPARALLELOPERATION_H
13#define ARCANE_PARALLEL_VARIABLEPARALLELOPERATION_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/List.h"
18#include "arcane/utils/Array.h"
19#include "arcane/utils/TraceAccessor.h"
20
21#include "arcane/Parallel.h"
22#include "arcane/ArcaneTypes.h"
23#include "arcane/VariableCollection.h"
24
25#include "arcane/IVariableParallelOperation.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane::Parallel
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35/*!
36 * \brief Interface d'une classe d'opérations parallèle sur des variables.
37 *
38 Ces opérations sont collectives.
39 */
40class ARCANE_CORE_EXPORT VariableParallelOperationBase
41: public TraceAccessor
43{
44 public:
45
47 virtual ~VariableParallelOperationBase() {} //!< Libère les ressources.
48
49 public:
50
51 void build() override {}
52
53 public:
54
55 void setItemFamily(IItemFamily* family) override;
56 IItemFamily* itemFamily() override;
57 void addVariable(IVariable* variable) override;
58 void applyOperation(IDataOperation* operation) override;
59
60 protected:
61
62 Array<SharedArray<ItemLocalId>>& _itemsToSend() { return m_items_to_send; }
63
64 virtual void _buildItemsToSend() = 0;
65
66 private:
67
68 IParallelMng* m_parallel_mng;
69 IItemFamily* m_item_family;
70 VariableList m_variables;
71 //! Liste des entités à envoyer à chaque processeur
73};
74
75/*---------------------------------------------------------------------------*/
76/*---------------------------------------------------------------------------*/
77
78}
79
80/*---------------------------------------------------------------------------*/
81/*---------------------------------------------------------------------------*/
82
83#endif
84
Interface d'une famille d'entités.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'une classe d'opérations parallèle sur des variables.
Collection de variables.
Classe de base des vecteurs 1D de données.
Vecteur 1D de données avec sémantique par valeur (style STL).
Implémentation de la concurrence.