예제 #1
0
    /// 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);
    }
예제 #2
0
    /// 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);
    }
예제 #3
0
 INLINE LocalHeap Borrow() 
 {
   return LocalHeap (p, Available());
 }