16#include "arcane/utils/String.h"
17#include "arcane/utils/ArrayView.h"
18#include "arcane/utils/FatalErrorException.h"
19#include "arcane/utils/PlatformUtils.h"
20#include "arcane/utils/ITraceMng.h"
22#include "arcane/core/IParallelMng.h"
23#include "arcane/core/IParallelMng.h"
24#include "arcane/core/IParallelTopology.h"
25#include "arcane/core/IParallelReplication.h"
26#include "arcane/core/SerializeBuffer.h"
66 const int nsize = 256;
68 Int32 max_sbuf[nsize];
76 buf_as_bytes.
copy(name_as_bytes.
subView(0,name_len));
79 pm->
reduce(Parallel::ReduceMax,max_buf);
84 ARCANE_FATAL(
"Bad namedBarrier expected='{0}' found='{1}'",
96 const Int32 nb_string = input_strings.
size();
100 send_buf.
setMode(ISerializer::ModeReserve);
102 for( Integer i=0; i<nb_string; ++i ){
103 send_buf.
reserve(input_strings[i]);
109 for( Integer i=0; i<nb_string; ++i ){
110 send_buf.
put(input_strings[i]);
117 std::map<String,Int32> string_occurences;
121 for( Integer i=0; i<nb_rank; ++i ){
122 Int32 nb_string_rank = recv_buf.
getInt32();
123 for( Integer z=0; z<nb_string_rank; ++z ){
126 auto vo = string_occurences.find(x);
127 if (vo==string_occurences.end())
128 string_occurences.insert(std::make_pair(x,1));
130 vo->second = vo->second + 1;
136 std::set<String> common_set;
138 auto end_iter = string_occurences.end();
139 for( Integer i=0; i<nb_string; ++i ){
140 String str = input_strings[i];
141 auto i_str = string_occurences.find(str);
145 if (i_str->second!=nb_rank)
147 common_set.insert(str);
153 common_strings.
clear();
154 for(
const String& s : common_set )
155 common_strings.
add(s);
167 Real mem_used = platform::getMemoryUsed();
171 Int32 mem_min_rank = 0;
172 Int32 mem_max_rank = 0;
173 pm->
computeMinMaxSum(mem_used, mem_min, mem_max, mem_sum, mem_min_rank, mem_max_rank);
174 tm->
info() <<
"Date: " << platform::getCurrentDateTime() <<
" MEM=" << (Int64)(mem_used / 1e6)
175 <<
" MAX_MEM=" << (Int64)(mem_max / 1e6)
176 <<
" MIN_MEM=" << (Int64)(mem_min / 1e6)
177 <<
" AVG_MEM=" << (Int64)(mem_sum / 1e6) / pm->
commSize()
178 <<
" MIN_RANK=" << mem_min_rank <<
" MAX_RANK=" << mem_max_rank;
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Fichier contenant les déclarations concernant le modèle de programmation par échange de message.
Interface du gestionnaire de parallélisme pour un sous-domaine.
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 commSize() const =0
Nombre d'instance dans le communicateur.
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 ARCANE_DEPRECATED_120 void * mpiCommunicator()
Adresse du communicateur MPI associé à ce gestionnaire.
virtual void * getMPICommunicator()=0
Adresse du communicateur MPI associé à ce gestionnaire.
virtual char reduce(eReduceType rt, char v)=0
Effectue la réduction de type rt sur le réel v et retourne la valeur.
Vue modifiable d'un tableau d'un type T.
void fill(const T &o) noexcept
Remplit le tableau avec la valeur o.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
constexpr pointer unguardedBasePointer() noexcept
Pointeur sur le début de la vue.
void copy(const U ©_array)
Recopie le tableau copy_array dans l'instance.
Classe de base des vecteurs 1D de données.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
void clear()
Supprime les éléments du tableau.
void allocateBuffer() override
Alloue la mémoire du sérialiseur.
void reserve(eDataType dt, Int64 n) override
Réserve de la mémoire pour n objets de type dt.
void put(Span< const Real > values) override
Ajoute le tableau values.
void setMode(eMode new_mode) override
Positionne le fonctionnement actuel.
Int32 getInt32() override
Récupère un entier naturel.
void putInt32(Int32 value) override
Ajoute l'entier value.
void get(RealArrayView values) override
Récupère le tableau values.
Vue constante d'un tableau de type T.
constexpr ConstArrayView< T > subView(Integer abegin, Integer asize) const noexcept
Sous-vue (constante) à partir de l'élément abegin et contenant asize éléments.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
@ ModePut
Le sérialiseur attend des reserve()
@ ModeGet
Le sérialiseur attend des get()
Interface du gestionnaire de traces.
virtual TraceMessage info()=0
Flot pour un message d'information.
Chaîne de caractères unicode.
const char * localstr() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
Int64 length() const
Retourne la longueur de la chaîne.
__host__ __device__ Real2 min(Real2 a, Real2 b)
Retourne le minimum de deux Real2.
void namedBarrier(IParallelMng *pm, const String &name)
Effectue une barrière nommée de nom name.
void dumpDateAndMemoryUsage(IParallelMng *pm, ITraceMng *tm)
Écrit dans tm la date et la mémoire consommée.
void filterCommonStrings(IParallelMng *pm, ConstArrayView< String > input_strings, Array< String > &common_strings)
Filtre les chaînes de caractères communes à tous les rangs de pm.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Integer arcaneCheckArraySize(unsigned long long size)
Vérifie que size peut être converti dans un 'Integer' pour servir de taille à un tableau....
unsigned char Byte
Type d'un octet.
@ DT_Int32
Donnée de type entier 32 bits.