Loading source/adios2/core/Engine.tcc +2 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ void Engine::CommonChecks(Variable<T> &variable, const T *data, data, "for data argument in non-zero count block, " + hint); } /* Commented out by Jason for allowing SetMemorySelection on reader if (!variable.m_MemoryStart.empty() && m_OpenMode == adios2::Mode::Read) { throw std::invalid_argument("ERROR: from Engine " + m_Name + Loading @@ -194,6 +195,7 @@ void Engine::CommonChecks(Variable<T> &variable, const T *data, "mode, " + hint + "\n"); } */ } } // end namespace core Loading source/adios2/engine/dataman/DataManCommon.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,8 @@ namespace engine DataManCommon::DataManCommon(const std::string engineType, IO &io, const std::string &name, const Mode mode, MPI_Comm mpiComm) : Engine(engineType, io, name, mode, mpiComm) : Engine(engineType, io, name, mode, mpiComm), m_FileTransport(mpiComm, m_DebugMode) { // initialize parameters Loading source/adios2/engine/dataman/DataManCommon.h +4 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include "adios2/ADIOSConfig.h" #include "adios2/ADIOSMacros.h" #include "adios2/core/Engine.h" #include "adios2/toolkit/transport/file/FileFStream.h" #include "adios2/toolkit/transportman/dataman/DataMan.h" namespace adios2 Loading Loading @@ -44,6 +45,9 @@ protected: bool m_IsLittleEndian; bool m_IsRowMajor; bool m_ContiguousMajor = false; transport::FileFStream m_FileTransport; std::vector<std::string> m_StreamNames; std::vector<core::Operator *> m_Callbacks; Loading source/adios2/engine/dataman/DataManReader.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ namespace engine DataManReader::DataManReader(IO &io, const std::string &name, const Mode mode, MPI_Comm mpiComm) : DataManCommon("DataManReader", io, name, mode, mpiComm), m_DataManDeserializer(m_IsRowMajor, m_IsLittleEndian) m_DataManDeserializer(m_IsRowMajor, m_ContiguousMajor, m_IsLittleEndian) { m_EndMessage = " in call to IO Open DataManReader " + m_Name + "\n"; Init(); Loading Loading @@ -150,10 +150,10 @@ void DataManReader::Flush(const int transportIndex) {} void DataManReader::Init() { if (m_WorkflowMode != "subscribe" && m_WorkflowMode != "p2p") if (m_WorkflowMode == "file") { throw(std::invalid_argument( "[DataManReader::Init] invalid workflow mode " + m_WorkflowMode)); m_FileTransport.Open(m_Name, Mode::Read); return; } // initialize transports Loading source/adios2/engine/dataman/DataManReader.tcc +27 −6 Original line number Diff line number Diff line Loading @@ -32,20 +32,41 @@ void DataManReader::GetSyncCommon(Variable<T> &variable, T *data) template <class T> void DataManReader::GetDeferredCommon(Variable<T> &variable, T *data) { if (m_WorkflowMode == "subscribe") if (m_IsRowMajor) { while (m_DataManDeserializer.Get(data, variable.m_Name, variable.m_Start, variable.m_Count, m_CurrentStep) != 0) m_CurrentStep, variable.m_MemoryStart, variable.m_MemoryCount) != 0) { } } else if (m_WorkflowMode == "p2p") else { while (m_DataManDeserializer.Get(data, variable.m_Name, variable.m_Start, variable.m_Count, m_CurrentStep) != 0) if (m_ContiguousMajor) { Dims start = variable.m_Start; Dims count = variable.m_Count; Dims memstart = variable.m_MemoryStart; Dims memcount = variable.m_MemoryCount; std::reverse(start.begin(), start.end()); std::reverse(count.begin(), count.end()); std::reverse(memstart.begin(), memstart.end()); std::reverse(memcount.begin(), memcount.end()); while (m_DataManDeserializer.Get(data, variable.m_Name, start, count, m_CurrentStep, memstart, memcount) != 0) { } } else { while (m_DataManDeserializer.Get( data, variable.m_Name, variable.m_Start, variable.m_Count, m_CurrentStep, variable.m_MemoryStart, variable.m_MemoryCount) != 0) { } } } } Loading Loading
source/adios2/core/Engine.tcc +2 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ void Engine::CommonChecks(Variable<T> &variable, const T *data, data, "for data argument in non-zero count block, " + hint); } /* Commented out by Jason for allowing SetMemorySelection on reader if (!variable.m_MemoryStart.empty() && m_OpenMode == adios2::Mode::Read) { throw std::invalid_argument("ERROR: from Engine " + m_Name + Loading @@ -194,6 +195,7 @@ void Engine::CommonChecks(Variable<T> &variable, const T *data, "mode, " + hint + "\n"); } */ } } // end namespace core Loading
source/adios2/engine/dataman/DataManCommon.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,8 @@ namespace engine DataManCommon::DataManCommon(const std::string engineType, IO &io, const std::string &name, const Mode mode, MPI_Comm mpiComm) : Engine(engineType, io, name, mode, mpiComm) : Engine(engineType, io, name, mode, mpiComm), m_FileTransport(mpiComm, m_DebugMode) { // initialize parameters Loading
source/adios2/engine/dataman/DataManCommon.h +4 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include "adios2/ADIOSConfig.h" #include "adios2/ADIOSMacros.h" #include "adios2/core/Engine.h" #include "adios2/toolkit/transport/file/FileFStream.h" #include "adios2/toolkit/transportman/dataman/DataMan.h" namespace adios2 Loading Loading @@ -44,6 +45,9 @@ protected: bool m_IsLittleEndian; bool m_IsRowMajor; bool m_ContiguousMajor = false; transport::FileFStream m_FileTransport; std::vector<std::string> m_StreamNames; std::vector<core::Operator *> m_Callbacks; Loading
source/adios2/engine/dataman/DataManReader.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ namespace engine DataManReader::DataManReader(IO &io, const std::string &name, const Mode mode, MPI_Comm mpiComm) : DataManCommon("DataManReader", io, name, mode, mpiComm), m_DataManDeserializer(m_IsRowMajor, m_IsLittleEndian) m_DataManDeserializer(m_IsRowMajor, m_ContiguousMajor, m_IsLittleEndian) { m_EndMessage = " in call to IO Open DataManReader " + m_Name + "\n"; Init(); Loading Loading @@ -150,10 +150,10 @@ void DataManReader::Flush(const int transportIndex) {} void DataManReader::Init() { if (m_WorkflowMode != "subscribe" && m_WorkflowMode != "p2p") if (m_WorkflowMode == "file") { throw(std::invalid_argument( "[DataManReader::Init] invalid workflow mode " + m_WorkflowMode)); m_FileTransport.Open(m_Name, Mode::Read); return; } // initialize transports Loading
source/adios2/engine/dataman/DataManReader.tcc +27 −6 Original line number Diff line number Diff line Loading @@ -32,20 +32,41 @@ void DataManReader::GetSyncCommon(Variable<T> &variable, T *data) template <class T> void DataManReader::GetDeferredCommon(Variable<T> &variable, T *data) { if (m_WorkflowMode == "subscribe") if (m_IsRowMajor) { while (m_DataManDeserializer.Get(data, variable.m_Name, variable.m_Start, variable.m_Count, m_CurrentStep) != 0) m_CurrentStep, variable.m_MemoryStart, variable.m_MemoryCount) != 0) { } } else if (m_WorkflowMode == "p2p") else { while (m_DataManDeserializer.Get(data, variable.m_Name, variable.m_Start, variable.m_Count, m_CurrentStep) != 0) if (m_ContiguousMajor) { Dims start = variable.m_Start; Dims count = variable.m_Count; Dims memstart = variable.m_MemoryStart; Dims memcount = variable.m_MemoryCount; std::reverse(start.begin(), start.end()); std::reverse(count.begin(), count.end()); std::reverse(memstart.begin(), memstart.end()); std::reverse(memcount.begin(), memcount.end()); while (m_DataManDeserializer.Get(data, variable.m_Name, start, count, m_CurrentStep, memstart, memcount) != 0) { } } else { while (m_DataManDeserializer.Get( data, variable.m_Name, variable.m_Start, variable.m_Count, m_CurrentStep, variable.m_MemoryStart, variable.m_MemoryCount) != 0) { } } } } Loading