LAMA
|
00001 00033 #ifndef LAMA_PGAS_HOST_CONTEXT_HPP_ 00034 #define LAMA_PGAS_HOST_CONTEXT_HPP_ 00035 00036 #include <boost/weak_ptr.hpp> 00037 00038 #include <lama/HostContext.hpp> 00039 00040 namespace lama 00041 { 00042 00050 class PGASContext: public lama::HostContext 00051 { 00052 friend class PGASContextManager; // can only create context 00053 00054 public: 00055 00056 virtual ~PGASContext(); 00057 00058 virtual void* allocate( const size_t size ) const; 00059 00060 virtual void allocate( ContextData& contextData, const size_t size ) const; 00061 00062 virtual void free( void* pointer, const size_t size ) const; 00063 00064 virtual void free( ContextData& contextData ) const; 00065 00066 virtual void memcpy( void* dst, const void* src, const size_t size ) const; 00067 00068 virtual std::auto_ptr<SyncToken> memcpyAsync( void* dst, const void* src, const size_t size ) const; 00069 00070 virtual bool cancpy( const ContextData& dst, const ContextData& src ) const; 00071 00072 virtual void memcpy( ContextData& dst, const ContextData& src, const size_t size ) const; 00073 00074 virtual std::auto_ptr<SyncToken> memcpyAsync( ContextData& dst, const ContextData& src, const size_t size ) const; 00075 00076 virtual HostContextType getHostType() const; 00077 00078 private: 00079 00080 LAMA_LOG_DECL_STATIC_LOGGER( logger ); 00081 00082 PGASContext( ); 00083 00084 virtual void writeAt( std::ostream& stream ) const; 00085 }; 00086 00087 } 00088 00089 #endif // LAMA_PGAS_HOST_CONTEXT_HPP_