Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
SharedMemoryParallelSuperMng.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* SharedMemoryParallelSuperMng.h (C) 2000-2020 */
9/* */
10/* Implémentation de 'IParallelSuperMng' mode mémoire partagé. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_PARALLEL_THREAD_SHAREDMEMORYPARALLELSUPERMNG_H
13#define ARCANE_PARALLEL_THREAD_SHAREDMEMORYPARALLELSUPERMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/IParallelSuperMng.h"
18#include "arcane/Parallel.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25class ServiceBuildInfo;
26}
27
29{
30
31class SharedMemoryParallelMngContainer;
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
38class ARCANE_THREAD_EXPORT SharedMemoryParallelSuperMng
39: public IParallelSuperMng
40{
41 public:
42
45 bool has_mpi_init);
47
48 void initialize() override;
49 void build() override;
50
51 IApplication* application() const override { return m_application; }
52 IThreadMng* threadMng() const override;
53 bool isParallel() const override { return m_is_parallel; }
54 Int32 commRank() const override { return 0; }
55 Int32 commSize() const override { return 0; }
56 Int32 traceRank() const override { return 0; }
57 void* getMPICommunicator() override { return m_communicator.communicatorAddress(); }
58 Parallel::Communicator communicator() const override { return m_communicator; }
59 Ref<IParallelMng> internalCreateWorldParallelMng(Int32 local_rank) override;
60 void tryAbort() override;
61 bool isMasterIO() const override { return commRank()==0; }
62 Int32 masterIORank() const override { return 0; }
63 Int32 nbLocalSubDomain() override;
64 void barrier() override {}
65
66 public:
67
68 void broadcast(ByteArrayView send_buf,Int32 rank) override;
69 void broadcast(Int32ArrayView send_buf,Int32 rank) override;
70 void broadcast(Int64ArrayView send_buf,Int32 rank) override;
71 void broadcast(RealArrayView send_buf,Int32 rank) override;
72
73 public:
74
76 Parallel::IStat* m_stat;
78 SharedMemoryParallelMngContainer* m_container = nullptr;
79 Ref<IParallelMngContainerFactory> m_builder_factory;
80 Ref<IParallelMngContainer> m_main_builder;
81 Parallel::Communicator m_communicator;
82 bool m_has_mpi_init = false;
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88} // End namespace Arcane::MessagePassing
89
90/*---------------------------------------------------------------------------*/
91/*---------------------------------------------------------------------------*/
92
93#endif
Interface de l'application.
Classe abstraite du superviseur de parallélisme.
Interface d'un gestionnaire de thread.
Definition IThreadMng.h:30
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Conteneur des informations du gestionnaire de message en mémoire partagée.
Superviseur du parallélisme utilisant les threads.
Int32 commSize() const override
Retourne le nombre total de process utilisés.
void barrier() override
Gestionnaire de parallèlisme pour l'ensemble des ressources allouées.
void * getMPICommunicator() override
Adresse du communicateur MPI associé à ce gestionnaire.
Parallel::Communicator communicator() const override
Communicateur MPI associé à ce gestionnaire.
Int32 commRank() const override
Retourne le numéro du process (compris entre 0 et nbProcess()-1)
bool isMasterIO() const override
true si l'instance est un gestionnaire maître des entrées/sorties.
bool isParallel() const override
Retourne true si l'exécution est parallèle.
Int32 masterIORank() const override
Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai)
IApplication * application() const override
Retourne le gestionnaire principal.
Int32 traceRank() const override
Rang de cette instance pour les traces.
Statistiques sur le parallélisme.
Structure contenant les informations pour créer un service.
Vue modifiable d'un tableau d'un type T.
Communicateur pour l'échange de message.
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
Definition Parallel.h:94
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-