From bc3024acae7dcc300da3804f4fead07c22d0308d Mon Sep 17 00:00:00 2001 From: Greg Eisenhauer Date: Thu, 9 Sep 2021 14:51:41 -0400 Subject: [PATCH] Enable More BP5 Tests --- .../toolkit/format/bp5/BP5Deserializer.cpp | 2 ++ .../adios2/toolkit/format/bp5/BP5Serializer.cpp | 9 ++++++++- source/utils/bpls/bpls.cpp | 16 +++++++++++++--- testing/adios2/engine/bp/CMakeLists.txt | 4 ++-- .../engine/bp/TestBPWriteAggregateRead.cpp | 9 ++++++--- .../engine/bp/TestBPWriteReadBlockInfo.cpp | 6 ++++-- 6 files changed, 35 insertions(+), 11 deletions(-) diff --git a/source/adios2/toolkit/format/bp5/BP5Deserializer.cpp b/source/adios2/toolkit/format/bp5/BP5Deserializer.cpp index 3b440b3eaf..8252070bd8 100644 --- a/source/adios2/toolkit/format/bp5/BP5Deserializer.cpp +++ b/source/adios2/toolkit/format/bp5/BP5Deserializer.cpp @@ -476,6 +476,8 @@ void BP5Deserializer::InstallMetaData(void *MetadataBlock, size_t BlockLen, VarRec->Variable = ArrayVarSetup( m_Engine, VarRec->VarName, VarRec->Type, meta_base->Dims, meta_base->Shape, meta_base->Offsets, meta_base->Count); + static_cast(VarRec->Variable)->m_Engine = + m_Engine; VarByKey[VarRec->Variable] = VarRec; VarRec->LastTSAdded = Step; // starts at 1 } diff --git a/source/adios2/toolkit/format/bp5/BP5Serializer.cpp b/source/adios2/toolkit/format/bp5/BP5Serializer.cpp index 6aab15cfdd..b19c415abc 100644 --- a/source/adios2/toolkit/format/bp5/BP5Serializer.cpp +++ b/source/adios2/toolkit/format/bp5/BP5Serializer.cpp @@ -8,6 +8,7 @@ #include "adios2/core/Attribute.h" #include "adios2/core/IO.h" +#include "adios2/core/VariableBase.h" #include "adios2/helper/adiosMemory.h" #include "adios2/toolkit/format/buffer/ffs/BufferFFS.h" #include // max_align_t @@ -453,12 +454,18 @@ void BP5Serializer::Marshal(void *Variable, const char *Name, BufferV::BufferPos *Span) { + core::VariableBase *VB = static_cast(Variable); + FFSMetadataInfoStruct *MBase; BP5WriterRec Rec = LookupWriterRec(Variable); bool DeferAddToVec; + if (VB->m_SingleValue) + { + DimCount = 0; + } if (!Rec) { Rec = CreateWriterRec(Variable, Name, Type, ElemSize, DimCount); @@ -482,7 +489,7 @@ void BP5Serializer::Marshal(void *Variable, const char *Name, int AlreadyWritten = FFSBitfieldTest(MBase, Rec->FieldID); FFSBitfieldSet(MBase, Rec->FieldID); - if (Rec->DimCount == 0) + if (VB->m_SingleValue) { if (Type != DataType::String) memcpy((char *)(MetadataBuf) + Rec->MetaOffset, Data, ElemSize); diff --git a/source/utils/bpls/bpls.cpp b/source/utils/bpls/bpls.cpp index 7603a568b0..d2398d0658 100644 --- a/source/utils/bpls/bpls.cpp +++ b/source/utils/bpls/bpls.cpp @@ -1522,7 +1522,14 @@ int doList(const char *path) io.SetEngine(engineName); try { - fp = &io.Open(path, Mode::Read); + if (timestep) + { + fp = &io.Open(path, Mode::Read); + } + else + { + fp = &io.Open(path, Mode::ReadRandomAccess); + } if (engineName == "FileStream") { filestream = true; @@ -1550,8 +1557,11 @@ int doList(const char *path) if (verbose) { printf("File info:\n"); - printf(" of variables: %zu\n", io.GetVariables().size()); - printf(" of attributes: %zu\n", io.GetAttributes().size()); + if (!timestep) + { + printf(" of variables: %zu\n", io.GetVariables().size()); + printf(" of attributes: %zu\n", io.GetAttributes().size()); + } // printf(" of meshes: %d\n", fp->nmeshes); // print_file_size(fp->file_size); // printf(" bp version: %d\n", fp->version); diff --git a/testing/adios2/engine/bp/CMakeLists.txt b/testing/adios2/engine/bp/CMakeLists.txt index ae1723728e..2dbbfdc9ab 100644 --- a/testing/adios2/engine/bp/CMakeLists.txt +++ b/testing/adios2/engine/bp/CMakeLists.txt @@ -58,7 +58,7 @@ bp3_bp4_gtest_add_tests_helper(ChangingShape MPI_ALLOW) bp3_bp4_gtest_add_tests_helper(WriteReadBlockInfo MPI_ALLOW) bp_gtest_add_tests_helper(WriteReadVariableSpan MPI_ALLOW) bp3_bp4_gtest_add_tests_helper(TimeAggregation MPI_ALLOW) -bp3_bp4_gtest_add_tests_helper(NoXMLRecovery MPI_ALLOW) +bp_gtest_add_tests_helper(NoXMLRecovery MPI_ALLOW) bp3_bp4_gtest_add_tests_helper(StepsFileGlobalArray MPI_ALLOW) bp3_bp4_gtest_add_tests_helper(StepsFileLocalArray MPI_ALLOW) bp3_bp4_gtest_add_tests_helper(SelectSteps MPI_ALLOW) @@ -71,7 +71,7 @@ if(NOT MSVC) endif() if(ADIOS2_HAVE_MPI) - bp3_bp4_gtest_add_tests_helper(WriteAggregateRead MPI_ONLY) + bp_gtest_add_tests_helper(WriteAggregateRead MPI_ONLY) endif() # BP3 only for now diff --git a/testing/adios2/engine/bp/TestBPWriteAggregateRead.cpp b/testing/adios2/engine/bp/TestBPWriteAggregateRead.cpp index 7def0b3092..44ecba0b65 100644 --- a/testing/adios2/engine/bp/TestBPWriteAggregateRead.cpp +++ b/testing/adios2/engine/bp/TestBPWriteAggregateRead.cpp @@ -174,7 +174,8 @@ void WriteAggRead1D8(const std::string substreams) io.SetEngine(engineName); } - adios2::Engine bpReader = io.Open(fname, adios2::Mode::Read); + adios2::Engine bpReader = + io.Open(fname, adios2::Mode::ReadRandomAccess); auto var_iString = io.InquireVariable("iString"); EXPECT_TRUE(var_iString); @@ -491,7 +492,8 @@ void WriteAggRead2D4x2(const std::string substreams) io.SetEngine(engineName); } - adios2::Engine bpReader = io.Open(fname, adios2::Mode::Read); + adios2::Engine bpReader = + io.Open(fname, adios2::Mode::ReadRandomAccess); auto var_iString = io.InquireVariable("iString"); EXPECT_TRUE(var_iString); @@ -808,7 +810,8 @@ void WriteAggRead2D2x4(const std::string substreams) { io.SetEngine(engineName); } - adios2::Engine bpReader = io.Open(fname, adios2::Mode::Read); + adios2::Engine bpReader = + io.Open(fname, adios2::Mode::ReadRandomAccess); auto var_i8 = io.InquireVariable("i8"); EXPECT_TRUE(var_i8); diff --git a/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp b/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp index e776c2162b..c1921cce7c 100644 --- a/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp +++ b/testing/adios2/engine/bp/TestBPWriteReadBlockInfo.cpp @@ -236,7 +236,8 @@ TEST_F(BPWriteReadBlockInfo, BPWriteReadBlockInfo1D8) { io.SetEngine("BPFile"); } - adios2::Engine bpReader = io.Open(fname, adios2::Mode::Read); + adios2::Engine bpReader = + io.Open(fname, adios2::Mode::ReadRandomAccess); auto var_local = io.InquireVariable("local"); auto var_localStr = io.InquireVariable("localStr"); @@ -556,7 +557,8 @@ TEST_F(BPWriteReadBlockInfo, BPWriteReadBlockInfo2D2x4) // Create the BP Engine io.SetEngine("BPFile"); } - adios2::Engine bpReader = io.Open(fname, adios2::Mode::Read); + adios2::Engine bpReader = + io.Open(fname, adios2::Mode::ReadRandomAccess); auto var_iString = io.InquireVariable("iString"); auto var_i8 = io.InquireVariable("i8");