LAMA
|
00001 00033 #ifndef LAMA_CUDATRACERSYNCTOKEN_HPP_ 00034 #define LAMA_CUDATRACERSYNCTOKEN_HPP_ 00035 00036 #include <lama/SyncToken.hpp> 00037 00038 #include <lama/tracing/LAMABaseTracer.hpp> 00039 00040 #include <lama/cuda/CUDAStreamSyncToken.hpp> 00041 00042 #include <cuda.h> 00043 00047 class CUDATracerSyncToken: public lama::SyncToken 00048 { 00049 public: 00050 CUDATracerSyncToken( std::auto_ptr<LAMABaseTracer> tracer, lama::CUDAStreamSyncToken& cudaStreamSyncToken ); 00051 00052 virtual ~CUDATracerSyncToken(); 00053 00054 virtual void wait(); 00055 00056 virtual bool probe() const; 00057 00058 void recordStopEvent(); 00059 00060 private: 00061 00062 CUDATracerSyncToken(); 00063 00064 CUDATracerSyncToken( const CUDATracerSyncToken& other ); 00065 00066 CUDATracerSyncToken& operator=( const CUDATracerSyncToken& other ); 00067 00068 CUevent mStartEvent; 00069 CUevent mStopEvent; 00070 00071 lama::CUDAStreamSyncToken& mStreamSyncToken; 00072 00073 std::auto_ptr<LAMABaseTracer> mTracer; 00074 00075 LAMA_LOG_DECL_STATIC_LOGGER(logger); 00076 }; 00077 00078 #endif // LAMA_CUDATRACERSYNCTOKEN_HPP_