Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __cmtkDeviceMemoryCL_h_included_
00032 #define __cmtkDeviceMemoryCL_h_included_
00033
00034 #include <cmtkconfig.h>
00035
00036 #include <System/cmtkSmartConstPtr.h>
00037 #include <System/cmtkSmartPtr.h>
00038
00039 #include <new>
00040
00041 namespace
00042 cmtk
00043 {
00044
00047
00051 class DeviceMemoryCL
00053 : private CannotBeCopied
00054 {
00055 public:
00057 typedef DeviceMemoryCL Self;
00058
00060 typedef SmartConstPointer<Self> SmartConstPtr;
00061
00063 typedef SmartPointer<Self> SmartPtr;
00064
00066 class bad_alloc : public std::bad_alloc {};
00067
00069 virtual ~DeviceMemoryCL();
00070
00071 protected:
00073 Self::SmartPtr Alloc( const size_t nBytes, const size_t padToMultiple = 1 )
00074 {
00075 return Self::SmartPtr( new Self( nBytes, padToMultiple ) );
00076 }
00077
00079 void CopyToDevice( const void *const srcPtrHost, const size_t nBytes );
00080
00082 void CopyFromDevice( void *const dstPtrHost, const size_t nBytes ) const;
00083
00085 void CopyOnDevice( const Self& srcPtrDevice, const size_t nBytes );
00086
00088 void Memset( const int value, const size_t nBytes );
00089
00091 DeviceMemoryCL( const size_t nBytes , const size_t padToMultiple = 1 );
00092
00097 void* m_PointerDevice;
00098 };
00099
00101
00102 }
00103
00104 #endif // #ifndef __cmtkDeviceMemoryCL_h_included_