14#include "arcane/utils/Array.h"
15#include "arcane/utils/Iostream.h"
16#include "arcane/utils/String.h"
18#include "arcane/impl/VariableUtilities.h"
20#include "arcane/IVariable.h"
21#include "arcane/IParallelMng.h"
22#include "arcane/IVariableMng.h"
23#include "arcane/VariableDependInfo.h"
24#include "arcane/VariableCollection.h"
25#include "arcane/SerializeBuffer.h"
38VariableUtilities(IVariableMng* vm)
39: TraceAccessor(vm->traceMng())
58void VariableUtilities::
71void VariableUtilities::
81void VariableUtilities::
94 <<
" time=" <<
var->modifiedTime()
110void VariableUtilities::
111_dumpDependencies(VariableDependInfo& vdi,std::ostream& ostr,
bool is_recursive,
112 std::set<IVariable*>& done_vars,Integer indent_level)
114 IVariable* var = vdi.variable();
115 bool no_cycle = done_vars.find(var)==done_vars.end();
116 bool do_depend = no_cycle;
119 done_vars.insert(var);
121 std::string indent_str;
122 for( Integer i=0; i<indent_level; ++i )
123 indent_str.push_back(
' ');
125 UniqueArray<VariableDependInfo> depends;
126 var->dependInfos(depends);
127 Integer nb_depend = depends.size();
131 <<
" time=" << var->modifiedTime()
132 <<
" nb_depend=" << nb_depend
133 <<
" trace_info=" << vdi.traceInfo();
138 if (do_depend && nb_depend!=0){
139 ostr << indent_str <<
"{\n";
140 for( Integer i=0; i<nb_depend; ++i ){
141 _dumpDependencies(depends[i],ostr,
true,done_vars,indent_level+2);
143 ostr << indent_str <<
"}\n";
168 info(4) <<
"CHECK: nb_variable_to_compare=" <<
nb_var;
172 send_buf.
setMode(ISerializer::ModeReserve);
173 send_buf.reserveInteger(1);
174 for( Integer i=0; i<
nb_var; ++i ){
179 send_buf.
setMode(ISerializer::ModePut);
181 for( Integer i=0; i<
nb_var; ++i ){
192 recv_buf.
setMode(ISerializer::ModeGet);
193 for( Integer i=0; i<nb_rank; ++i ){
195 info(5) <<
"String recv_nb_var_rank rank=" << i <<
" n=" <<
nb_var_rank;
203 vo->second =
vo->second + 1;
213 for( Integer i=0; i<
nb_var; ++i ){
219 if (
i_var->second!=nb_rank){
221 info() <<
"ERROR: can not compare variable '" <<
var->fullName()
222 <<
"' because it is not defined on all replica nb_define=" <<
i_var->second;
Interface du gestionnaire de parallélisme pour un sous-domaine.
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....
Interface d'une variable.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Implémentation d'un tampon pour la sérialisation.
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.
Integer getInteger() override
Récupère une taille.
void put(Span< const Real > values) override
Ajoute le tableau values.
void setMode(eMode new_mode) override
Positionne le fonctionnement actuel.
void putInteger(Integer value) override
Ajoute l'entier value.
void get(RealArrayView values) override
Récupère le tableau values.
Chaîne de caractères unicode.
Int32 Integer
Type représentant un entier.