From 1a8bf938b3f952373fbbaa26a454c42b02b46fdc Mon Sep 17 00:00:00 2001 From: paboyle Date: Wed, 4 Nov 2015 03:18:51 -0800 Subject: [PATCH] Use either sub-blocking or lebesgue --- lib/stencil/Lebesgue.h | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/stencil/Lebesgue.h b/lib/stencil/Lebesgue.h index 1d59b127..f8905209 100644 --- a/lib/stencil/Lebesgue.h +++ b/lib/stencil/Lebesgue.h @@ -9,17 +9,37 @@ namespace Grid { class LebesgueOrder { public: + typedef int32_t IndexInteger; + static int UseLebesgueOrder; + GridBase *grid; - typedef uint32_t IndexInteger; + public: + LebesgueOrder(GridBase *_grid); inline IndexInteger Reorder(IndexInteger ss) { - return UseLebesgueOrder ? _LebesgueReorder[ss] : ss; + return _LebesgueReorder[ss] ; }; + //////////////////////////// + // Space filling fractal for cache oblivious + //////////////////////////// + void ZGraph(void); IndexInteger alignup(IndexInteger n); - LebesgueOrder(GridBase *grid); + ///////////////////////////////// + // Cartesian stencil blocking strategy + ///////////////////////////////// + static std::vector Block; + void CartesianBlocking(void); + void IterateO(int ND,int dim, + std::vector & xo, + std::vector & xi, + std::vector &dims); + void IterateI(int ND,int dim, + std::vector & xo, + std::vector & xi, + std::vector &dims); private: std::vector _LebesgueReorder;