4#include <highfive/H5DataSet.hpp>
5#include <highfive/H5DataSpace.hpp>
6#include <highfive/H5File.hpp>
7#include <highfive/H5FileDriver.hpp>
8#include <highfive/H5Group.hpp>
12#define DUMP(pfile, data, size) hdump(pfile, #data, data, size)
14#define LOAD(pfile, data, size) hload(pfile, #data, data, size)
16using namespace HighFive;
19int hdump(HighFive::File* pfile,
const std::string& name, T* data,
const std::size_t& size) {
20 if (pfile->exist(name)) {
22 auto ds = pfile->getDataSet(name);
23 ds.select({std::size_t(
mpi_rank), 0}, {1, size}).write(data);
25 auto ds = pfile->createDataSet<T>(name, DataSpace({std::size_t(
mpi_nprocs), size}));
26 ds.select({std::size_t(
mpi_rank), 0}, {1, size}).write(data);
32int hload(HighFive::File* pfile,
const std::string& name, T* data,
const std::size_t& size) {
34 auto ds = pfile->getDataSet(name);
35 auto dims = ds.getDimensions();
37 CHECK_EQ(dims[1], size);
39 ds.select({std::size_t(
mpi_rank), 0}, {1, size}).read(data);
40 }
catch (HighFive::Exception& e) { LOG(FATAL); }
47int hdump_extend(HighFive::File* pfile,
const std::string& name, T* data,
const std::size_t& size,
const int& DIM0,
49 if (pfile->exist(name)) {
51 auto ds = pfile->getDataSet(name);
52 ds.select({std::size_t(rank), 0}, {1, size}).write(data);
54 auto ds = pfile->createDataSet<T>(name, DataSpace({std::size_t(DIM0), size}));
55 ds.select({std::size_t(rank), 0}, {1, size}).write(data);
61int hload_extend(HighFive::File* pfile,
const std::string& name, T* data,
const std::size_t& size,
const int& DIM0,
64 auto ds = pfile->getDataSet(name);
65 auto dims = ds.getDimensions();
66 CHECK_EQ(dims[0], DIM0);
67 CHECK_EQ(dims[1], size);
69 ds.select({std::size_t(rank), 0}, {1, size}).read(data);
70 }
catch (HighFive::Exception& e) { LOG(FATAL); }
int hload_extend(HighFive::File *pfile, const std::string &name, T *data, const std::size_t &size, const int &DIM0, const int &rank)
int hload(HighFive::File *pfile, const std::string &name, T *data, const std::size_t &size)
int hdump_extend(HighFive::File *pfile, const std::string &name, T *data, const std::size_t &size, const int &DIM0, const int &rank)
int hdump(HighFive::File *pfile, const std::string &name, T *data, const std::size_t &size)