 48432502b6
			
		
	
	48432502b6
	
	
	
		
			
			Conflicts: cmake/OpenCVDetectCUDA.cmake doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.rst modules/core/CMakeLists.txt modules/features2d/perf/opencl/perf_brute_force_matcher.cpp modules/highgui/src/grfmt_tiff.cpp modules/imgproc/src/clahe.cpp modules/imgproc/src/moments.cpp modules/nonfree/CMakeLists.txt modules/ocl/perf/perf_ml.cpp modules/superres/CMakeLists.txt
		
			
				
	
	
		
			133 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // This file is part of OpenCV project.
 | |
| // It is subject to the license terms in the LICENSE file found in the top-level directory
 | |
| // of this distribution and at http://opencv.org/license.html.
 | |
| //
 | |
| // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved.
 | |
| 
 | |
| #include "perf_precomp.hpp"
 | |
| #include "opencv2/ts/ocl_perf.hpp"
 | |
| 
 | |
| #ifdef HAVE_OPENCL
 | |
| 
 | |
| namespace cvtest {
 | |
| namespace ocl {
 | |
| 
 | |
| struct BufferPoolState
 | |
| {
 | |
|     BufferPoolController* controller_;
 | |
|     size_t oldMaxReservedSize_;
 | |
| 
 | |
|     BufferPoolState(BufferPoolController* c, bool enable)
 | |
|         : controller_(c)
 | |
|     {
 | |
|         if (!cv::ocl::useOpenCL())
 | |
|         {
 | |
|             throw ::perf::TestBase::PerfSkipTestException();
 | |
|         }
 | |
|         oldMaxReservedSize_ = c->getMaxReservedSize();
 | |
|         if (oldMaxReservedSize_ == (size_t)-1)
 | |
|         {
 | |
|             throw ::perf::TestBase::PerfSkipTestException();
 | |
|         }
 | |
|         if (!enable)
 | |
|         {
 | |
|             c->setMaxReservedSize(0);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             c->freeAllReservedBuffers();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     ~BufferPoolState()
 | |
|     {
 | |
|         controller_->setMaxReservedSize(oldMaxReservedSize_);
 | |
|     }
 | |
| };
 | |
| 
 | |
| typedef TestBaseWithParam<bool> BufferPoolFixture;
 | |
| 
 | |
| OCL_PERF_TEST_P(BufferPoolFixture, BufferPool_UMatCreation100, Bool())
 | |
| {
 | |
|     BufferPoolState s(cv::ocl::getOpenCLAllocator()->getBufferPoolController(), GetParam());
 | |
| 
 | |
|     Size sz(1920, 1080);
 | |
| 
 | |
|     OCL_TEST_CYCLE()
 | |
|     {
 | |
|         for (int i = 0; i < 100; i++)
 | |
|         {
 | |
|             UMat u(sz, CV_8UC1);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     SANITY_CHECK_NOTHING();
 | |
| }
 | |
| 
 | |
| OCL_PERF_TEST_P(BufferPoolFixture, BufferPool_UMatCountNonZero100, Bool())
 | |
| {
 | |
|     BufferPoolState s(cv::ocl::getOpenCLAllocator()->getBufferPoolController(), GetParam());
 | |
| 
 | |
|     Size sz(1920, 1080);
 | |
| 
 | |
|     OCL_TEST_CYCLE()
 | |
|     {
 | |
|         for (int i = 0; i < 100; i++)
 | |
|         {
 | |
|             UMat u(sz, CV_8UC1);
 | |
|             countNonZero(u);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     SANITY_CHECK_NOTHING();
 | |
| }
 | |
| 
 | |
| OCL_PERF_TEST_P(BufferPoolFixture, BufferPool_UMatCanny10, Bool())
 | |
| {
 | |
|     BufferPoolState s(cv::ocl::getOpenCLAllocator()->getBufferPoolController(), GetParam());
 | |
| 
 | |
|     Size sz(1920, 1080);
 | |
| 
 | |
|     int aperture = 3;
 | |
|     bool useL2 = false;
 | |
|     double thresh_low = 100;
 | |
|     double thresh_high = 120;
 | |
| 
 | |
|     OCL_TEST_CYCLE()
 | |
|     {
 | |
|         for (int i = 0; i < 10; i++)
 | |
|         {
 | |
|             UMat src(sz, CV_8UC1);
 | |
|             UMat dst;
 | |
|             Canny(src, dst, thresh_low, thresh_high, aperture, useL2);
 | |
|             dst.getMat(ACCESS_READ); // complete async operations
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     SANITY_CHECK_NOTHING();
 | |
| }
 | |
| 
 | |
| OCL_PERF_TEST_P(BufferPoolFixture, BufferPool_UMatIntegral10, Bool())
 | |
| {
 | |
|     BufferPoolState s(cv::ocl::getOpenCLAllocator()->getBufferPoolController(), GetParam());
 | |
| 
 | |
|     Size sz(1920, 1080);
 | |
| 
 | |
|     OCL_TEST_CYCLE()
 | |
|     {
 | |
|         for (int i = 0; i < 10; i++)
 | |
|         {
 | |
|             UMat src(sz, CV_32FC1);
 | |
|             UMat dst;
 | |
|             integral(src, dst);
 | |
|             dst.getMat(ACCESS_READ); // complete async operations
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     SANITY_CHECK_NOTHING();
 | |
| }
 | |
| 
 | |
| } } // namespace cvtest::ocl
 | |
| 
 | |
| #endif // HAVE_OPENCL
 |