LAMA
|
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_