From c2f22c203483a26803babb741cfee6542507cfa3 Mon Sep 17 00:00:00 2001 From: "Godoy, William F" <williamfgc@yahoo.com> Date: Fri, 28 Jun 2019 20:31:16 -0400 Subject: [PATCH] Exposes IsReverseDims in BlockInfo --- bindings/CXX11/adios2/cxx11/Engine.tcc | 1 + bindings/CXX11/adios2/cxx11/Variable.h | 2 ++ bindings/CXX11/adios2/cxx11/Variable.tcc | 1 + source/adios2/core/Variable.h | 1 + source/adios2/toolkit/format/bp3/BP3Deserializer.tcc | 1 + source/adios2/toolkit/format/bp4/BP4Deserializer.tcc | 1 + testing/adios2/bindings/fortran/TestF2C_BPReadFBlocks.cpp | 2 ++ testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp | 2 ++ 8 files changed, 11 insertions(+) diff --git a/bindings/CXX11/adios2/cxx11/Engine.tcc b/bindings/CXX11/adios2/cxx11/Engine.tcc index 06e649238..024f38dd0 100644 --- a/bindings/CXX11/adios2/cxx11/Engine.tcc +++ b/bindings/CXX11/adios2/cxx11/Engine.tcc @@ -41,6 +41,7 @@ ToBlocksInfo(const std::vector<typename core::Variable< blockInfo.Start = coreBlockInfo.Start; blockInfo.Count = coreBlockInfo.Count; blockInfo.IsValue = coreBlockInfo.IsValue; + blockInfo.IsReverseDims = coreBlockInfo.IsReverseDims; if (blockInfo.IsValue) { blockInfo.Value = coreBlockInfo.Value; diff --git a/bindings/CXX11/adios2/cxx11/Variable.h b/bindings/CXX11/adios2/cxx11/Variable.h index 425ab0033..aec1f15dc 100644 --- a/bindings/CXX11/adios2/cxx11/Variable.h +++ b/bindings/CXX11/adios2/cxx11/Variable.h @@ -348,6 +348,8 @@ public: size_t Step = 0; /** reference to internal block data (used by inline Engine) */ const T *Data() const; + /** true: Dims were swapped from column-major, false: not swapped */ + bool IsReverseDims = false; // allow Engine to set m_Info friend class Engine; diff --git a/bindings/CXX11/adios2/cxx11/Variable.tcc b/bindings/CXX11/adios2/cxx11/Variable.tcc index fe8a0f1c2..ef01d9818 100644 --- a/bindings/CXX11/adios2/cxx11/Variable.tcc +++ b/bindings/CXX11/adios2/cxx11/Variable.tcc @@ -37,6 +37,7 @@ ToBlocksInfo(const std::vector<typename core::Variable< typename Variable<T>::Info blockInfo; blockInfo.Start = coreBlockInfo.Start; blockInfo.Count = coreBlockInfo.Count; + blockInfo.IsReverseDims = coreBlockInfo.IsReverseDims; blockInfo.IsValue = coreBlockInfo.IsValue; if (blockInfo.IsValue) { diff --git a/source/adios2/core/Variable.h b/source/adios2/core/Variable.h index 36dd50d7e..67c541272 100644 --- a/source/adios2/core/Variable.h +++ b/source/adios2/core/Variable.h @@ -101,6 +101,7 @@ public: std::vector<T> BufferV; SelectionType Selection = SelectionType::BoundingBox; bool IsValue = false; + bool IsReverseDims = false; }; /** use for multiblock info */ diff --git a/source/adios2/toolkit/format/bp3/BP3Deserializer.tcc b/source/adios2/toolkit/format/bp3/BP3Deserializer.tcc index ae5192177..3a6d638d6 100644 --- a/source/adios2/toolkit/format/bp3/BP3Deserializer.tcc +++ b/source/adios2/toolkit/format/bp3/BP3Deserializer.tcc @@ -1086,6 +1086,7 @@ std::vector<typename core::Variable<T>::Info> BP3Deserializer::BlocksInfoCommon( blockInfo.Shape = blockCharacteristics.Shape; blockInfo.Start = blockCharacteristics.Start; blockInfo.Count = blockCharacteristics.Count; + blockInfo.IsReverseDims = m_ReverseDimensions; if (m_ReverseDimensions) { diff --git a/source/adios2/toolkit/format/bp4/BP4Deserializer.tcc b/source/adios2/toolkit/format/bp4/BP4Deserializer.tcc index 3947ec976..8e1794877 100644 --- a/source/adios2/toolkit/format/bp4/BP4Deserializer.tcc +++ b/source/adios2/toolkit/format/bp4/BP4Deserializer.tcc @@ -1147,6 +1147,7 @@ std::vector<typename core::Variable<T>::Info> BP4Deserializer::BlocksInfoCommon( blockInfo.Shape = blockCharacteristics.Shape; blockInfo.Start = blockCharacteristics.Start; blockInfo.Count = blockCharacteristics.Count; + blockInfo.IsReverseDims = m_ReverseDimensions; if (m_ReverseDimensions) { diff --git a/testing/adios2/bindings/fortran/TestF2C_BPReadFBlocks.cpp b/testing/adios2/bindings/fortran/TestF2C_BPReadFBlocks.cpp index edc8a7771..75fb4cb19 100644 --- a/testing/adios2/bindings/fortran/TestF2C_BPReadFBlocks.cpp +++ b/testing/adios2/bindings/fortran/TestF2C_BPReadFBlocks.cpp @@ -62,6 +62,7 @@ TEST_F(BPReadFBlocks, FHeatMap2D) EXPECT_EQ(r32Blocks[i].Start[1], 0); EXPECT_EQ(r32Blocks[i].Count[1], var_r32.Shape()[1]); + EXPECT_TRUE(r32Blocks[i].IsReverseDims); } } } @@ -113,6 +114,7 @@ TEST_F(BPReadFBlocks, FHeatMap3D) EXPECT_EQ(r32Blocks[i].Start[2], 0); EXPECT_EQ(r32Blocks[i].Count[2], var_r32.Shape()[2]); + EXPECT_EQ(r32Blocks[i].IsReverseDims, true); } } } diff --git a/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp b/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp index 4043e17f5..4e533f544 100644 --- a/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp +++ b/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp @@ -42,6 +42,7 @@ void CheckAllStepsBlockInfo1D( EXPECT_EQ(allStepsBlocksInfo[s][b].Start[0], b * Nx); EXPECT_EQ(allStepsBlocksInfo[s][b].Count[0], Nx); EXPECT_EQ(allStepsBlocksInfo[s][b].Step, s); + EXPECT_FALSE(allStepsBlocksInfo[s][b].IsReverseDims); } } } @@ -64,6 +65,7 @@ void CheckAllStepsBlockInfo2D( EXPECT_EQ(allStepsBlocksInfo[s][b].Count[0], Ny); EXPECT_EQ(allStepsBlocksInfo[s][b].Count[1], Nx); EXPECT_EQ(allStepsBlocksInfo[s][b].Step, s); + EXPECT_FALSE(allStepsBlocksInfo[s][b].IsReverseDims); } } } -- GitLab