From 67cd30be06d428c5cf582110836b0789face902d Mon Sep 17 00:00:00 2001 From: "Godoy, William F" <godoywf@ornl.gov> Date: Tue, 24 Oct 2017 22:28:20 -0400 Subject: [PATCH] Make BPLS2 friend of BPFileReader Engine --- source/adios2/engine/bp/BPFileReader.h | 7 +++++ source/utils/bpls2/BPLS2.cpp | 38 ++++++++++++++++++++++++++ source/utils/bpls2/BPLS2.h | 2 ++ source/utils/bpls2/main.cpp | 5 ++++ 4 files changed, 52 insertions(+) diff --git a/source/adios2/engine/bp/BPFileReader.h b/source/adios2/engine/bp/BPFileReader.h index 4c123500e..9a2427de1 100644 --- a/source/adios2/engine/bp/BPFileReader.h +++ b/source/adios2/engine/bp/BPFileReader.h @@ -19,9 +19,16 @@ namespace adios2 { +namespace utils +{ +class BPLS2; +} + class BPFileReader : public Engine { + friend class utils::BPLS2; + public: /** * Unique constructor diff --git a/source/utils/bpls2/BPLS2.cpp b/source/utils/bpls2/BPLS2.cpp index 00e87201a..b18b0212c 100644 --- a/source/utils/bpls2/BPLS2.cpp +++ b/source/utils/bpls2/BPLS2.cpp @@ -12,6 +12,11 @@ #include <iostream> +#include "adios2/ADIOSMPICommOnly.h" +#include "adios2/core/ADIOS.h" +#include "adios2/core/IO.h" +#include "adios2/engine/bp/BPFileReader.h" + namespace adios2 { namespace utils @@ -31,6 +36,7 @@ void BPLS2::Run() { ParseArguments(); ProcessParameters(); + ProcessTransport(); } // PRIVATE @@ -175,5 +181,37 @@ void BPLS2::SetParameters(const std::string argument, const bool isLong) } } +void BPLS2::ProcessTransport() const +{ + ADIOS adios(true); + IO &io = adios.DeclareIO("bpls2"); + BPFileReader bpFileReader(io, m_FileName, Mode::Read, io.m_MPIComm); + const auto variablesMap = io.GetAvailableVariables(); + // const auto attributesMap = io.GetAvailableAttributes(); + + if (m_Parameters.count("verbose") == 1) + { + const auto &metadataSet = bpFileReader.m_BP3Deserializer.m_MetadataSet; + std::cout << "File info:\n"; + std::cout << " groups: " << metadataSet.DataPGCount << "\n"; + std::cout << " variables: " << variablesMap.size() << "\n"; + std::cout << " attributes: TODO\n"; + std::cout << " meshes: TODO\n"; + std::cout << " time steps: " << metadataSet.TimeStep << "\n"; + std::cout << " file size: " + << bpFileReader.m_FileManager.GetFileSize(0) << " bytes\n"; + + const auto &minifooter = bpFileReader.m_BP3Deserializer.m_Minifooter; + std::cout << " bp version: " << std::to_string(minifooter.Version) + << "\n"; + std::string endianness("Little Endian"); + if (!minifooter.IsLittleEndian) + { + endianness = "Big Endian"; + } + std::cout << " Endianness: " << endianness << "\n"; + } +} + } // end namespace utils } // end namespace adios2 diff --git a/source/utils/bpls2/BPLS2.h b/source/utils/bpls2/BPLS2.h index 37b2e67a2..f92543797 100644 --- a/source/utils/bpls2/BPLS2.h +++ b/source/utils/bpls2/BPLS2.h @@ -38,6 +38,8 @@ private: void PrintUsage() const noexcept final; void PrintExamples() const noexcept final; void SetParameters(const std::string argument, const bool isLong) final; + + void ProcessTransport() const; }; } // end namespace utils diff --git a/source/utils/bpls2/main.cpp b/source/utils/bpls2/main.cpp index c9fe8694b..f1315b81c 100644 --- a/source/utils/bpls2/main.cpp +++ b/source/utils/bpls2/main.cpp @@ -11,10 +11,13 @@ #include <iostream> #include <stdexcept> +#include "adios2/ADIOSMPI.h" #include "utils/bpls2/BPLS2.h" int main(int argc, char *argv[]) { + MPI_Init(&argc, &argv); + try { adios2::utils::BPLS2 bpls2(argc, argv); @@ -25,4 +28,6 @@ int main(int argc, char *argv[]) std::cout << "bpls2 Caught an Exception\n"; std::cout << e.what() << "\n"; } + + MPI_Finalize(); } -- GitLab