diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-01-16 14:43:47 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-01-16 14:43:47 -0500 |
commit | 1cddd960d62da42ccd111022f1326740f688b48d (patch) | |
tree | 5c0c591e8fca50868ae5f80b703c4422eef3df30 /Carpet/CarpetLib/src/defs.hh | |
parent | f07af2a351c2096f84487b13c114a1925755eafb (diff) |
CarpetLib: Rewrite array padding
Obtain cache information from thorn hwloc.
Align allocated memory manually if operator new returns unaligned memory.
Diffstat (limited to 'Carpet/CarpetLib/src/defs.hh')
-rw-r--r-- | Carpet/CarpetLib/src/defs.hh | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Carpet/CarpetLib/src/defs.hh b/Carpet/CarpetLib/src/defs.hh index f41b19d86..02e36330e 100644 --- a/Carpet/CarpetLib/src/defs.hh +++ b/Carpet/CarpetLib/src/defs.hh @@ -113,6 +113,40 @@ enum centering { error_centered, vertex_centered, cell_centered }; +template<typename T> +inline T div_down(T const x, T const align) +{ + assert(x >= 0); + assert(align > 0); + return x / align; +} + +template<typename T> +inline T div_up(T const x, T const align) +{ + assert(x >= 0); + assert(align > 0); + return (x + align - 1) / align; +} + +template<typename T> +inline T align_down(T const x, T const align) +{ + assert(x >= 0); + assert(align > 0); + return div_down(x, align) * align; +} + +template<typename T> +inline T align_up(T const x, T const align) +{ + assert(x >= 0); + assert(align > 0); + return div_up(x, align) * align; +} + + + // Useful helper template<class T> inline T square (const T x) { return x*x; } |