#pragma once #ifndef NO_CUDA #include #include #include #include #include namespace amunmt { namespace GPU { ///////////////////////////////////////////////////////////////////////////////////// void HandleError(cudaError_t err, const char *file, int line ); #define HANDLE_ERROR( err ) (HandleError( err, __FILE__, __LINE__ )) ///////////////////////////////////////////////////////////////////////////////////// void HandleErrorCublas(cublasStatus_t err, const char *file, int line ); #define HANDLE_ERROR_CUBLAS( err ) (HandleErrorCublas( err, __FILE__, __LINE__ )) ///////////////////////////////////////////////////////////////////////////////////// extern std::unordered_map timers; //#define BEGIN_TIMER(str) {} //#define PAUSE_TIMER(str) {} #define BEGIN_TIMER(str) { HANDLE_ERROR( cudaStreamSynchronize(mblas::CudaStreamHandler::GetStream())); timers[str].resume(); } #define PAUSE_TIMER(str) { HANDLE_ERROR( cudaStreamSynchronize(mblas::CudaStreamHandler::GetStream())); \ timers[str].stop(); } } } #else // NO CUDA /* #include #include namespace algo = std; namespace iteralgo = std; */ #endif // NO CUDA