From a92271176a19e06611099c0eccc4e6a6887f4915 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Mon, 17 May 2021 00:30:13 +0200 Subject: Extract public version of SweepLB --- src/pattern/none.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/pattern/none.h (limited to 'src/pattern/none.h') diff --git a/src/pattern/none.h b/src/pattern/none.h new file mode 100644 index 0000000..8abc419 --- /dev/null +++ b/src/pattern/none.h @@ -0,0 +1,48 @@ +#pragma once + +#include "population.h" +#include "propagation.h" + +#include + +namespace pattern { + +template +class NONE { +private: + Cuboid _cuboid; + + T* _base; + T* _f[population::q]; + +public: + using value_t = T; + + NONE(Cuboid cuboid): + _cuboid(cuboid) + { + const std::size_t pagesize = sysconf(_SC_PAGESIZE); + const std::size_t padding = _cuboid.index(1,1,1); + _base = static_cast( + std::aligned_alloc(pagesize, population::q * (_cuboid.volume() + 2*padding) * sizeof(T))); + for (unsigned iPop=0; iPop < population::q; ++iPop) { + _f[iPop] = _base + iPop * (_cuboid.volume() + 2*padding) + padding; + } + } + + ~NONE() { + delete [] _base; + } + + T* get(unsigned iPop, stage::pre_collision) { + return _f[iPop]; + } + + T* get(unsigned iPop, stage::post_collision) { + return _f[iPop]; + } + + void stream() { } +}; + +} -- cgit v1.2.3