24 void Init(
const std::string &IOName){}
27 void Open(
const std::string &StreamName,
const XGC_IO_Mode mode,
const MPI_Comm &comm){}
35 inline View<T*, HostType, Kokkos::MemoryTraits<Kokkos::Unmanaged>>
scalar_view_wrap(T& scalar){
36 return View<T*, HostType, Kokkos::MemoryTraits<Kokkos::Unmanaged>>(&scalar, 1);
42 virtual void adios_def_and_shape(
const ADIOS2Stream& stream)
const = 0;
43 virtual void adios_put(
const ADIOS2Stream& stream)
const = 0;
59 IOScalar(
const std::string& name_in, T& value_in)
66 IOScalar(
const std::string& name_in,
const T& value_in)
72 void adios_def_and_shape(
const ADIOS2Stream& stream)
const {
73 if(!stream.
io->InquireVariable<T>(
name)){
74 stream.
io->DefineVariable<T>(
name);
83 if(
var_is_const) printf(
"\nError: Tried to read into const variable\n");
91 std::vector<size_t>
vec;
95 template <
typename... Args>
100 template <
typename First,
typename... Rest>
102 vec.push_back(static_cast<size_t>(first));
103 if constexpr (
sizeof...(rest) > 0) {
134 int dim_offset =
size.size() - T::rank;
136 for(
int i=0; i<
size.size(); i++){
137 if(i - dim_offset >= 0){
138 size[i] =
view.extent(i - dim_offset);
146 IOArray(
const std::string& name_in,
const T& view_in)
154 for(
int i=0; i<
size.size(); i++){
163 void adios_def_and_shape(
const ADIOS2Stream& stream)
const {
164 auto TAG = stream.
io->InquireVariable<
typename T::value_type>(
name);
173 auto TAG = stream.
io->InquireVariable<
typename T::value_type>(
name);
175 stream.
engine->Put<
typename T::value_type>(TAG,
view.data(), adios2::Mode::Sync);
179 auto TAG = stream.
io->InquireVariable<
typename T::value_type>(
name);
181 stream.
engine->Get<
typename T::value_type>(TAG,
view.data());
194 void add(
const T& new_data){
195 io_data.push_back(std::make_unique<T>(new_data));
199 template<
class T,
class... Ts>
200 void add(
const T& new_data,
const Ts&... new_data_rest){
202 add(new_data_rest...);
209 for(
int i=0; i<
io_data.size(); i++)
210 io_data[i]->adios_def_and_shape(stream);
213 for(
int i=0; i<
io_data.size(); i++)
217 stream.engine->PerformPuts();
225 for(
int i=0; i<
io_data.size(); i++)
229 stream.engine->PerformGets();
Definition: xgc_io.hpp:90
void write(const XGC_IO_Stream &stream) const
Definition: xgc_io.hpp:206
void Open(const std::string &StreamName, const XGC_IO_Mode mode)
Definition: xgc_io.hpp:25
IOScalar(const std::string &name_in, T &value_in)
Definition: xgc_io.hpp:59
Definition: xgc_io.hpp:39
Definition: xgc_io.hpp:187
dim_type size
Definition: xgc_io.hpp:121
dim_type offsets
Definition: xgc_io.hpp:120
std::vector< std::unique_ptr< IOData > > io_data
Definition: xgc_io.hpp:188
std::vector< size_t > vec
Definition: xgc_io.hpp:91
IOScalar(const std::string &name_in, const T &value_in)
Definition: xgc_io.hpp:66
Definition: xgc_io.hpp:51
void read(const XGC_IO_Stream &stream)
Definition: xgc_io.hpp:222
IOArray(const std::string &name_in, const T &view_in, const UpcastVector &full_size_in, const UpcastVector &offsets_in)
Definition: xgc_io.hpp:126
XGC_IO_Stream()
Definition: xgc_io.hpp:21
bool var_is_const
Definition: xgc_io.hpp:56
void add(const T &new_data)
Definition: xgc_io.hpp:194
std::string name
Definition: xgc_io.hpp:53
void addValues(First first, Rest...rest)
Definition: xgc_io.hpp:101
virtual ~IOData()
Definition: xgc_io.hpp:46
T view_type
Definition: xgc_io.hpp:113
value_type value
Definition: xgc_io.hpp:55
View< T *, HostType, Kokkos::MemoryTraits< Kokkos::Unmanaged > > scalar_view_wrap(T &scalar)
Definition: xgc_io.hpp:35
Definition: xgc_io.hpp:112
UpcastVector(Args...args)
Definition: xgc_io.hpp:96
EnginePtr engine
Definition: adios2.hpp:30
Definition: adios2.hpp:26
std::vector< size_t > dim_type
Definition: xgc_io.hpp:114
XGC_IO_Stream(const std::string &IOName)
Definition: xgc_io.hpp:22
void add(const T &new_data, const Ts &...new_data_rest)
Definition: xgc_io.hpp:200
Definition: xgc_io.hpp:19
XGC_IO_Mode
Definition: xgc_io.hpp:12
IOArray(const std::string &name_in, const T &view_in)
Definition: xgc_io.hpp:146
std::string name
Definition: xgc_io.hpp:115
IOPtr io
Definition: adios2.hpp:29
void Close()
Definition: xgc_io.hpp:29
T value_type
Definition: xgc_io.hpp:52
void Init(const std::string &IOName)
Definition: xgc_io.hpp:24
view_type view
Definition: xgc_io.hpp:116
value_type * value_addr
Definition: xgc_io.hpp:54
dim_type full_size
Definition: xgc_io.hpp:119