From ede5b23753f9946ba107237a3eaae006afd82b4f Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Sun, 2 Feb 2014 18:24:21 +0400 Subject: [PATCH] rewrote perf tests for SURF --- modules/nonfree/perf/perf_main.cpp | 3 + .../{perf_surf.ocl.cpp => perf_surf_ocl.cpp} | 75 +++++++++++-------- .../src/{surf.ocl.cpp => surf_ocl.cpp} | 0 .../{test_surf.ocl.cpp => test_surf_ocl.cpp} | 0 4 files changed, 47 insertions(+), 31 deletions(-) rename modules/nonfree/perf/{perf_surf.ocl.cpp => perf_surf_ocl.cpp} (66%) rename modules/nonfree/src/{surf.ocl.cpp => surf_ocl.cpp} (100%) rename modules/nonfree/test/{test_surf.ocl.cpp => test_surf_ocl.cpp} (100%) diff --git a/modules/nonfree/perf/perf_main.cpp b/modules/nonfree/perf/perf_main.cpp index d5f4a1a512..03f9b71852 100644 --- a/modules/nonfree/perf/perf_main.cpp +++ b/modules/nonfree/perf/perf_main.cpp @@ -4,6 +4,9 @@ static const char * impls[] = { #ifdef HAVE_CUDA "cuda", +#endif +#ifdef HAVE_OPENCL + "ocl", #endif "plain" }; diff --git a/modules/nonfree/perf/perf_surf.ocl.cpp b/modules/nonfree/perf/perf_surf_ocl.cpp similarity index 66% rename from modules/nonfree/perf/perf_surf.ocl.cpp rename to modules/nonfree/perf/perf_surf_ocl.cpp index cc48aa28c5..4528b79268 100644 --- a/modules/nonfree/perf/perf_surf.ocl.cpp +++ b/modules/nonfree/perf/perf_surf_ocl.cpp @@ -57,55 +57,68 @@ typedef perf::TestBaseWithParam OCL_SURF; "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\ "stitching/a3.png" -PERF_TEST_P(OCL_SURF, DISABLED_with_data_transfer, testing::Values(SURF_IMAGES)) +#define OCL_TEST_CYCLE() for( ; startTimer(), next(); cv::ocl::finish(), stopTimer()) + +PERF_TEST_P(OCL_SURF, with_data_transfer, testing::Values(SURF_IMAGES)) { string filename = getDataPath(GetParam()); - Mat img = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(img.empty()); - - SURF_OCL d_surf; - oclMat d_keypoints; - oclMat d_descriptors; - Mat cpu_kp; - Mat cpu_dp; + Mat src = imread(filename, IMREAD_GRAYSCALE); + ASSERT_FALSE(src.empty()); + Mat cpu_kp, cpu_dp; declare.time(60); - TEST_CYCLE() + if (getSelectedImpl() == "ocl") { - oclMat d_src(img); + SURF_OCL d_surf; + oclMat d_keypoints, d_descriptors; - d_surf(d_src, oclMat(), d_keypoints, d_descriptors); + OCL_TEST_CYCLE() + { + oclMat d_src(src); - d_keypoints.download(cpu_kp); - d_descriptors.download(cpu_dp); + d_surf(d_src, oclMat(), d_keypoints, d_descriptors); + + d_keypoints.download(cpu_kp); + d_descriptors.download(cpu_dp); + } } + else if (getSelectedImpl() == "plain") + { + cv::SURF surf; + std::vector kp; - SANITY_CHECK(cpu_kp, 1); - SANITY_CHECK(cpu_dp, 1); + TEST_CYCLE() surf(src, Mat(), kp, cpu_dp); + } + + SANITY_CHECK_NOTHING(); } -PERF_TEST_P(OCL_SURF, DISABLED_without_data_transfer, testing::Values(SURF_IMAGES)) +PERF_TEST_P(OCL_SURF, without_data_transfer, testing::Values(SURF_IMAGES)) { string filename = getDataPath(GetParam()); - Mat img = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(img.empty()); - - SURF_OCL d_surf; - oclMat d_keypoints; - oclMat d_descriptors; - oclMat d_src(img); + Mat src = imread(filename, IMREAD_GRAYSCALE); + ASSERT_FALSE(src.empty()); + Mat cpu_kp, cpu_dp; declare.time(60); - TEST_CYCLE() d_surf(d_src, oclMat(), d_keypoints, d_descriptors); + if (getSelectedImpl() == "ocl") + { + SURF_OCL d_surf; + oclMat d_keypoints, d_descriptors, d_src(src); + + OCL_TEST_CYCLE() d_surf(d_src, oclMat(), d_keypoints, d_descriptors); + } + else if (getSelectedImpl() == "plain") + { + cv::SURF surf; + std::vector kp; + + TEST_CYCLE() surf(src, Mat(), kp, cpu_dp); + } - Mat cpu_kp; - Mat cpu_dp; - d_keypoints.download(cpu_kp); - d_descriptors.download(cpu_dp); - SANITY_CHECK(cpu_kp, 1); - SANITY_CHECK(cpu_dp, 1); + SANITY_CHECK_NOTHING(); } #endif // HAVE_OPENCV_OCL diff --git a/modules/nonfree/src/surf.ocl.cpp b/modules/nonfree/src/surf_ocl.cpp similarity index 100% rename from modules/nonfree/src/surf.ocl.cpp rename to modules/nonfree/src/surf_ocl.cpp diff --git a/modules/nonfree/test/test_surf.ocl.cpp b/modules/nonfree/test/test_surf_ocl.cpp similarity index 100% rename from modules/nonfree/test/test_surf.ocl.cpp rename to modules/nonfree/test/test_surf_ocl.cpp