12#ifndef ARCANE_CORE_IPARALLELMNG_H
13#define ARCANE_CORE_IPARALLELMNG_H
55 friend class ParallelMngUtilsAccessor;
93 virtual ARCANE_DEPRECATED
Integer subDomainId() const final {
return commRank(); }
96 virtual ARCANE_DEPRECATED
Integer nbSubDomain() const final {
return commSize(); }
414 virtual char reduce(eReduceType rt,
char v) =0;
415 virtual signed char reduce(eReduceType rt,
signed char v) =0;
416 virtual unsigned char reduce(eReduceType rt,
unsigned char v) =0;
417 virtual short reduce(eReduceType rt,
short v) =0;
418 virtual unsigned short reduce(eReduceType rt,
unsigned short v) =0;
419 virtual int reduce(eReduceType rt,
int v) =0;
420 virtual unsigned int reduce(eReduceType rt,
unsigned int v) =0;
421 virtual long reduce(eReduceType rt,
long v) =0;
422 virtual unsigned long reduce(eReduceType rt,
unsigned long v) =0;
423 virtual long long reduce(eReduceType rt,
long long v) =0;
424 virtual unsigned long long reduce(eReduceType rt,
unsigned long long v) =0;
425 virtual float reduce(eReduceType rt,
float v) =0;
426 virtual double reduce(eReduceType rt,
double v) =0;
427 virtual long double reduce(eReduceType rt,
long double v) =0;
450 char& max_val,
char& sum_val,
453 signed char& max_val,
signed char& sum_val,
456 unsigned char& max_val,
unsigned char& sum_val,
459 short& max_val,
short& sum_val,
462 unsigned short& max_val,
unsigned short& sum_val,
465 int& max_val,
int& sum_val,
468 unsigned int& max_val,
unsigned int& sum_val,
471 long& max_val,
long& sum_val,
474 unsigned long& max_val,
unsigned long& sum_val,
477 long long& max_val,
long long& sum_val,
479 virtual void computeMinMaxSum(
unsigned long long val,
unsigned long long& min_val,
480 unsigned long long& max_val,
unsigned long long& sum_val,
483 float& max_val,
float& sum_val,
486 double& max_val,
double& sum_val,
489 long double& max_val,
long double& sum_val,
646 virtual void broadcastString(
String& str,
Int32 rank) =0;
698 ARCCORE_DEPRECATED_2019(
"Use createSendSerializer(Int32 rank) instead")
769 virtual Request send(
ConstArrayView<
unsigned short> values,
Int32 rank,
bool is_blocking) =0;
775 virtual Request send(
ConstArrayView<
unsigned long long> values,
Int32 rank,
bool is_blocking) =0;
794 virtual Request
recv(
ArrayView<
unsigned short> values,
Int32 rank,
bool is_blocking) =0;
800 virtual Request
recv(
ArrayView<
unsigned long long> values,
Int32 rank,
bool is_blocking) =0;
815 virtual Request
receive(
Span<
char> values,const PointToPointMessageInfo& message) =0;
816 virtual Request
receive(
Span<
signed char> values,const PointToPointMessageInfo& message) =0;
817 virtual Request
receive(
Span<
unsigned char> values,const PointToPointMessageInfo& message) =0;
818 virtual Request
receive(
Span<
short> values,const PointToPointMessageInfo& message) =0;
819 virtual Request
receive(
Span<
unsigned short> values,const PointToPointMessageInfo& message) =0;
820 virtual Request
receive(
Span<
int> values,const PointToPointMessageInfo& message) =0;
821 virtual Request
receive(
Span<
unsigned int> values,const PointToPointMessageInfo& message) =0;
822 virtual Request
receive(
Span<
long> values,const PointToPointMessageInfo& message) =0;
823 virtual Request
receive(
Span<
unsigned long> values,const PointToPointMessageInfo& message) =0;
824 virtual Request
receive(
Span<
long long> values,const PointToPointMessageInfo& message) =0;
825 virtual Request
receive(
Span<
unsigned long long> values,const PointToPointMessageInfo& message) =0;
826 virtual Request
receive(
Span<
float> values,const PointToPointMessageInfo& message) =0;
827 virtual Request
receive(
Span<
double> values,const PointToPointMessageInfo& message) =0;
828 virtual Request
receive(
Span<
long double> values,const PointToPointMessageInfo& message) =0;
829 virtual Request
receive(
Span<
APReal> values,const PointToPointMessageInfo& message) =0;
830 virtual Request
receive(
Span<
Real2> values,const PointToPointMessageInfo& message) =0;
831 virtual Request
receive(
Span<
Real3> values,const PointToPointMessageInfo& message) =0;
832 virtual Request
receive(
Span<
Real2x2> values,const PointToPointMessageInfo& message) =0;
833 virtual Request
receive(
Span<
Real3x3> values,const PointToPointMessageInfo& message) =0;
834 virtual Request
receive(
Span<
HPReal> values,const PointToPointMessageInfo& message) =0;
835 virtual Request receiveSerializer(
ISerializer* values,const PointToPointMessageInfo& message) =0;
841 virtual Request send(
Span<const
char> values,const PointToPointMessageInfo& message) =0;
842 virtual Request send(
Span<const
signed char> values,const PointToPointMessageInfo& message) =0;
843 virtual Request send(
Span<const
unsigned char> values,const PointToPointMessageInfo& message) =0;
844 virtual Request send(
Span<const
short> values,const PointToPointMessageInfo& message) =0;
845 virtual Request send(
Span<const
unsigned short> values,const PointToPointMessageInfo& message) =0;
846 virtual Request send(
Span<const
int> values,const PointToPointMessageInfo& message) =0;
847 virtual Request send(
Span<const
unsigned int> values,const PointToPointMessageInfo& message) =0;
848 virtual Request send(
Span<const
long> values,const PointToPointMessageInfo& message) =0;
849 virtual Request send(
Span<const
unsigned long> values,const PointToPointMessageInfo& message) =0;
850 virtual Request send(
Span<const
long long> values,const PointToPointMessageInfo& message) =0;
851 virtual Request send(
Span<const
unsigned long long> values,const PointToPointMessageInfo& message) =0;
852 virtual Request send(
Span<const
float> values,const PointToPointMessageInfo& message) =0;
853 virtual Request send(
Span<const
double> values,const PointToPointMessageInfo& message) =0;
854 virtual Request send(
Span<const
long double> values,const PointToPointMessageInfo& message) =0;
855 virtual Request send(
Span<const
APReal> values,const PointToPointMessageInfo& message) =0;
856 virtual Request send(
Span<const
Real2> values,const PointToPointMessageInfo& message) =0;
857 virtual Request send(
Span<const
Real3> values,const PointToPointMessageInfo& message) =0;
858 virtual Request send(
Span<const
Real2x2> values,const PointToPointMessageInfo& message) =0;
859 virtual Request send(
Span<const
Real3x3> values,const PointToPointMessageInfo& message) =0;
860 virtual Request send(
Span<const
HPReal> values,const PointToPointMessageInfo& message) =0;
861 virtual Request sendSerializer(const
ISerializer* values,const PointToPointMessageInfo& message) =0;
869 virtual MessageId
probe(const PointToPointMessageInfo& message) =0;
876 virtual MessageSourceInfo
legacyProbe(const PointToPointMessageInfo& message) =0;
898 virtual
void sendRecv(
ConstArrayView<
unsigned long long> send_buf,
936 virtual
void allToAll(
ConstArrayView<
unsigned long long> send_buf,
1032 virtual
void scan(eReduceType rt,
ArrayView<
signed char> v) =0;
1033 virtual
void scan(eReduceType rt,
ArrayView<
unsigned char> v) =0;
1035 virtual
void scan(eReduceType rt,
ArrayView<
unsigned short> v) =0;
1037 virtual
void scan(eReduceType rt,
ArrayView<
unsigned int> v) =0;
1039 virtual
void scan(eReduceType rt,
ArrayView<
unsigned long> v) =0;
1040 virtual
void scan(eReduceType rt,
ArrayView<
long long> v) =0;
1041 virtual
void scan(eReduceType rt,
ArrayView<
unsigned long long> v) =0;
1044 virtual
void scan(eReduceType rt,
ArrayView<
long double> v) =0;
1058 ARCCORE_DEPRECATED_2020(
"Use createSerializeMessageListRef() instead")
1110 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createGetVariablesValuesOperationRef() instead")]]
1119 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createTransferValuesOperationRef() instead")]]
1128 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createExchangerRef() instead")]]
1137 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createSynchronizerRef() instead")]]
1146 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createSynchronizerRef() instead")]]
1156 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createTopologyRef() instead")]]
1181 ARCCORE_DEPRECATED_2020(
"Use createSubParallelMngRef() instead")
1228 virtual
Ref<IParallelMngUtilsFactory> _internalUtilsFactory() const =0;
Fichier contenant les déclarations concernant le modèle de programmation par échange de message.
#define ARCCORE_DECLARE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour déclarer les méthodes virtuelles gérant les compteurs de référence.
Déclarations des types utilisés dans Arcane.
Emulation de réel en précision arbitraire.
Vue modifiable d'un tableau d'un type T.
Classe de base des vecteurs 1D de données.
Vue constante d'un tableau de type T.
Classe implémentant un réel Haute Précision.
Opérations pour accéder aux valeurs de variables d'un autre sous-domaine.
Interface du gestionnaire des entrées sorties.
Interface d'une famille d'entités.
Echange d'informations entre processeurs.
virtual Ref< IParallelMngContainer > _createParallelMngBuilder(Int32 nb_local_rank, Parallel::Communicator communicator)=0
Créé un conteneur pour nb_local_rank rangs locaux et avec comme communicateur communicator.
virtual Ref< IParallelMng > _createParallelMng(Int32 local_rank, ITraceMng *tm)=0
Créé le IParallelMng pour le rang local local_rank.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual void gatherVariable(ConstArrayView< char > send_buf, Array< char > &recv_buf, Int32 rank)=0
Effectue un regroupement sur tous les processeurs.
virtual bool isThreadImplementation() const =0
Indique si l'implémentation utilise les threads.
virtual ITraceMng * traceMng() const =0
Gestionnaire de traces.
virtual void printStats()=0
Affiche des statistiques liées à ce gestionnaire du parallélisme.
virtual void computeMinMaxSum(char val, char &min_val, char &max_val, char &sum_val, Int32 &min_rank, Int32 &max_rank)=0
Calcule en une opération la somme, le min, le max d'une valeur.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual Ref< Parallel::IRequestList > createRequestListRef()=0
Créé une liste de requêtes pour ce gestionnaire.
virtual IParallelReplication * replication() const =0
Informations sur la réplication.
virtual ISerializeMessage * createSendSerializer(Int32 rank)=0
Créé un message non bloquant pour envoyer des données sérialisées au rang rank.
virtual void computeMinMaxSum(ConstArrayView< char > values, ArrayView< char > min_values, ArrayView< char > max_values, ArrayView< char > sum_values, ArrayView< Int32 > min_ranks, ArrayView< Int32 > max_ranks)=0
Calcule en une opération la somme, le min, le max d'une valeur.
virtual IParallelMng * sequentialParallelMng()=0
Retourne un gestionnaire de parallélisme séquentiel.
virtual ITimeStats * timeStats() const =0
Gestionnaire de statistiques associé (peut être nul)
virtual ISerializeMessageList * createSerializeMessageList()=0
Créé une liste pour gérer les 'ISerializeMessage'.
virtual IStat * stat()=0
Gestionnaire des statistiques.
virtual MessageSourceInfo legacyProbe(const PointToPointMessageInfo &message)=0
Sonde si des messages sont disponibles.
virtual UniqueArray< Integer > waitSomeRequests(ArrayView< Request > rvalues)=0
Bloque en attendant qu'une des requêtes rvalues soit terminée.
virtual ~IParallelMng()=default
Libère les ressources.
virtual ISerializeMessage * createReceiveSerializer(Int32 rank)=0
Créé un message non bloquant pour recevoir des données sérialisées du rang rank.
virtual void processMessages(ConstArrayView< ISerializeMessage * > messages)=0
Exécute les opérations des messages messages.
virtual void broadcastMemoryBuffer(ByteArray &bytes, Int32 rank)=0
Effectue un broadcast d'une zone mémoire.
virtual Ref< ISerializeMessageList > createSerializeMessageListRef()=0
Créé une liste pour gérer les 'ISerializeMessage'.
virtual void reduce(eReduceType rt, ArrayView< char > v)=0
Effectue la réduction de type rt sur le tableau v.
virtual ITimeMetricCollector * timeMetricCollector() const =0
Collecteur Arccore des statistiques temporelles (peut être nul)
virtual void recv(ArrayView< char > values, Int32 rank)=0
virtual void scan(eReduceType rt, ArrayView< char > v)=0
Applique un algorithme de prefix-um sur les valeurs de v via l'opération rt.
virtual IParallelTopology * createTopology()=0
Créé une instance contenant les infos sur la topologie des rangs de ce gestionnnaire.
virtual void allGatherVariable(ConstArrayView< char > send_buf, Array< char > &recv_buf)=0
Effectue un regroupement sur tous les processeurs.
virtual bool isMasterIO() const =0
true si l'instance est un gestionnaire maître des entrées/sorties.
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
virtual void scatterVariable(ConstArrayView< char > send_buf, ArrayView< char > recv_buf, Integer root)=0
Scinde un tableau sur plusieurs processeurs.
virtual bool isHybridImplementation() const =0
Indique si l'implémentation utilise le mode hybride.
virtual void allGather(ConstArrayView< char > send_buf, ArrayView< char > recv_buf)=0
Effectue un regroupement sur tous les processeurs. Il s'agit d'une opération collective....
virtual IIOMng * ioMng() const =0
Gestionnaire des entrées/sorties.
virtual IVariableSynchronizer * createSynchronizer(IItemFamily *family)=0
Retourne une interface pour synchroniser des variables sur le groupe de la famille family.
virtual IThreadMng * threadMng() const =0
Gestionnaire de threads.
virtual void waitAllRequests(ArrayView< Request > rvalues)=0
Bloque en attendant que les requêtes rvalues soient terminées.
virtual MessageId probe(const PointToPointMessageInfo &message)=0
Sonde si des messages sont disponibles.
virtual void build()=0
Construit l'instance.
virtual void initialize()=0
Initialise le gestionnaire du parallélisme.
virtual Parallel::Communicator communicator() const =0
Communicateur MPI associé à ce gestionnaire.
virtual ITransferValuesParallelOperation * createTransferValuesOperation()=0
Retourne une opération pour transférer des valeurs entre sous-domaine.
virtual IParallelMng * worldParallelMng() const =0
Gestionnaire de parallélisme sur l'ensemble des ressources allouées.
virtual void gather(ConstArrayView< char > send_buf, ArrayView< char > recv_buf, Int32 rank)=0
Effectue un regroupement sur un processeurs. Il s'agit d'une opération collective....
virtual IParallelNonBlockingCollective * nonBlockingCollective() const =0
Interface des opérations collectives non blocantes.
virtual ITimerMng * timerMng() const =0
Gestionnaire de timers.
virtual IParallelMng * createSubParallelMng(Int32ConstArrayView kept_ranks)=0
Créé un nouveau gestionnaire de parallélisme pour un sous-ensemble des rangs.
virtual IMessagePassingMng * messagePassingMng() const =0
Gestionnaire de message de Arccore associé
virtual IGetVariablesValuesParallelOperation * createGetVariablesValuesOperation()=0
Retourne une opération pour récupérer les valeurs d'une variable sur les entités d'un autre sous-doma...
virtual Ref< IParallelMng > createSubParallelMngRef(Int32ConstArrayView kept_ranks)=0
Créé un nouveau gestionnaire de parallélisme pour un sous-ensemble des rangs.
virtual UniqueArray< Integer > testSomeRequests(ArrayView< Request > rvalues)=0
Test si une des requêtes rvalues est terminée.
virtual IParallelExchanger * createExchanger()=0
Retourne une interface pour transférer des messages entre processeurs.
virtual Integer masterIORank() const =0
Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai)
virtual IParallelMngInternal * _internalApi()=0
API interne à Arcane.
virtual Request receive(Span< char > values, const PointToPointMessageInfo &message)=0
virtual ARCANE_DEPRECATED_120 void * mpiCommunicator()
Adresse du communicateur MPI associé à ce gestionnaire.
virtual bool isParallel() const =0
Retourne true si l'exécution est parallèle.
virtual void freeRequests(ArrayView< Parallel::Request > requests)=0
Libère les requêtes.
virtual void * getMPICommunicator()=0
Adresse du communicateur MPI associé à ce gestionnaire.
virtual void setTimeStats(ITimeStats *time_stats)=0
Positionne le gestionnaire de statistiques.
virtual char reduce(eReduceType rt, char v)=0
Effectue la réduction de type rt sur le réel v et retourne la valeur.
virtual void barrier()=0
Effectue une barière.
Interface des opérations parallèles collectives non bloquantes.
Informations sur la réplication des sous-domaines en parallèle.
Informations sur la topologie d'allocation des coeurs de calcul.
Interface d'un sérialiseur.
Interface d'un gestionnaire de thread.
Interface gérant les statistiques sur l'exécution.
Interface d'un gestionnaire de timer.
Interface du gestionnaire de traces.
Envoie de valeurs sur différents processeurs.
Interface d'un service de synchronisation de variable.
Groupe d'entités de maillage.
Communicateur pour l'échange de message.
Interface du gestionnaire des échanges de messages.
Liste de requête de messages.
Interface d'une liste de messages de sérialisation.
Informations sur la source d'un message.
Informations pour envoyer/recevoir un message point à point.
Statistiques sur le parallélisme.
Classe gérant un vecteur de réel de dimension 2.
Classe gérant une matrice de réel de dimension 2x2.
Classe gérant un vecteur de réel de dimension 3.
Classe gérant une matrice de réel de dimension 3x3.
Référence à une instance.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
eReduceType
Types des réductions supportées.
Implémentation de la concurrence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.