14#include "arcane/utils/Array.h"
15#include "arcane/utils/ITraceMng.h"
16#include "arcane/utils/NotImplementedException.h"
17#include "arcane/utils/ArgumentException.h"
18#include "arcane/utils/FatalErrorException.h"
19#include "arcane/utils/CheckedConvert.h"
21#include "arcane/IParallelMng.h"
22#include "arcane/Timer.h"
23#include "arcane/ISerializer.h"
24#include "arcane/SerializeMessage.h"
26#include "arcane/impl/TransferValuesParallelOperation.h"
28#include "arccore/message_passing/PointToPointSerializerMng.h"
42TransferValuesParallelOperation::
43TransferValuesParallelOperation(IParallelMng* pm)
51TransferValuesParallelOperation::
52~TransferValuesParallelOperation()
62 return m_parallel_mng;
68void TransferValuesParallelOperation::
77void TransferValuesParallelOperation::
87void TransferValuesParallelOperation::
97void TransferValuesParallelOperation::
107template<
typename U>
void TransferValuesParallelOperation::
126template<
typename U>
void TransferValuesParallelOperation::
131 for(
Integer z=0, zs=arrays.size(); z<zs; ++z ){
133 for(
Integer zz=0; zz<nb; ++zz )
134 arrays[z].
add(tmp_values[zz]);
141void TransferValuesParallelOperation::
144 String func_name =
"TransfertValuesParallelOperation::transferValues()";
163 throw ArgumentException(func_name,
"Int32 send_array and Int32 recv_array do not have the same size");
165 throw ArgumentException(func_name,
"Int64 send_array and Int64 recv_array do not have the same size");
167 throw ArgumentException(func_name,
"Real send_array and Real recv_array do not have the same size");
170 if (m_send32_values[i].size()!=
nb_send)
171 throw ArgumentException(func_name,
"Int32 array and ranks do not have the same size");
174 if (m_send64_values[i].size()!=
nb_send)
175 throw ArgumentException(func_name,
"Int64 array and ranks do not have the same size");
178 if (m_send_real_values[i].size()!=
nb_send)
179 throw ArgumentException(func_name,
"Real array and ranks do not have the same size");
187 if (
sd==NULL_SUB_DOMAIN_ID)
203 Int64 n =
b->second.size();
229 s->
setMode(ISerializer::ModeReserve);
235 s->reserveInteger(1);
242 s->
setMode(ISerializer::ModePut);
254 trace->
info() <<
" GET RECV MESSAGE recv=" <<
sm->destination();
256 s->
setMode(ISerializer::ModeGet);
258 trace->
info() <<
" GET SIZE nb=" << nb;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Tableau d'items de types quelconques.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual ITraceMng * traceMng() const =0
Gestionnaire de traces.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual ITimeStats * timeStats() const =0
Gestionnaire de statistiques associé (peut être nul)
virtual void allGatherVariable(ConstArrayView< char > send_buf, Array< char > &recv_buf)=0
Effectue un regroupement sur tous les processeurs.
virtual IMessagePassingMng * messagePassingMng() const =0
Gestionnaire de message de Arccore associé
virtual bool isParallel() const =0
Retourne true si l'exécution est parallèle.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Positionne la phase de l'action en cours d'exécution.
Exception lorsqu'un argument est invalide.
Classe de base des vecteurs 1D de données.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
Vue constante d'un tableau de type T.
Interface d'un sérialiseur.
virtual void allocateBuffer()=0
Alloue la mémoire du sérialiseur.
virtual void reserveSpan(eDataType dt, Int64 n)=0
Réserve de la mémoire pour n valeurs de dt.
virtual void putSpan(Span< const Real > values)
Ajoute le tableau values.
virtual Integer getInteger()=0
Récupère une taille.
virtual void getSpan(Span< Real > values)
Récupère le tableau values.
virtual void setMode(eMode new_mode)=0
Positionne le fonctionnement actuel.
virtual void putInteger(Integer value)=0
Ajoute l'entier value.
Interface du gestionnaire de traces.
virtual TraceMessage info()=0
Flot pour un message d'information.
Interface d'un message de sérialisation entre IMessagePassingMng.
Communications point à point par des 'ISerializer'.
Exception lorsqu'une fonction n'est pas implémentée.
Vecteur 1D de données avec sémantique par référence.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
void add(ArrayView< T > lhs, ConstArrayView< T > copy_array)
Ajoute le tableau copy_array dans l'instance.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
@ DT_Int32
Donnée de type entier 32 bits.
@ DT_Int64
Donnée de type entier 64 bits.
@ DT_Real
Donnée de type réel.
Espace de nommage contenant les types et déclarations qui gèrent le mécanisme de parallélisme par éch...
Int32 Integer
Type représentant un entier.
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.