Loading source/adios2/engine/bp5/BP5Writer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -547,12 +547,14 @@ void BP5Writer::EndStep() m_Profiler.Start("AWD"); // TSInfo destructor would delete the DataBuffer so we need to save it // for async IO and let the writer free it up when not needed anymore adios2::format::BufferV *databuf = TSInfo.DataBuffer; TSInfo.DataBuffer = NULL; m_AsyncWriteLock.lock(); m_flagRush = false; m_AsyncWriteLock.unlock(); WriteData(databuf); // WriteData will free TSInfo.DataBuffer WriteData(TSInfo.DataBuffer); TSInfo.DataBuffer = NULL; m_Profiler.Stop("AWD"); /* Loading source/adios2/toolkit/format/bp5/BP5Serializer.cpp +14 −6 Original line number Diff line number Diff line Loading @@ -1333,19 +1333,27 @@ BP5Serializer::TimestepInfo BP5Serializer::CloseTimestep(int timestep, MBase->BitField = tmp; NewAttribute = false; struct TimestepInfo Ret { Formats, Metadata, AttrData, CurDataBuffer }; struct TimestepInfo Ret; Ret.NewMetaMetaBlocks = Formats; Ret.MetaEncodeBuffer.reset(Metadata); Ret.AttributeEncodeBuffer.reset(AttrData); Ret.DataBuffer = CurDataBuffer; CurDataBuffer = NULL; if (Info.AttributeFields) { free_FMfield_list(Info.AttributeFields); Info.AttributeFields = NULL; } Info.AttributeFieldCount = 0; if (Info.AttributeData) { free(Info.AttributeData); Info.AttributeData = NULL; } Info.AttributeSize = 0; return Ret; } Loading source/adios2/toolkit/format/bp5/BP5Serializer.h +3 −11 Original line number Diff line number Diff line Loading @@ -36,17 +36,9 @@ public: struct TimestepInfo { std::vector<MetaMetaInfoBlock> NewMetaMetaBlocks; Buffer *MetaEncodeBuffer; Buffer *AttributeEncodeBuffer; std::shared_ptr<Buffer> MetaEncodeBuffer; std::shared_ptr<Buffer> AttributeEncodeBuffer; BufferV* DataBuffer; ~TimestepInfo() { delete MetaEncodeBuffer; if (AttributeEncodeBuffer) delete AttributeEncodeBuffer; delete DataBuffer; } }; typedef struct _MetadataInfo Loading Loading
source/adios2/engine/bp5/BP5Writer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -547,12 +547,14 @@ void BP5Writer::EndStep() m_Profiler.Start("AWD"); // TSInfo destructor would delete the DataBuffer so we need to save it // for async IO and let the writer free it up when not needed anymore adios2::format::BufferV *databuf = TSInfo.DataBuffer; TSInfo.DataBuffer = NULL; m_AsyncWriteLock.lock(); m_flagRush = false; m_AsyncWriteLock.unlock(); WriteData(databuf); // WriteData will free TSInfo.DataBuffer WriteData(TSInfo.DataBuffer); TSInfo.DataBuffer = NULL; m_Profiler.Stop("AWD"); /* Loading
source/adios2/toolkit/format/bp5/BP5Serializer.cpp +14 −6 Original line number Diff line number Diff line Loading @@ -1333,19 +1333,27 @@ BP5Serializer::TimestepInfo BP5Serializer::CloseTimestep(int timestep, MBase->BitField = tmp; NewAttribute = false; struct TimestepInfo Ret { Formats, Metadata, AttrData, CurDataBuffer }; struct TimestepInfo Ret; Ret.NewMetaMetaBlocks = Formats; Ret.MetaEncodeBuffer.reset(Metadata); Ret.AttributeEncodeBuffer.reset(AttrData); Ret.DataBuffer = CurDataBuffer; CurDataBuffer = NULL; if (Info.AttributeFields) { free_FMfield_list(Info.AttributeFields); Info.AttributeFields = NULL; } Info.AttributeFieldCount = 0; if (Info.AttributeData) { free(Info.AttributeData); Info.AttributeData = NULL; } Info.AttributeSize = 0; return Ret; } Loading
source/adios2/toolkit/format/bp5/BP5Serializer.h +3 −11 Original line number Diff line number Diff line Loading @@ -36,17 +36,9 @@ public: struct TimestepInfo { std::vector<MetaMetaInfoBlock> NewMetaMetaBlocks; Buffer *MetaEncodeBuffer; Buffer *AttributeEncodeBuffer; std::shared_ptr<Buffer> MetaEncodeBuffer; std::shared_ptr<Buffer> AttributeEncodeBuffer; BufferV* DataBuffer; ~TimestepInfo() { delete MetaEncodeBuffer; if (AttributeEncodeBuffer) delete AttributeEncodeBuffer; delete DataBuffer; } }; typedef struct _MetadataInfo Loading