タイマー
cutil関係は使わない方針で。
#ifndef __cTimer_h__ #define __cTimer_h__ #include <cuda_runtime.h> class cTimer { public: cTimer(); ~cTimer(); void start(); void stop(); void print(const char* pFormat); private: float m_ElapsedTime; cudaEvent_t m_Start; cudaEvent_t m_Stop; }; #endif // __cTimer_h__
#include <stdio.h> #include "cTimer.h" /** * @brief コンストラクタ. */ cTimer::cTimer() : m_ElapsedTime(0) { cudaEventCreate(&m_Start); cudaEventCreate(&m_Stop); } /** * @brief デストラクタ. */ cTimer::~cTimer() { cudaEventDestroy(m_Start); cudaEventDestroy(m_Stop); } /** * @brief タイマー開始. */ void cTimer::start() { m_ElapsedTime = 0.0f; cudaEventRecord(m_Start, 0); } /** * @brief タイマー停止. */ void cTimer::stop() { cudaEventRecord(m_Stop, 0); cudaEventSynchronize(m_Stop); cudaEventElapsedTime(&m_ElapsedTime, m_Start, m_Stop); } /** * @brief タイマー結果表示. */ void cTimer::print(const char* pFormat) { printf(pFormat, m_ElapsedTime); }