14#include "arcane/materials/internal/AcceleratorMeshMaterialSynchronizerImpl.h"
16#include "arcane/VariableTypes.h"
17#include "arcane/IParallelMng.h"
18#include "arcane/ItemPrinter.h"
19#include "arcane/IMesh.h"
21#include "arcane/materials/CellToAllEnvCellConverter.h"
22#include "arcane/materials/MatItemEnumerator.h"
23#include "arcane/materials/MeshMaterialModifier.h"
25#include "arcane/core/ItemGenericInfoListView.h"
26#include "arcane/core/internal/IParallelMngInternal.h"
36AcceleratorMeshMaterialSynchronizerImpl::
37AcceleratorMeshMaterialSynchronizerImpl(IMeshMaterialMng* material_mng)
38: TraceAccessor(material_mng->traceMng())
39, m_material_mng(material_mng)
40, m_mat_presence(VariableBuildInfo(material_mng->mesh(),
"ArcaneMaterialSyncPresence"))
42 IMesh* mesh = m_material_mng->mesh();
43 auto* internal_pm = mesh->parallelMng()->_internalApi();
44 if (internal_pm->defaultRunner() ==
nullptr) {
46 internal_pm->setDefaultRunner(default_runner);
58bool AcceleratorMeshMaterialSynchronizerImpl::
59synchronizeMaterialsInCells()
76 IMesh* mesh = m_material_mng->mesh();
83 Integer
nb_mat = materials.size();
84 Integer dim2_size =
nb_mat / 8;
87 m_mat_presence.resize(dim2_size);
89 info(4) <<
"Resize presence variable nb_mat=" <<
nb_mat <<
" dim2=" << dim2_size;
100 m_idx_selecter.resize(mesh->
allCells().size());
122 m_mat_presence.synchronize();
134 to_add[
imat] = m_idx_selecter.syncSelectIf(m_queue, [=] ARCCORE_HOST_DEVICE(Int32
cid) ->
bool {
167 to_remove[
imat] = m_idx_selecter.syncSelectIf(m_queue, [=] ARCCORE_HOST_DEVICE(Int32
cid) ->
bool {
Construction d'un sous-ensemble d'indexes à partir d'un critère.
File d'exécution pour un accélérateur.
void setAsync(bool v)
Positionne l'asynchronisme de l'instance.
void barrier() const
Bloque tant que toutes les commandes associées à la file ne sont pas terminées.
Gestionnaire d'exécution pour accélérateur.
virtual CellGroup ownCells()=0
Groupe de toutes les mailles propres au domaine.
virtual CellGroup allCells()=0
Groupe de toutes les mailles.
virtual IItemFamily * cellFamily()=0
Retourne la famille des mailles.
virtual IParallelMng * parallelMng()=0
Gestionnaire de parallèlisme.
Vue sur les informations génériques d'une famille d'entités.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Maille arcane avec info matériaux et milieux.
Classe d'encapsulation pour accéder à la connectivité équivalente cell -> allenvcell....
Conversion de 'Cell' en 'AllEnvCell'.
Représente un matériau d'une maille multi-matériau.
Objet permettant de modifier les matériaux ou les milieux.
void addCells(IMeshMaterial *mat, SmallSpan< const Int32 > ids)
Ajoute les mailles d'indices locaux ids au matériau mat.
void removeCells(IMeshMaterial *mat, SmallSpan< const Int32 > ids)
Supprime les mailles d'indices locaux ids au matériau mat.
auto viewInOut(RunCommand &cmd, CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture/écriture pour les variables materiaux scalaire.
RunCommand makeCommand(const RunQueue &run_queue)
Créé une commande associée à la file run_queue.
@ Sequential
Politique d'exécution séquentielle.
Active toujours les traces dans les parties Arcane concernant les matériaux.