OpenFPM_pdata  1.1.0
Project that contain the implementation of distributed structures
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Friends Pages
ExtPreAlloc< Mem > Class Template Reference

Detailed Description

template<typename Mem>
class ExtPreAlloc< Mem >

Preallocated memory sequence

External pre-allocated memory, is a class that preallocate memory and than it answer to a particular allocation pattern

Warning
zero sized allocation are removed from the request pattern
Template Parameters
Basememory allocation class [Example] HeapMemory or CudaMemory

Definition at line 27 of file ExtPreAlloc.hpp.

#include <ExtPreAlloc.hpp>

+ Inheritance diagram for ExtPreAlloc< Mem >:

Public Member Functions

 ExtPreAlloc ()
 Default constructor.
 
 ExtPreAlloc (size_t size, Mem &mem)
 Preallocated memory sequence. More...
 
virtual void incRef ()
 Increment the reference counter.
 
virtual void decRef ()
 Decrement the reference counter.
 
virtual long int ref ()
 Return the reference counter.
 
virtual bool flush ()
 flush the memory
 
virtual bool allocate (size_t sz)
 Allocate a chunk of memory. More...
 
void * getPointerEnd ()
 Return the end pointer of the previous allocated memory. More...
 
void * getPointerBase ()
 The the base pointer of the preallocate memory. More...
 
virtual void * getDevicePointer ()
 Return the pointer of the last allocation. More...
 
virtual void deviceToHost ()
 Do nothing.
 
virtual void * getPointer ()
 Return the pointer of the last allocation. More...
 
virtual const void * getPointer () const
 Return the pointer of the last allocation. More...
 
void * getPointerOffset (size_t offset)
 Get the base memory pointer increased with an offset. More...
 
virtual bool resize (size_t sz)
 Allocate or resize the allocated memory. More...
 
virtual size_t size () const
 Get the size of the LAST allocated memory. More...
 
void destroy ()
 Destroy memory. More...
 
virtual bool copy (const memory &m)
 Copy memory. More...
 
bool isInitialized ()
 Allocated Memory is never initialized. More...
 
void shift_backward (size_t sz)
 shift the pointer backward More...
 
void shift_forward (size_t sz)
 shift the pointer forward More...
 
- Public Member Functions inherited from memory
virtual ~memory ()
 destructor More...
 

Static Public Member Functions

static size_t calculateMem (std::vector< size_t > &mm)
 Calculate the total memory required to pack the message. More...
 

Private Attributes

size_t a_seq
 Actual allocation pointer.
 
size_t l_size
 Last allocation size.
 
Mem * mem
 Main class for memory allocation.
 
long int ref_cnt
 Reference counter.
 

Constructor & Destructor Documentation

template<typename Mem>
ExtPreAlloc< Mem >::ExtPreAlloc ( size_t  size,
Mem &  mem 
)
inline

Preallocated memory sequence.

Parameters
sizenumber of bytes
memexternal memory, used if you want to keep the memory

Definition at line 61 of file ExtPreAlloc.hpp.

Member Function Documentation

template<typename Mem>
virtual bool ExtPreAlloc< Mem >::allocate ( size_t  sz)
inlinevirtual

Allocate a chunk of memory.

Allocate a chunk of memory

Parameters
szsize of the chunk of memory to allocate in byte

Implements memory.

Definition at line 92 of file ExtPreAlloc.hpp.

template<typename Mem>
static size_t ExtPreAlloc< Mem >::calculateMem ( std::vector< size_t > &  mm)
inlinestatic

Calculate the total memory required to pack the message.

Returns
the total required memory

Definition at line 236 of file ExtPreAlloc.hpp.

template<typename Mem>
virtual bool ExtPreAlloc< Mem >::copy ( const memory m)
inlinevirtual

Copy memory.

Implements memory.

Definition at line 216 of file ExtPreAlloc.hpp.

