mirror of
https://github.com/opencv/opencv.git
synced 2025-08-03 20:56:30 +08:00
Merge pull request #9881 from alalek:ocl_timer_simplify
This commit is contained in:
commit
9b1b281c7b
@ -742,13 +742,16 @@ public:
|
||||
~Timer();
|
||||
void start();
|
||||
void stop();
|
||||
float milliSeconds();
|
||||
float microSeconds();
|
||||
float seconds();
|
||||
|
||||
uint64 durationNS() const; //< duration in nanoseconds
|
||||
|
||||
protected:
|
||||
struct Impl;
|
||||
Impl* p;
|
||||
Impl* const p;
|
||||
|
||||
private:
|
||||
Timer(const Timer&); // disabled
|
||||
Timer& operator=(const Timer&); // disabled
|
||||
};
|
||||
|
||||
CV_EXPORTS MatAllocator* getOpenCLAllocator();
|
||||
|
@ -5288,68 +5288,37 @@ struct Timer::Impl
|
||||
#endif
|
||||
}
|
||||
|
||||
float microSeconds()
|
||||
uint64 durationNS() const
|
||||
{
|
||||
#ifdef HAVE_OPENCL
|
||||
return (float)timer.getTimeMicro();
|
||||
return (uint64)(timer.getTimeSec() * 1e9);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
float milliSeconds()
|
||||
{
|
||||
#ifdef HAVE_OPENCL
|
||||
return (float)timer.getTimeMilli();
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
float seconds()
|
||||
{
|
||||
#ifdef HAVE_OPENCL
|
||||
return (float)timer.getTimeSec();
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
TickMeter timer;
|
||||
};
|
||||
|
||||
Timer::Timer(const Queue& q)
|
||||
{
|
||||
p = new Impl(q);
|
||||
}
|
||||
|
||||
Timer::~Timer()
|
||||
{
|
||||
if(p)
|
||||
{
|
||||
delete p;
|
||||
p = 0;
|
||||
}
|
||||
}
|
||||
Timer::Timer(const Queue& q) : p(new Impl(q)) { }
|
||||
Timer::~Timer() { delete p; }
|
||||
|
||||
void Timer::start()
|
||||
{
|
||||
if(p)
|
||||
p->start();
|
||||
CV_Assert(p);
|
||||
p->start();
|
||||
}
|
||||
|
||||
void Timer::stop()
|
||||
{
|
||||
if(p)
|
||||
p->stop();
|
||||
CV_Assert(p);
|
||||
p->stop();
|
||||
}
|
||||
|
||||
float Timer::microSeconds()
|
||||
{ return p ? p->microSeconds() : 0; }
|
||||
uint64 Timer::durationNS() const
|
||||
{
|
||||
CV_Assert(p);
|
||||
return p->durationNS();
|
||||
}
|
||||
|
||||
float Timer::milliSeconds()
|
||||
{ return p ? p->milliSeconds() : 0; }
|
||||
|
||||
float Timer::seconds()
|
||||
{ return p ? p->seconds() : 0; }
|
||||
|
||||
}}
|
||||
}} // namespace
|
||||
|
@ -890,7 +890,7 @@ float OCL4DNNConvSpatial<float>::timedConvolve(const UMat &bottom, UMat &top,
|
||||
return 1e5;
|
||||
}
|
||||
|
||||
float elapsedTime = timer.milliSeconds() / loop_cnt;
|
||||
float elapsedTime = timer.durationNS() * 1e-6 / loop_cnt;
|
||||
#ifdef dbg
|
||||
double out_w = output_w_;
|
||||
double out_h = output_h_;
|
||||
@ -899,9 +899,9 @@ float OCL4DNNConvSpatial<float>::timedConvolve(const UMat &bottom, UMat &top,
|
||||
double k_h = kernel_h_;
|
||||
double k_z = channels_;
|
||||
double totalFlops = ((k_w*k_h*k_z -1)*2)*(out_w*out_h*out_z)*num_;
|
||||
std::cout << "\tEstimated Gflops:" << ((totalFlops/1000)/1000)/1000
|
||||
std::cout << "\tEstimated Gflops:" << (totalFlops * 1e-9)
|
||||
<< std::endl;
|
||||
std::cout << "\tEstimated GFLOPS/S: " << (((totalFlops/1000)/1000)/1000)*(1000.0/elapsedTime)
|
||||
std::cout << "\tEstimated GFLOPS/S: " << ((totalFlops * 1e-9)*(1000.0/elapsedTime))
|
||||
<< std::endl;
|
||||
#if 0
|
||||
std::cout << "Estimated utilization: " <<
|
||||
|
Loading…
Reference in New Issue
Block a user