12#ifndef ARCANE_CORE_IPARALLELMNG_H
13#define ARCANE_CORE_IPARALLELMNG_H
55 friend class ParallelMngUtilsAccessor;
428 virtual char reduce(eReduceType rt,
char v) =0;
429 virtual signed char reduce(eReduceType rt,
signed char v) =0;
430 virtual unsigned char reduce(eReduceType rt,
unsigned char v) =0;
431 virtual short reduce(eReduceType rt,
short v) =0;
432 virtual unsigned short reduce(eReduceType rt,
unsigned short v) =0;
433 virtual int reduce(eReduceType rt,
int v) =0;
434 virtual unsigned int reduce(eReduceType rt,
unsigned int v) =0;
435 virtual long reduce(eReduceType rt,
long v) =0;
436 virtual unsigned long reduce(eReduceType rt,
unsigned long v) =0;
437 virtual long long reduce(eReduceType rt,
long long v) =0;
438 virtual unsigned long long reduce(eReduceType rt,
unsigned long long v) =0;
439 virtual float reduce(eReduceType rt,
float v) =0;
440 virtual double reduce(eReduceType rt,
double v) =0;
441 virtual long double reduce(eReduceType rt,
long double v) =0;
464 char& max_val,
char& sum_val,
467 signed char& max_val,
signed char& sum_val,
470 unsigned char& max_val,
unsigned char& sum_val,
473 short& max_val,
short& sum_val,
476 unsigned short& max_val,
unsigned short& sum_val,
479 int& max_val,
int& sum_val,
482 unsigned int& max_val,
unsigned int& sum_val,
485 long& max_val,
long& sum_val,
488 unsigned long& max_val,
unsigned long& sum_val,
491 long long& max_val,
long long& sum_val,
493 virtual void computeMinMaxSum(
unsigned long long val,
unsigned long long& min_val,
494 unsigned long long& max_val,
unsigned long long& sum_val,
497 float& max_val,
float& sum_val,
500 double& max_val,
double& sum_val,
503 long double& max_val,
long double& sum_val,
660 virtual void broadcastString(
String& str,
Int32 rank) =0;
712 ARCCORE_DEPRECATED_2019(
"Use createSendSerializer(Int32 rank) instead")
788 virtual Request send(
ConstArrayView<
unsigned short> values,
Int32 rank,
bool is_blocking) =0;
794 virtual Request send(
ConstArrayView<
unsigned long long> values,
Int32 rank,
bool is_blocking) =0;
813 virtual Request
recv(
ArrayView<
unsigned short> values,
Int32 rank,
bool is_blocking) =0;
819 virtual Request
recv(
ArrayView<
unsigned long long> values,
Int32 rank,
bool is_blocking) =0;
834 virtual Request
receive(
Span<
char> values,const PointToPointMessageInfo& message) =0;
835 virtual Request
receive(
Span<
signed char> values,const PointToPointMessageInfo& message) =0;
836 virtual Request
receive(
Span<
unsigned char> values,const PointToPointMessageInfo& message) =0;
837 virtual Request
receive(
Span<
short> values,const PointToPointMessageInfo& message) =0;
838 virtual Request
receive(
Span<
unsigned short> values,const PointToPointMessageInfo& message) =0;
839 virtual Request
receive(
Span<
int> values,const PointToPointMessageInfo& message) =0;
840 virtual Request
receive(
Span<
unsigned int> values,const PointToPointMessageInfo& message) =0;
841 virtual Request
receive(
Span<
long> values,const PointToPointMessageInfo& message) =0;
842 virtual Request
receive(
Span<
unsigned long> values,const PointToPointMessageInfo& message) =0;
843 virtual Request
receive(
Span<
long long> values,const PointToPointMessageInfo& message) =0;
844 virtual Request
receive(
Span<
unsigned long long> values,const PointToPointMessageInfo& message) =0;
845 virtual Request
receive(
Span<
float> values,const PointToPointMessageInfo& message) =0;
846 virtual Request
receive(
Span<
double> values,const PointToPointMessageInfo& message) =0;
847 virtual Request
receive(
Span<
long double> values,const PointToPointMessageInfo& message) =0;
848 virtual Request
receive(
Span<
APReal> values,const PointToPointMessageInfo& message) =0;
849 virtual Request
receive(
Span<
Real2> values,const PointToPointMessageInfo& message) =0;
850 virtual Request
receive(
Span<
Real3> values,const PointToPointMessageInfo& message) =0;
851 virtual Request
receive(
Span<
Real2x2> values,const PointToPointMessageInfo& message) =0;
852 virtual Request
receive(
Span<
Real3x3> values,const PointToPointMessageInfo& message) =0;
853 virtual Request
receive(
Span<
HPReal> values,const PointToPointMessageInfo& message) =0;
854 virtual Request receiveSerializer(
ISerializer* values,const PointToPointMessageInfo& message) =0;
860 virtual Request send(
Span<const
char> values,const PointToPointMessageInfo& message) =0;
861 virtual Request send(
Span<const
signed char> values,const PointToPointMessageInfo& message) =0;
862 virtual Request send(
Span<const
unsigned char> values,const PointToPointMessageInfo& message) =0;
863 virtual Request send(
Span<const
short> values,const PointToPointMessageInfo& message) =0;
864 virtual Request send(
Span<const
unsigned short> values,const PointToPointMessageInfo& message) =0;
865 virtual Request send(
Span<const
int> values,const PointToPointMessageInfo& message) =0;
866 virtual Request send(
Span<const
unsigned int> values,const PointToPointMessageInfo& message) =0;
867 virtual Request send(
Span<const
long> values,const PointToPointMessageInfo& message) =0;
868 virtual Request send(
Span<const
unsigned long> values,const PointToPointMessageInfo& message) =0;
869 virtual Request send(
Span<const
long long> values,const PointToPointMessageInfo& message) =0;
870 virtual Request send(
Span<const
unsigned long long> values,const PointToPointMessageInfo& message) =0;
871 virtual Request send(
Span<const
float> values,const PointToPointMessageInfo& message) =0;
872 virtual Request send(
Span<const
double> values,const PointToPointMessageInfo& message) =0;
873 virtual Request send(
Span<const
long double> values,const PointToPointMessageInfo& message) =0;
874 virtual Request send(
Span<const
APReal> values,const PointToPointMessageInfo& message) =0;
875 virtual Request send(
Span<const
Real2> values,const PointToPointMessageInfo& message) =0;
876 virtual Request send(
Span<const
Real3> values,const PointToPointMessageInfo& message) =0;
877 virtual Request send(
Span<const
Real2x2> values,const PointToPointMessageInfo& message) =0;
878 virtual Request send(
Span<const
Real3x3> values,const PointToPointMessageInfo& message) =0;
879 virtual Request send(
Span<const
HPReal> values,const PointToPointMessageInfo& message) =0;
880 virtual Request sendSerializer(const
ISerializer* values,const PointToPointMessageInfo& message) =0;
888 virtual MessageId
probe(const PointToPointMessageInfo& message) =0;
895 virtual MessageSourceInfo
legacyProbe(const PointToPointMessageInfo& message) =0;
917 virtual
void sendRecv(
ConstArrayView<
unsigned long long> send_buf,
955 virtual
void allToAll(
ConstArrayView<
unsigned long long> send_buf,
1051 virtual
void scan(eReduceType rt,
ArrayView<
signed char> v) =0;
1052 virtual
void scan(eReduceType rt,
ArrayView<
unsigned char> v) =0;
1054 virtual
void scan(eReduceType rt,
ArrayView<
unsigned short> v) =0;
1056 virtual
void scan(eReduceType rt,
ArrayView<
unsigned int> v) =0;
1058 virtual
void scan(eReduceType rt,
ArrayView<
unsigned long> v) =0;
1059 virtual
void scan(eReduceType rt,
ArrayView<
long long> v) =0;
1060 virtual
void scan(eReduceType rt,
ArrayView<
unsigned long long> v) =0;
1063 virtual
void scan(eReduceType rt,
ArrayView<
long double> v) =0;
1077 ARCCORE_DEPRECATED_2020(
"Use createSerializeMessageListRef() instead")
1129 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createGetVariablesValuesOperationRef() instead")]]
1138 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createTransferValuesOperationRef() instead")]]
1147 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createExchangerRef() instead")]]
1156 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createSynchronizerRef() instead")]]
1165 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createSynchronizerRef() instead")]]
1175 [[deprecated(
"Y2021: Use Arcane::ParallelMngUtils;:createTopologyRef() instead")]]
1200 ARCCORE_DEPRECATED_2020(
"Use createSubParallelMngRef() instead")
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.
Tableau d'items de types quelconques.
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.
Échange d'informations entre processeurs.
Interface d'une fabrique de conteneur de 'IParallelMng'.
virtual Ref< IParallelMngContainer > _createParallelMngBuilder(Int32 nb_local_rank, Parallel::Communicator communicator, Parallel::Communicator machine_communicator)=0
Créé un conteneur pour nb_local_rank rangs locaux et avec comme communicateur communicator.
Interface d'un conteneur de 'IParallelMng'.
virtual Ref< IParallelMng > _createParallelMng(Int32 local_rank, ITraceMng *tm)=0
Créé le IParallelMng pour le rang local local_rank.
Partie interne de IParallelMng.
Interface d'une fabrique pour les fonctions utilitaires de IParallelMng.
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 ARCANE_DEPRECATED Integer subDomainId() const final
Numéro du sous-domaine associé à ce gestionnaire.
virtual void initialize()=0
Initialise le gestionnaire du parallélisme.
virtual Parallel::Communicator communicator() const =0
Communicateur MPI associé à ce gestionnaire.
virtual void setReplication(IParallelReplication *v)=0
Positionne les Informations sur la réplication.
virtual ITransferValuesParallelOperation * createTransferValuesOperation()=0
Retourne une opération pour transférer des valeurs entre sous-domaine.
virtual ARCANE_DEPRECATED Integer nbSubDomain() const final
Nombre total de sous-domaines.
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 Parallel::Communicator machineCommunicator() const
Communicateur MPI issus du communicateur communicator() réunissant tous les processus du noeud de cal...
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 Ref< IParallelMngUtilsFactory > _internalUtilsFactory() const =0
Fabrique des fonctions utilitaires.
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 gérant les statistiques sur les temps d'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.
Interface d'un message de sérialisation entre IMessagePassingMng.
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.