From fc5a94749a0fdce1b289ac2696a68cd105d685b8 Mon Sep 17 00:00:00 2001 From: Gilles Grospellier Date: Mon, 2 Sep 2024 11:23:55 +0200 Subject: [PATCH 1/2] =?UTF-8?q?[arcane,impl]=20Ajoute=20possibilit=C3=A9?= =?UTF-8?q?=20de=20v=C3=A9rifier=20la=20coh=C3=A9rence=20des=20synchronisa?= =?UTF-8?q?tions.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- arcane/src/arcane/impl/VariableSynchronizer.cc | 7 +++++++ arcane/src/arcane/impl/internal/VariableSynchronizer.h | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/arcane/src/arcane/impl/VariableSynchronizer.cc b/arcane/src/arcane/impl/VariableSynchronizer.cc index 88b0d95a0..46a278ece 100644 --- a/arcane/src/arcane/impl/VariableSynchronizer.cc +++ b/arcane/src/arcane/impl/VariableSynchronizer.cc @@ -18,6 +18,7 @@ #include "arcane/utils/FatalErrorException.h" #include "arcane/utils/ITraceMng.h" #include "arcane/utils/IMemoryRessourceMng.h" +#include "arcane/utils/ValueConvert.h" #include "arcane/utils/internal/MemoryBuffer.h" #include "arcane/core/VariableSynchronizerEventArgs.h" @@ -224,6 +225,10 @@ VariableSynchronizer(IParallelMng* pm, const ItemGroup& group, m_trace_sync = true; } + // Indique si on vérifie la cohérence des variables synchronisées + if (auto v = Convert::Type::tryParseFromEnvironment("ARCANE_CHECK_SYNCHRONIZE_COHERENCE",true)) + m_is_check_coherence = (v.value()!=0); + m_default_message = _buildMessage(); m_partial_message = makeRef(_buildMessage(m_partial_sync_info)); } @@ -424,6 +429,8 @@ _synchronize(IVariable* var, SyncMessage* message) message->initialize(var); IParallelMng* pm = m_parallel_mng; + if (m_is_check_coherence) + MessagePassing::namedBarrier(pm,var->name()); debug(Trace::High) << " Proc " << pm->commRank() << " Sync variable " << var->fullName(); if (m_trace_sync) { info() << " Synchronize variable " << var->fullName() diff --git a/arcane/src/arcane/impl/internal/VariableSynchronizer.h b/arcane/src/arcane/impl/internal/VariableSynchronizer.h index 1f7fea6bf..bca470a20 100644 --- a/arcane/src/arcane/impl/internal/VariableSynchronizer.h +++ b/arcane/src/arcane/impl/internal/VariableSynchronizer.h @@ -76,11 +76,11 @@ class ARCANE_IMPL_EXPORT VariableSynchronizer void synchronize(IVariable* var) override; void synchronize(IVariable* var, Int32ConstArrayView local_ids) override; - + void synchronize(VariableCollection vars) override; void synchronize(VariableCollection vars, Int32ConstArrayView local_ids) override; - + Int32ConstArrayView communicatingRanks() override; Int32ConstArrayView sharedItems(Int32 index) override; @@ -116,7 +116,8 @@ class ARCANE_IMPL_EXPORT VariableSynchronizer Ref m_partial_sync_info; Ref m_partial_message; UniqueArray m_partial_local_ids; - + bool m_is_check_coherence = false; + private: void _synchronize(IVariable* var, SyncMessage* message); From a3c7348aa2b20faa28ff702c28b761fa40953e72 Mon Sep 17 00:00:00 2001 From: Gilles Grospellier Date: Mon, 2 Sep 2024 11:21:00 +0200 Subject: [PATCH 2/2] =?UTF-8?q?[arcane,tests]=20Ajoute=20test=20pour=20la?= =?UTF-8?q?=20v=C3=A9rification=20de=20la=20coh=C3=A9rence=20des=20synchro?= =?UTF-8?q?nisations.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- arcane/src/arcane/tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arcane/src/arcane/tests/CMakeLists.txt b/arcane/src/arcane/tests/CMakeLists.txt index 5bd90a0f4..06dbe0807 100644 --- a/arcane/src/arcane/tests/CMakeLists.txt +++ b/arcane/src/arcane/tests/CMakeLists.txt @@ -418,7 +418,7 @@ arcane_add_test_parallel(parallel2_synchronize_compare testParallel-synchronize1 arcane_add_test_parallel(parallel2_synchronize_legacymulti testParallel-synchronize1.arc 4 -We,ARCANE_USE_LEGACY_MULTISYNCHRONIZE,1) arcane_add_test_parallel(parallel2_synchronize_v1 testParallel-synchronize1.arc 4 -We,ARCANE_SYNCHRONIZE_VERSION,1) arcane_add_test_parallel(parallel2_synchronize_v2 testParallel-synchronize1.arc 4 -We,ARCANE_SYNCHRONIZE_VERSION,2) -arcane_add_test_parallel(parallel2_synchronize_v3 testParallel-synchronize1.arc 4 -We,ARCANE_SYNCHRONIZE_VERSION,3) +arcane_add_test_parallel(parallel2_synchronize_v3 testParallel-synchronize1.arc 4 -We,ARCANE_SYNCHRONIZE_VERSION,3 -We,ARCANE_CHECK_SYNCHRONIZE_COHERENCE,1) arcane_add_test_parallel(parallel2_synchronize_v4 testParallel-synchronize1.arc 4 -We,ARCANE_SYNCHRONIZE_VERSION,4 -We,ARCANE_SYNCHRONIZE_NB_SEQUENCE,3) arcane_add_test_parallel(parallel2_synchronize_v4_b1024 testParallel-synchronize1.arc 4 -We,ARCANE_SYNCHRONIZE_VERSION,4 -We,ARCANE_SYNCHRONIZE_BLOCK_SIZE,1024) arcane_add_test_parallel(parallel2_synchronize testParallel-synchronize2.arc 8)