template<typename Mem>
void ExtPreAlloc< Mem >::destroy ( )
inlinevirtual

Destroy memory.

Implements memory.

Definition at line 207 of file ExtPreAlloc.hpp.

template<typename Mem>
virtual void* ExtPreAlloc< Mem >::getDevicePointer ( )
inlinevirtual

Return the pointer of the last allocation.

Returns
the pointer

Implements memory.

Definition at line 137 of file ExtPreAlloc.hpp.

template<typename Mem>
virtual void* ExtPreAlloc< Mem >::getPointer ( )
inlinevirtual

Return the pointer of the last allocation.

Returns
the pointer

Implements memory.

Definition at line 150 of file ExtPreAlloc.hpp.

template<typename Mem>
virtual const void* ExtPreAlloc< Mem >::getPointer ( ) const
inlinevirtual

Return the pointer of the last allocation.

Returns
the pointer

Implements memory.

Definition at line 160 of file ExtPreAlloc.hpp.

template<typename Mem>
void* ExtPreAlloc< Mem >::getPointerBase ( )
inline

The the base pointer of the preallocate memory.

Returns
the base pointer

Definition at line 127 of file ExtPreAlloc.hpp.

template<typename Mem>
void* ExtPreAlloc< Mem >::getPointerEnd ( )
inline

Return the end pointer of the previous allocated memory.

Returns
the pointer

Definition at line 117 of file ExtPreAlloc.hpp.

template<typename Mem>
void* ExtPreAlloc< Mem >::getPointerOffset ( size_t  offset)
inline

Get the base memory pointer increased with an offset.

Parameters
offsetmemory offset

Definition at line 170 of file ExtPreAlloc.hpp.

template<typename Mem>
bool ExtPreAlloc< Mem >::isInitialized ( )
inlinevirtual

Allocated Memory is never initialized.

Returns
false

Implements memory.

Definition at line 226 of file ExtPreAlloc.hpp.

template<typename Mem>
virtual bool ExtPreAlloc< Mem >::resize ( size_t  sz)
inlinevirtual

Allocate or resize the allocated memory.

Resize the allocated memory, if request is smaller than the allocated, memory is not resized

Parameters
szsize
Returns
true if the resize operation complete correctly

Implements memory.

Definition at line 185 of file ExtPreAlloc.hpp.

template<typename Mem>
void ExtPreAlloc< Mem >::shift_backward ( size_t  sz)
inline

shift the pointer backward

Warning
when you shift backward the pointer, the last allocation is lost this mean that you have to do again an allocation.

This function is useful to go ahead in memory and fill the memory later on

mem.allocate(16); <------ Here we allocate 16 byte but we do not fill it because
subsequently we do another allocation without using mem
unsigned char * start = (unsigned char *)mem.getPointer()
mem.allocate(100)
// ...
// ...
// Code that fill mem in some way and do other mem.allocate(...)
// ...
// ...
unsigned char * final = (unsigned char *)mem.getPointer()
mem.shift_backward(final - start);
mem.allocate(16); <------ Here I am getting the same memory that I request for the
first allocate
// we now fill the memory
Parameters
howmany byte to shift

Definition at line 280 of file ExtPreAlloc.hpp.

template<typename Mem>
void ExtPreAlloc< Mem >::shift_forward ( size_t  sz)
inline

shift the pointer forward

The same as shift backward, but in this case it move the pointer forward

In general you use this function after the you went back with shift_backward and you have to move forward again

Warning
when you shift forward the pointer, the last allocation is lost this mean that you have to do again an allocation.

Definition at line 297 of file ExtPreAlloc.hpp.

template<typename Mem>
virtual size_t ExtPreAlloc< Mem >::size ( ) const
inlinevirtual

Get the size of the LAST allocated memory.

Get the size of the allocated memory

Returns
the size of the allocated memory

Implements memory.

Definition at line 198 of file ExtPreAlloc.hpp.


The documentation for this class was generated from the following file: