LAMA
lama::DefaultHostContext Class Reference

This class implements the default HOST context. More...

#include <DefaultHostContext.hpp>

Inheritance diagram for lama::DefaultHostContext:

Public Types

enum  HostContextType {
  DefaultHost, CUDAHost, OpenCLHost, PGAS,
  MaxHostContext
}
 Due to more efficient transfers between Host and other contexts there might be different HOST contexts that will be distinguished by their type. More...
enum  ContextType { Host, CUDA, OpenCL, MaxContext }
 Enumeration type for the supported contexts. More...

Public Member Functions

virtual ~DefaultHostContext ()
HostContextType getHostType () const
virtual void writeAt (std::ostream &stream) const
 This method writes info about the device in the output stream The method should be overwritten by base classes to give more specific information about the device that might be useful for logging.
virtual void * allocate (const size_t size) const
virtual void allocate (ContextData &contextData, const size_t size) const
 This method allocates memory and must be implemented by each Context.
virtual void free (void *pointer, const size_t size) const
 This method free's allocated data allocated by this allocator.
virtual void free (ContextData &contextData) const
 This method free's allocated data allocated by this allocator.
virtual void memcpy (void *dst, const void *src, const size_t size) const
 Memory copy within the same context.
virtual std::auto_ptr< SyncTokenmemcpyAsync (void *dst, const void *src, const size_t size) const
virtual bool cancpy (const ContextData &dst, const ContextData &src) const
 Checks if this Context can copy from src to dst.
virtual void memcpy (ContextData &dst, const ContextData &src, const size_t size) const
 Memory copy.
virtual std::auto_ptr< SyncTokenmemcpyAsync (ContextData &dst, const ContextData &src, const size_t size) const
virtual bool canUseData (const Context &other) const
 This predicate returns true if one context can use data of another context.
virtual std::auto_ptr< SyncTokengetSyncToken () const
 Providing implementation for Context::getSyncToken.
ContextType getType () const
 Method to get the type of the context.
bool operator== (const Context &other) const
 This predicate returns true if two contexts can use same data and have the same type.
bool operator!= (const Context &other) const
 The inequality operator is just the inverse to operator==.
virtual void enable (const char *file, int line) const
 Enable computations in the context.
virtual void disable (const char *file, int line) const
 Disable computations in the context.
class LAMAInterfacegetInterface () const
 This method returns interface for a given context.

Protected Attributes

ContextType mContextType
bool mEnabled
 if true the context is currently accessed
const char * mFile
 File name where context has been enabled.
int mLine
 Line number where context has been enabled.

Private Member Functions

 DefaultHostContext ()
 LAMA_LOG_DECL_STATIC_LOGGER (logger)

Private Attributes

size_t mNumberOfAllocates
 variable counts allocates
size_t mNumberOfAllocatedBytes
 variable counts allocated bytes
boost::recursive_mutex allocate_mutex

Friends

class DefaultHostContextManager
 can only create DefaultHostContext

Detailed Description

This class implements the default HOST context.

This class is implemented as a singleton, only one default host context is available.

The default host context allocates/frees data in the usual way.


Member Enumeration Documentation

enum lama::Context::ContextType [inherited]

Enumeration type for the supported contexts.

The type is used to select the appropriate code that will be used for the computations in the context.

The same context type does not imply that two different contexts can use the same data. Two CUDA contexts might allocate their own data where data must be transfered explicitly.

Enumerator:
Host 

context for cpu + main memory

CUDA 

CUDA GPU device.

OpenCL 

OpenCL GPU device.

MaxContext 

used for dimension of ContextType arrays

Due to more efficient transfers between Host and other contexts there might be different HOST contexts that will be distinguished by their type.

Enumerator:
DefaultHost 
CUDAHost 
OpenCLHost 
PGAS 
MaxHostContext 

Constructor & Destructor Documentation


Member Function Documentation

void * lama::DefaultHostContext::allocate ( const size_t  size) const [virtual]
void lama::DefaultHostContext::allocate ( ContextData contextData,
const size_t  size 
) const [virtual]

This method allocates memory and must be implemented by each Context.

Parameters:
[in]sizeis the number of bytes needed
Returns:
pointer to the allocated data, NULL if not enough data is available This method allocates memory and must be implemented by each Context. The pointer to the allocated memory is stored in contextData.pointer.
Parameters:
[out]contextDatathe ContextData the memory should be allocated for
[in]sizeis the number of bytes needed
Returns:
pointer to the allocated data, NULL if not enough data is available

Implements lama::Context.

References lama::Context::ContextData::pointer.

bool lama::DefaultHostContext::cancpy ( const ContextData dst,
const ContextData src 
) const [virtual]

Checks if this Context can copy from src to dst.

Parameters:
[in]dstthe dst ContextData
[in]srcthe src ContextData
Returns:
if this Context can copy from src to dst.

Implements lama::Context.

References lama::Context::ContextData::context.

bool lama::HostContext::canUseData ( const Context other) const [virtual, inherited]

This predicate returns true if one context can use data of another context.

This pure routine must be implemented by base classes.

Parameters:
[in]otheris the context against which the check is done

Implements lama::Context.

References lama::Context::getType(), and lama::Context::Host.

void lama::Context::disable ( const char *  file,
int  line 
) const [virtual, inherited]

Disable computations in the context.

Reimplemented in lama::CUDAContext.

References lama::Context::mEnabled, lama::Context::mFile, and lama::Context::mLine.

void lama::Context::enable ( const char *  file,
int  line 
) const [virtual, inherited]

Enable computations in the context.

Operations on the context like allocation, deallocation of data, computations can only be done if the context is enabled.

Different threads can enable a context, but only one at a time.

Reimplemented in lama::CUDAContext.

References lama::Context::mEnabled, lama::Context::mFile, and lama::Context::mLine.

void lama::DefaultHostContext::free ( void *  pointer,
const size_t  size 
) const [virtual]

This method free's allocated data allocated by this allocator.

Parameters:
[in]pointeris the pointer to the allocated data.
[in]sizeis the number of bytes that have been allocated with pointer.

The pointer must have been allocated by the same allocator with the given size.

Implements lama::Context.

References LAMA_ASSERT_ERROR, and LAMA_REGION.

void lama::DefaultHostContext::free ( ContextData contextData) const [virtual]

This method free's allocated data allocated by this allocator.

Parameters:
[in]contextDatawhich holds the pointer to the allocated data.

The pointer must have been allocated by the same allocator.

Implements lama::Context.

References lama::Context::ContextData::context, lama::Context::ContextData::free(), and LAMA_ASSERT_EQUAL_ERROR.

std::auto_ptr< SyncToken > lama::HostContext::getSyncToken ( ) const [virtual, inherited]

Providing implementation for Context::getSyncToken.

Implements lama::Context.

Reimplemented from lama::Context.

void lama::DefaultHostContext::memcpy ( void *  dst,
const void *  src,
const size_t  size 
) const [virtual]

Memory copy within the same context.

param[in] dst pointer to the destination param[in] src pointer to the source param[in] size is the number of bytes to be copied.

This memory copies size values

Implements lama::Context.

void lama::DefaultHostContext::memcpy ( ContextData dst,
const ContextData src,
const size_t  size 
) const [virtual]

Memory copy.

Copies the first size bytes from src->pointer to dst->pointer. the memory pointed to by src might be registered in a certain way to allow faster memory transfers. However the memory pointed to by src->pointer will not be altered by this function.

param[in] dst pointer to the destination param[in] src pointer to the source param[in] size is the number of bytes to be copied.

This memory copies size values

Implements lama::Context.

References lama::Context::ContextData::context, LAMA_ASSERT_ERROR, and lama::Context::ContextData::pointer.

std::auto_ptr< SyncToken > lama::DefaultHostContext::memcpyAsync ( void *  dst,
const void *  src,
const size_t  size 
) const [virtual]

Implements lama::Context.

std::auto_ptr< SyncToken > lama::DefaultHostContext::memcpyAsync ( ContextData dst,
const ContextData src,
const size_t  size 
) const [virtual]
bool lama::Context::operator!= ( const Context other) const [inherited]

The inequality operator is just the inverse to operator==.

References lama::Context::operator==().

bool lama::Context::operator== ( const Context other) const [inherited]

This predicate returns true if two contexts can use same data and have the same type.

References lama::Context::canUseData(), LAMA_ASSERT_EQUAL_DEBUG, and lama::Context::mContextType.

Referenced by lama::Context::operator!=().

void lama::DefaultHostContext::writeAt ( std::ostream &  stream) const [virtual]

This method writes info about the device in the output stream The method should be overwritten by base classes to give more specific information about the device that might be useful for logging.

Reimplemented from lama::HostContext.


Friends And Related Function Documentation

friend class DefaultHostContextManager [friend]

can only create DefaultHostContext


Field Documentation

boost::recursive_mutex lama::DefaultHostContext::allocate_mutex [mutable, private]
bool lama::Context::mEnabled [mutable, protected, inherited]

if true the context is currently accessed

Referenced by lama::Context::disable(), and lama::Context::enable().

const char* lama::Context::mFile [mutable, protected, inherited]

File name where context has been enabled.

Referenced by lama::Context::disable(), and lama::Context::enable().

int lama::Context::mLine [mutable, protected, inherited]

Line number where context has been enabled.

Referenced by lama::Context::disable(), and lama::Context::enable().

variable counts allocated bytes

variable counts allocates


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