Newer
Older
* Distributed under the OSI-approved Apache License, Version 2.0. See
* accompanying file Copyright.txt for details.
*
* Author: William F Godoy godoywf@ornl.gov
#ifndef ADIOS2_ENGINE_BP_BPFILEWRITER_H_
#define ADIOS2_ENGINE_BP_BPFILEWRITER_H_
#include "adios2/ADIOSConfig.h"
#include "adios2/core/Engine.h"
#include "adios2/toolkit/format/bp3/BP3.h"
#include "adios2/toolkit/transportman/TransportMan.h" //transport::TransportsMan
* Constructor for file Writer in BP format
* @param name unique name given to the engine
* @param openMode w (supported), r, a from OpenMode in ADIOSTypes.h
* @param mpiComm MPI communicator
BPFileWriter(IO &io, const std::string &name, const Mode openMode,
StepStatus BeginStep(StepMode mode, const float timeoutSeconds = 0.f) final;
void Close(const int transportIndex = -1) final;
private:
/** Single object controlling BP buffering */
format::BP3Serializer m_BP3Serializer;
/** Manage BP data files Transports from IO AddTransport */
transportman::TransportMan m_FileDataManager;
/** Manages the optional collective metadata files */
transportman::TransportMan m_FileMetadataManager;
void Init() final;
/** Parses parameters from IO SetParameters */
void InitParameters() final;
/** Parses transports and parameters from IO AddTransport */
void InitTransports() final;
/** Allocates memory and starts a PG group */
void DoPutSync(Variable<T> &, const T *) final; \
void DoPutDeferred(Variable<T> &, const T *) final; \
void DoPutDeferred(Variable<T> &, const T &) final;
ADIOS2_FOREACH_TYPE_1ARG(declare_type)
#undef declare_type
* Common function for primitive PutSync, puts variables in buffer
void PutSyncCommon(Variable<T> &variable, const T *values);
template <class T>
void PutDeferredCommon(Variable<T> &variable, const T *values);
/** Write a profiling.json file from m_BP1Writer and m_TransportsManager
* profilers*/
void WriteProfilingJSONFile();
void WriteCollectiveMetadataFile();
} // end namespace adios2
#endif /* ADIOS2_ENGINE_BP_BPFILEWRITER_H_ */