bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

タイマー

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);
}