14#include "arcane/core/VariableDiff.h"
16#include "arcane/utils/OStringStream.h"
17#include "arcane/utils/ITraceMng.h"
19#include "arcane/core/IVariable.h"
20#include "arcane/core/IParallelMng.h"
21#include "arcane/core/VariableComparer.h"
34 if constexpr (std::is_same<TrueType, typename VarDataTypeTraits::IsNumeric>::value) {
35 std::sort(std::begin(diffs_info), std::end(diffs_info));
38 ARCANE_UNUSED(diffs_info);
44template <
typename DataType>
void VariableDiff<DataType>::DiffPrinter::
45dump(ConstArrayView<DiffInfo> diffs_info, IVariable* var, IParallelMng* pm,
46 const VariableComparerArgs& compare_args)
48 ITraceMng* msg = pm->traceMng();
49 Int32 sid = pm->commRank();
50 const String& var_name = var->name();
51 Integer nb_diff = diffs_info.size();
53 Int32 max_print = compare_args.maxPrint();
54 if (max_print >= 0 && nb_diff >
static_cast<Integer>(max_print))
57 ostr().precision(FloatInfo<Real>::maxDigit());
58 ostr() << nb_diff <<
" entities having different values for the variable "
60 for (
Integer i = 0; i < nb_print; ++i) {
62 if (di.m_unique_id != NULL_ITEM_UNIQUE_ID) {
64 char type = di.m_is_own ?
'O' :
'G';
65 ostr() <<
"VDIFF: Variable '" << var_name <<
"'"
66 <<
" (" << type <<
")"
67 <<
" uid=" << di.m_unique_id
68 <<
" lid=" << di.m_local_id;
72 ostr() <<
"VDIFF: Variable '" << var_name <<
"'"
73 <<
" index=" << di.m_local_id;
75 if (di.m_sub_index != NULL_ITEM_ID)
76 ostr() <<
" [" << di.m_sub_index <<
"]";
80 bool is_print_default =
true;
81 if constexpr (IsNumeric) {
83 ostr() <<
" val: " << VarDataTypeTraits::normeMax(di.m_current)
84 <<
" ref: " << VarDataTypeTraits::normeMax(di.m_ref)
85 <<
" rdiff: " << VarDataTypeTraits::normeMax(di.m_diff) <<
'\n';
86 is_print_default =
false;
90 if (is_print_default) {
91 ostr() <<
" val: " << di.m_current
92 <<
" ref: " << di.m_ref <<
" rdiff: " << di.m_diff <<
'\n';
95 msg->pinfo() <<
"Processor " << sid <<
" : " << nb_diff
96 <<
" values are different on the variable "
104template class VariableDiff<Byte>::DiffPrinter;
105template class VariableDiff<Real>::DiffPrinter;
106template class VariableDiff<Int8>::DiffPrinter;
107template class VariableDiff<Int16>::DiffPrinter;
108template class VariableDiff<Int32>::DiffPrinter;
109template class VariableDiff<Int64>::DiffPrinter;
110template class VariableDiff<BFloat16>::DiffPrinter;
111template class VariableDiff<Float16>::DiffPrinter;
112template class VariableDiff<Float32>::DiffPrinter;
113template class VariableDiff<Real2>::DiffPrinter;
114template class VariableDiff<Real2x2>::DiffPrinter;
115template class VariableDiff<Real3>::DiffPrinter;
116template class VariableDiff<Real3x3>::DiffPrinter;
117template class VariableDiff<String>::DiffPrinter;
Vue modifiable d'un tableau d'un type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
@ LocalNormMax
Utilise (v1-v2) / local_norm_max.
Int32 Integer
Type représentant un entier.
std::int32_t Int32
Type entier signé sur 32 bits.