Commit 1b4afcca authored by Andrey Kamaev's avatar Andrey Kamaev

Move OpenCl SURF perf tests to nonfree and fix build of samples

parent 77ad07ad
...@@ -9,14 +9,15 @@ ...@@ -9,14 +9,15 @@
#ifndef __OPENCV_PERF_PRECOMP_HPP__ #ifndef __OPENCV_PERF_PRECOMP_HPP__
#define __OPENCV_PERF_PRECOMP_HPP__ #define __OPENCV_PERF_PRECOMP_HPP__
#include "cvconfig.h"
#include "opencv2/opencv_modules.hpp"
#include "opencv2/ts/ts.hpp" #include "opencv2/ts/ts.hpp"
#include "opencv2/ts/gpu_perf.hpp"
#include "opencv2/nonfree/nonfree.hpp" #include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/highgui/highgui.hpp" #include "opencv2/highgui/highgui.hpp"
#include "opencv2/opencv_modules.hpp"
#ifdef HAVE_OPENCV_OCL
# include "opencv2/nonfree/ocl.hpp"
#endif
#if defined(HAVE_OPENCV_GPU) && defined(HAVE_CUDA) #if defined(HAVE_OPENCV_GPU) && defined(HAVE_CUDA)
#include "opencv2/nonfree/gpu.hpp" #include "opencv2/nonfree/gpu.hpp"
#endif #endif
......
...@@ -43,61 +43,69 @@ ...@@ -43,61 +43,69 @@
// //
//M*/ //M*/
#include "precomp.hpp" #include "perf_precomp.hpp"
#include <iomanip>
#ifdef HAVE_OPENCL #ifdef HAVE_OPENCV_OCL
using namespace cv; using namespace cv;
using namespace cv::ocl; using namespace cv::ocl;
using namespace cvtest;
using namespace testing;
using namespace std; using namespace std;
#define FILTER_IMAGE "../../../samples/gpu/road.png" typedef perf::TestBaseWithParam<std::string> OCL_SURF;
TEST(SURF, Performance) #define SURF_IMAGES \
"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))
{ {
cv::Mat img = readImage(FILTER_IMAGE, cv::IMREAD_GRAYSCALE); string filename = getDataPath(GetParam());
Mat img = imread(filename, IMREAD_GRAYSCALE);
ASSERT_FALSE(img.empty()); ASSERT_FALSE(img.empty());
ocl::SURF_OCL d_surf; SURF_OCL d_surf;
ocl::oclMat d_keypoints; oclMat d_keypoints;
ocl::oclMat d_descriptors; oclMat d_descriptors;
Mat cpu_kp;
Mat cpu_dp;
double totalgputick = 0; declare.time(60);
double totalgputick_kernel = 0;
double t1 = 0; TEST_CYCLE()
double t2 = 0;
for(int j = 0; j < LOOP_TIMES + 1; j ++)
{ {
t1 = (double)cvGetTickCount();//gpu start1 oclMat d_src(img);
ocl::oclMat d_src(img);//upload
t2 = (double)cvGetTickCount(); //kernel
d_surf(d_src, ocl::oclMat(), d_keypoints, d_descriptors);
t2 = (double)cvGetTickCount() - t2;//kernel
cv::Mat cpu_kp, cpu_dp; d_surf(d_src, oclMat(), d_keypoints, d_descriptors);
d_keypoints.download (cpu_kp);//download
d_descriptors.download (cpu_dp);//download
t1 = (double)cvGetTickCount() - t1;//gpu end1 d_keypoints.download(cpu_kp);
d_descriptors.download(cpu_dp);
if(j == 0) }
continue;
totalgputick = t1 + totalgputick; SANITY_CHECK(cpu_kp, 1);
SANITY_CHECK(cpu_dp, 1);
}
totalgputick_kernel = t2 + totalgputick_kernel; PERF_TEST_P(OCL_SURF, DISABLED_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);
cout << "average gpu runtime is " << totalgputick / ((double)cvGetTickFrequency()* LOOP_TIMES * 1000.) << "ms" << endl; declare.time(60);
cout << "average gpu runtime without data transfer is " << totalgputick_kernel / ((double)cvGetTickFrequency()* LOOP_TIMES * 1000.) << "ms" << endl;
TEST_CYCLE() d_surf(d_src, oclMat(), d_keypoints, d_descriptors);
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);
} }
#endif //Have opencl
\ No newline at end of file #endif // HAVE_OPENCV_OCL
\ No newline at end of file
...@@ -17,10 +17,6 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND) ...@@ -17,10 +17,6 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND)
ocv_include_directories(${OPENCL_INCLUDE_DIR}) ocv_include_directories(${OPENCL_INCLUDE_DIR})
endif() endif()
if(CMAKE_COMPILER_IS_GNUCXX AND NOT ENABLE_NOISY_WARNINGS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
endif()
# --------------------------------------------- # ---------------------------------------------
# Define executable targets # Define executable targets
# --------------------------------------------- # ---------------------------------------------
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#define USE_OPENCL #define USE_OPENCL
#ifdef USE_OPENCL #ifdef USE_OPENCL
#include "opencv2/ocl/ocl.hpp" #include "opencv2/ocl/ocl.hpp"
#include "opencv2/nonfree/ocl.hpp"
#endif #endif
#define TAB " " #define TAB " "
......
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
#include "opencv2/highgui/highgui.hpp" #include "opencv2/highgui/highgui.hpp"
#include "opencv2/ocl/ocl.hpp" #include "opencv2/ocl/ocl.hpp"
#include "opencv2/nonfree/nonfree.hpp" #include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/nonfree/ocl.hpp"
#include "opencv2/calib3d/calib3d.hpp" #include "opencv2/calib3d/calib3d.hpp"
using namespace std; using namespace std;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment