LAMA
/home/brandes/workspace/LAMA/src/lama/cuda/CUDAHostContext.hpp
Go to the documentation of this file.
00001 
00033 #ifndef LAMA_CUDA_HOST_CONTEXT_HPP_
00034 #define LAMA_CUDA_HOST_CONTEXT_HPP_
00035 
00036 // for dll_import
00037 #include <lama/config.hpp>
00038 
00039 // others
00040 #include <lama/HostContext.hpp>
00041 
00042 #include <lama/cuda/CUDAContext.hpp>
00043 
00044 // boost
00045 #include <boost/weak_ptr.hpp>
00046 
00047 namespace lama
00048 {
00049 
00058 class LAMA_DLL_IMPORTEXPORT CUDAHostContext: public lama::HostContext
00059 {
00060 friend class CUDAHostContextManager;  // can only create context
00061 
00062 public:
00063 
00064     virtual ~CUDAHostContext();
00065 
00066     virtual void* allocate( const size_t size ) const;
00067 
00068     virtual void allocate( ContextData& contextData, const size_t size ) const;
00069 
00070     virtual void free( void* pointer, const size_t size ) const;
00071 
00072     virtual void free( ContextData& contextData ) const;
00073 
00074     virtual void memcpy( void* dst, const void* src, const size_t size ) const;
00075 
00076     virtual std::auto_ptr<SyncToken> memcpyAsync( void* dst, const void* src, const size_t size ) const;
00077 
00078     virtual bool cancpy( const ContextData& dst, const ContextData& src ) const;
00079 
00080     virtual void memcpy( ContextData& dst, const ContextData& src, const size_t size ) const;
00081 
00082     virtual std::auto_ptr<SyncToken> memcpyAsync( ContextData& dst, const ContextData& src, const size_t size ) const;
00083 
00084     virtual HostContextType getHostType() const;
00085 
00086 private:
00087 
00088     LAMA_LOG_DECL_STATIC_LOGGER( logger );
00089 
00090     CUDAHostContext( boost::shared_ptr<const CUDAContext> cudaContext );
00091 
00092     virtual void writeAt( std::ostream& stream ) const;
00093 
00094     boost::shared_ptr<const CUDAContext> mCUDAContext;
00095 };
00096 
00097 }
00098 
00099 #endif // LAMA_CUDA_HOST_CONTEXT_HPP_