123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // 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 opencv_test {
- 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 opencv_test::ocl
- #endif // HAVE_OPENCL
|