14#include "arcane/utils/ArcanePrecomp.h"
15#include "arcane/utils/TraceAccessor.h"
16#include "arcane/utils/NotImplementedException.h"
17#include "arcane/utils/TraceInfo.h"
18#include "arcane/utils/String.h"
19#include "arcane/utils/PlatformUtils.h"
21#include "arcane/IParallelMng.h"
23#include "arcane/parallel/IMultiReduce.h"
36class PostProcessingMng;
54 virtual bool isStrict()
const {
return m_is_strict; }
55 virtual void setStrict(
bool is_strict) { m_is_strict = is_strict; }
61 ReduceSumOfRealHelperMap::const_iterator i = m_sum_helpers.find(name);
63 if (i==m_sum_helpers.end()){
65 m_sum_helpers.insert(std::make_pair(name,v));
74 typedef std::map<String,ReduceSumOfRealHelper*> ReduceSumOfRealHelperMap;
78 ReduceSumOfRealHelperMap m_sum_helpers;
88IMultiReduce* IMultiReduce::
89create(IParallelMng* pm)
91 return new MultiReduce(pm);
101MultiReduce(IParallelMng* pm)
102: TraceAccessor(pm->traceMng())
116 ReduceSumOfRealHelperMap::const_iterator i = m_sum_helpers.begin();
117 for( ; i!=m_sum_helpers.end(); ++i )
119 m_sum_helpers.clear();
129 ReduceSumOfRealHelperMap::const_iterator i = m_sum_helpers.begin();
130 for( ; i!=m_sum_helpers.end(); ++i )
131 _execStrict(i->second);
145 ReduceSumOfRealHelperMap::const_iterator i = m_sum_helpers.begin();
146 for( ; i!=m_sum_helpers.end(); ++i ){
148 values[index] = i->second->values()[0];
158 ReduceSumOfRealHelperMap::const_iterator i = m_sum_helpers.begin();
159 for( ; i!=m_sum_helpers.end(); ++i ){
161 i->second->setReducedValue(values[index]);
179 std::sort(std::begin(all_values),std::end(all_values));
182 sum += all_values[i];
Integer size() const
Nombre d'éléments du vecteur.
Gestion de réductions multiples.
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 isStrict() const
Indique si on utilise le mode strict.
virtual ReduceSumOfRealHelper * getSumOfReal(const String &name)
Retourne le gestionnaire de nom name. S'il n'existe pas de gestionnaire de nom name il est créé....
virtual void setStrict(bool is_strict)
Positionne le mode strict.
virtual void execute()
Exécute les réductions.
Classe gérant une réduction d'une somme de valeur.
RealConstArrayView values() const
Liste des valeurs accumulées.
void setReducedValue(Real v)
Positionne la valeur réduite.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
@ ReduceSum
Somme des valeurs.
Integer arcaneCheckArraySize(unsigned long long size)
Vérifie que size peut être converti dans un 'Integer' pour servir de taille à un tableau....
Int32 Integer
Type représentant un entier.
UniqueArray< Real > RealUniqueArray
Tableau dynamique à une dimension de réels.
double Real
Type représentant un réel.
ArrayView< Real > RealArrayView
Equivalent C d'un tableau à une dimension de réels.