Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshMaterialVariableSynchronizer.h
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/* MeshMaterialVariableSynchronizer.h (C) 2000-2024 */
9/* */
10/* Synchroniseur de variables matériaux. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_MESHMATERIALVARIABLESYNCHRONIZER_H
13#define ARCANE_MATERIALS_INTERNAL_MESHMATERIALVARIABLESYNCHRONIZER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Array.h"
19#include "arcane/utils/Ref.h"
20#include "arcane/utils/MemoryRessource.h"
21
22#include "arcane/materials/MatVarIndex.h"
23#include "arcane/materials/IMeshMaterialVariableSynchronizer.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane::Materials
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
42class ARCANE_MATERIALS_EXPORT MeshMaterialVariableSynchronizer
43: public TraceAccessor
45{
46 public:
47
48 MeshMaterialVariableSynchronizer(IMeshMaterialMng* material_mng,
49 IVariableSynchronizer* var_syncer,
50 MatVarSpace mvs);
51
52 public:
53
57 void recompute() override;
58 void checkRecompute() override;
59 Ref<IMeshMaterialSynchronizeBuffer> commonBuffer() override { return m_common_buffer; }
60 eMemoryRessource bufferMemoryRessource() const override { return m_buffer_memory_ressource; }
61
62 private:
63
64 IMeshMaterialMng* m_material_mng;
65 IVariableSynchronizer* m_variable_synchronizer;
68 Int64 m_timestamp;
69 MatVarSpace m_var_space;
71 eMemoryRessource m_buffer_memory_ressource = eMemoryRessource::UnifiedMemory;
72 // Permet de forcer l'utilisation ou non l'implémentation accélérateur
73 Int32 m_use_accelerator_mode = -1;
74
75 public:
76
77 // Doit être publique pour CUDA.
78 void _fillCellsAccelerator(Array<MatVarIndex>& items, AllEnvCellVectorView view, RunQueue& queue);
79
80 private:
81
82 void _fillCells(Array<MatVarIndex>& items, AllEnvCellVectorView view, RunQueue& queue);
83 void _fillCellsSequential(Array<MatVarIndex>& items, AllEnvCellVectorView view);
84 void _initialize();
85};
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90} // End namespace Arcane::Materials
91
92/*---------------------------------------------------------------------------*/
93/*---------------------------------------------------------------------------*/
94
95#endif
96
File d'exécution pour un accélérateur.
Tableau d'items de types quelconques.
Vue constante d'un tableau de type T.
Interface d'un service de synchronisation de variable.
Vue sur une liste de mailles avec infos sur les milieux.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
Interface du synchroniseur de variables matériaux.
Ref< IMeshMaterialSynchronizeBuffer > commonBuffer() override
Buffer commun pour les messages.
eMemoryRessource bufferMemoryRessource() const override
Ressource mémoire à utiliser pour les buffers de communication.
IVariableSynchronizer * variableSynchronizer() override
Synchroniseur des variables classiques associé.
void checkRecompute() override
Recalcule les infos de synchronisation si nécessaire.
void recompute() override
Recalcule les infos de synchronisation.
ConstArrayView< MatVarIndex > ghostItems(Int32 index) override
Liste des MatVarIndex fantômes pour le rang d'indice index dans le tableau variableSynchronizer::comm...
ConstArrayView< MatVarIndex > sharedItems(Int32 index) override
Liste des MatVarIndex partagés pour le rang d'indice index dans le tableau variableSynchronizer::comm...
Référence à une instance.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur 1D de données avec sémantique par valeur (style STL).
Active toujours les traces dans les parties Arcane concernant les matériaux.
MatVarSpace
Espace de définition d'une variable matériau.
std::int64_t Int64
Type entier signé sur 64 bits.
MATERIALS_BEGIN_NAMESPACE class ARCANE_MATERIALS_EXPORT(64) SimdMatVarIndex
Indexeur SIMD sur un composant.
Arcane::eMemoryResource eMemoryRessource
Typedef pour la version Arcane historique (avec 2's')
std::int32_t Int32
Type entier signé sur 32 bits.