Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
VariableParallelOperationBase.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/* VariableParallelOperationBase.h (C) 2000-2025 */
9/* */
10/* Classe de base des opérations parallèle sur des variables. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_PARALLEL_VARIABLEPARALLELOPERATION_H
13#define ARCANE_CORE_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
23#include "arcane/core/VariableCollection.h"
24
25#include "arcane/core/IVariableParallelOperation.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane::Parallel
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
40class ARCANE_CORE_EXPORT VariableParallelOperationBase
41: public TraceAccessor
43{
44 public:
45
46 VariableParallelOperationBase(IParallelMng* pm);
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;
73};
74
75/*---------------------------------------------------------------------------*/
76/*---------------------------------------------------------------------------*/
77
78}
79
80/*---------------------------------------------------------------------------*/
81/*---------------------------------------------------------------------------*/
82
83#endif
84
Déclarations des types généraux de Arcane.
Fichier contenant les déclarations concernant le modèle de programmation par échange de message.
Tableau d'items de types quelconques.
Interface d'une opération sur une donnée.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'une classe d'opérations parallèle sur des variables.
Interface d'une variable.
Definition IVariable.h:39
UniqueArray< SharedArray< ItemLocalId > > m_items_to_send
Liste des entités à envoyer à chaque processeur.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur 1D de données avec sémantique par valeur (style STL).
Implémentation de la concurrence.