/// Split free memory on heap into pieces INLINE LocalHeap Split (int partnr, int nparts) const { int pieces = nparts; int i = partnr; size_t freemem = totsize - (p - data); size_t size_of_piece = freemem / pieces; return LocalHeap (p + i * size_of_piece, size_of_piece, name); }
/// Split free memory on heap into pieces for each openmp-thread INLINE LocalHeap Split () const { #ifdef _OPENMP int pieces = omp_get_num_threads(); int i = omp_get_thread_num(); #else int pieces = 1; int i = 0; #endif size_t freemem = totsize - (p - data); size_t size_of_piece = freemem / pieces; return LocalHeap (p + i * size_of_piece, size_of_piece, name); }
INLINE LocalHeap Borrow() { return LocalHeap (p, Available()); }