24 #include "openPMD/Dataset.hpp"
25 #include "openPMD/benchmark/mpi/DatasetFiller.hpp"
31 template <
typename Distr,
typename T =
typename Distr::result_type>
37 std::default_random_engine engine;
38 std::shared_ptr<T> buffered;
44 Distr distribution, Extent::value_type numOfItems = 0)
54 auto res = std::shared_ptr<T>{
55 new T[this->m_numberOfItems], [](
T *d) {
delete[] d; }};
57 for (
typename Extent::value_type i = 0; i < this->m_numberOfItems; i++)
59 ptr[i] = this->distr(this->engine);
75 template <
typename X = Distr>
77 Extent::value_type numberOfItems,
78 typename X::result_type lower,
79 typename X::result_type upper)
84 void setSeed(std::default_random_engine::result_type seed)
86 this->engine = std::default_random_engine(seed);
91 std::random_device rd;
92 this->engine = std::default_random_engine(rd());
109 this->m_numberOfItems = numItems;
112 this->buffered.reset();
An abstract class to create one iteration of data per thread.
Definition: DatasetFiller.hpp:36
Definition: RandomDatasetFiller.hpp:33
static RandomDatasetFiller< X, T > makeRandomDatasetFiller(Extent::value_type numberOfItems, typename X::result_type lower, typename X::result_type upper)
Definition: RandomDatasetFiller.hpp:76
void bufferMode()
Activate buffer mode.
Definition: RandomDatasetFiller.hpp:99
std::shared_ptr< T > produceData() override
Create a shared pointer of m_numberOfItems items of type T.
Definition: RandomDatasetFiller.hpp:48
void setNumberOfItems(Extent::value_type numItems) override
Set number of items to be produced.
Definition: RandomDatasetFiller.hpp:107
Public definitions of openPMD-api.
Definition: Date.cpp:29