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"
21#include "arcane/utils/Math.h"
23#include "arcane/core/IParallelMng.h"
24#include "arcane/core/IParallelMng.h"
25#include "arcane/core/IParallelTopology.h"
26#include "arcane/core/IParallelReplication.h"
27#include "arcane/core/SerializeBuffer.h"
67 const int nsize = 256;
69 Int32 max_sbuf[nsize];
77 buf_as_bytes.
copy(name_as_bytes.
subView(0,name_len));
85 ARCANE_FATAL(
"Bad namedBarrier expected='{0}' found='{1}'",
97 const Int32 nb_string = input_strings.
size();
101 send_buf.
setMode(ISerializer::ModeReserve);
103 for(
Integer i=0; i<nb_string; ++i ){
104 send_buf.
reserve(input_strings[i]);
110 for(
Integer i=0; i<nb_string; ++i ){
111 send_buf.
put(input_strings[i]);
118 std::map<String,Int32> string_occurences;
122 for(
Integer i=0; i<nb_rank; ++i ){
124 for(
Integer z=0; z<nb_string_rank; ++z ){
127 auto vo = string_occurences.find(x);
128 if (vo==string_occurences.end())
129 string_occurences.insert(std::make_pair(x,1));
131 vo->second = vo->second + 1;
137 std::set<String> common_set;
139 auto end_iter = string_occurences.end();
140 for(
Integer i=0; i<nb_string; ++i ){
141 String str = input_strings[i];
142 auto i_str = string_occurences.find(str);
146 if (i_str->second!=nb_rank)
148 common_set.insert(str);
154 common_strings.
clear();
155 for(
const String& s : common_set )
156 common_strings.
add(s);
172 Int32 mem_min_rank = 0;
173 Int32 mem_max_rank = 0;
174 pm->
computeMinMaxSum(mem_used, mem_min, mem_max, mem_sum, mem_min_rank, mem_max_rank);
176 <<
" MAX_MEM=" << (
Int64)(mem_max / 1e6)
177 <<
" MIN_MEM=" << (
Int64)(mem_min / 1e6)
179 <<
" 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.
void copy(const U ©_array)
Recopie le tableau copy_array dans l'instance.
void fill(const T &o) noexcept
Remplit le tableau avec la valeur o.
constexpr pointer unguardedBasePointer() noexcept
Pointeur sur le début de la vue.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
Tableau d'items de types quelconques.
void clear()
Supprime les éléments du tableau.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
void put(Span< const Real > values) override
Ajoute le tableau values.
void reserve(eBasicDataType dt, Int64 n) override
Réserve de la mémoire pour n objets de type dt.
void putInt32(Int32 value) override
Ajoute l'entier value.
void allocateBuffer() override
Alloue la mémoire du sérialiseur.
void get(ArrayView< Real > values) override
Récupère le tableau values.
Int32 getInt32() override
Récupère un entier naturel.
void setMode(eMode new_mode) override
Positionne le fonctionnement actuel.
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.
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.
@ 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.
Implémentation d'un tampon pour la sérialisation.
Chaîne de caractères unicode.
Int64 length() const
Retourne la longueur de la chaîne.
const char * localstr() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
__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.
@ ReduceMax
Maximum des valeurs.
-*- 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....
ArrayView< Byte > ByteArrayView
Equivalent C d'un tableau à une dimension de caractères.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
double Real
Type représentant un réel.
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
unsigned char Byte
Type d'un octet.
@ DT_Int32
Donnée de type entier 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.