Commit 9368aa9f authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

Merge remote-tracking branch 'origin/master'

parents e80cbbb1 b28acfc1
#include "perf_precomp.hpp"
using namespace std;
using namespace cv;
using namespace cv::gpu;
using namespace cvtest;
using namespace testing;
void printOsInfo()
{
#if defined _WIN32
# if defined _WIN64
cout << "OS: Windows x64 \n" << endl;
# else
cout << "OS: Windows x32 \n" << endl;
# endif
#elif defined linux
# if defined _LP64
cout << "OS: Linux x64 \n" << endl;
# else
cout << "OS: Linux x32 \n" << endl;
# endif
#elif defined __APPLE__
# if defined _LP64
cout << "OS: Apple x64 \n" << endl;
# else
cout << "OS: Apple x32 \n" << endl;
# endif
#endif
}
void printCudaInfo()
{
#if !defined HAVE_CUDA || defined(CUDA_DISABLER)
cout << "OpenCV was built without CUDA support \n" << endl;
#else
int driver;
cudaDriverGetVersion(&driver);
cout << "CUDA Driver version: " << driver << '\n';
cout << "CUDA Runtime version: " << CUDART_VERSION << '\n';
cout << endl;
cout << "GPU module was compiled for the following GPU archs:" << endl;
cout << " BIN: " << CUDA_ARCH_BIN << '\n';
cout << " PTX: " << CUDA_ARCH_PTX << '\n';
cout << endl;
int deviceCount = getCudaEnabledDeviceCount();
cout << "CUDA device count: " << deviceCount << '\n';
cout << endl;
for (int i = 0; i < deviceCount; ++i)
{
DeviceInfo info(i);
cout << "Device [" << i << "] \n";
cout << "\t Name: " << info.name() << '\n';
cout << "\t Compute capability: " << info.majorVersion() << '.' << info.minorVersion()<< '\n';
cout << "\t Multi Processor Count: " << info.multiProcessorCount() << '\n';
cout << "\t Total memory: " << static_cast<int>(static_cast<int>(info.totalMemory() / 1024.0) / 1024.0) << " Mb \n";
cout << "\t Free memory: " << static_cast<int>(static_cast<int>(info.freeMemory() / 1024.0) / 1024.0) << " Mb \n";
if (!info.isCompatible())
cout << "\t !!! This device is NOT compatible with current GPU module build \n";
cout << endl;
}
#endif
}
int main(int argc, char** argv)
{
const std::string keys =
"{ h help ? | | Print help}"
"{ i info | | Print information about system and exit }"
"{ device | 0 | Device on which tests will be executed }"
"{ cpu | | Run tests on cpu }"
;
CommandLineParser cmd(argc, (const char**) argv, keys);
if (cmd.has("help"))
{
cmd.printMessage();
return 0;
}
printOsInfo();
printCudaInfo();
if (cmd.has("info"))
{
return 0;
}
int device = cmd.get<int>("device");
bool cpu = cmd.has("cpu");
#if !defined HAVE_CUDA || defined(CUDA_DISABLER)
cpu = true;
#endif
if (cpu)
{
runOnGpu = false;
cout << "Run tests on CPU \n" << endl;
}
else
{
runOnGpu = true;
if (device < 0 || device >= getCudaEnabledDeviceCount())
{
cerr << "Incorrect device index - " << device << endl;
return -1;
}
DeviceInfo info(device);
if (!info.isCompatible())
{
cerr << "Device " << device << " [" << info.name() << "] is NOT compatible with current GPU module build" << endl;
return -1;
}
setDevice(device);
cout << "Run tests on device " << device << " [" << info.name() << "] \n" << endl;
}
InitGoogleTest(&argc, argv);
perf::TestBase::Init(argc, argv);
return RUN_ALL_TESTS();
}
...@@ -24,7 +24,7 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBM, Values(pair_string("gpu/perf/aloe.png", ...@@ -24,7 +24,7 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBM, Values(pair_string("gpu/perf/aloe.png",
const int preset = 0; const int preset = 0;
const int ndisp = 256; const int ndisp = 256;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::StereoBM_GPU d_bm(preset, ndisp); cv::gpu::StereoBM_GPU d_bm(preset, ndisp);
...@@ -38,6 +38,8 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBM, Values(pair_string("gpu/perf/aloe.png", ...@@ -38,6 +38,8 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBM, Values(pair_string("gpu/perf/aloe.png",
{ {
d_bm(d_imgLeft, d_imgRight, d_dst); d_bm(d_imgLeft, d_imgRight, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -51,6 +53,8 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBM, Values(pair_string("gpu/perf/aloe.png", ...@@ -51,6 +53,8 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBM, Values(pair_string("gpu/perf/aloe.png",
{ {
bm(imgLeft, imgRight, dst); bm(imgLeft, imgRight, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -69,7 +73,7 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBeliefPropagation, Values(pair_string("gpu/ ...@@ -69,7 +73,7 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBeliefPropagation, Values(pair_string("gpu/
const int ndisp = 64; const int ndisp = 64;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::StereoBeliefPropagation d_bp(ndisp); cv::gpu::StereoBeliefPropagation d_bp(ndisp);
...@@ -83,10 +87,12 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBeliefPropagation, Values(pair_string("gpu/ ...@@ -83,10 +87,12 @@ PERF_TEST_P(ImagePair, Calib3D_StereoBeliefPropagation, Values(pair_string("gpu/
{ {
d_bp(d_imgLeft, d_imgRight, d_dst); d_bp(d_imgLeft, d_imgRight, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy.";
} }
} }
...@@ -105,7 +111,7 @@ PERF_TEST_P(ImagePair, Calib3D_StereoConstantSpaceBP, Values(pair_string("gpu/st ...@@ -105,7 +111,7 @@ PERF_TEST_P(ImagePair, Calib3D_StereoConstantSpaceBP, Values(pair_string("gpu/st
const int ndisp = 128; const int ndisp = 128;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::StereoConstantSpaceBP d_csbp(ndisp); cv::gpu::StereoConstantSpaceBP d_csbp(ndisp);
...@@ -119,10 +125,12 @@ PERF_TEST_P(ImagePair, Calib3D_StereoConstantSpaceBP, Values(pair_string("gpu/st ...@@ -119,10 +125,12 @@ PERF_TEST_P(ImagePair, Calib3D_StereoConstantSpaceBP, Values(pair_string("gpu/st
{ {
d_csbp(d_imgLeft, d_imgRight, d_dst); d_csbp(d_imgLeft, d_imgRight, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy.";
} }
} }
...@@ -139,7 +147,7 @@ PERF_TEST_P(ImagePair, Calib3D_DisparityBilateralFilter, Values(pair_string("gpu ...@@ -139,7 +147,7 @@ PERF_TEST_P(ImagePair, Calib3D_DisparityBilateralFilter, Values(pair_string("gpu
const int ndisp = 128; const int ndisp = 128;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::DisparityBilateralFilter d_filter(ndisp); cv::gpu::DisparityBilateralFilter d_filter(ndisp);
...@@ -153,10 +161,12 @@ PERF_TEST_P(ImagePair, Calib3D_DisparityBilateralFilter, Values(pair_string("gpu ...@@ -153,10 +161,12 @@ PERF_TEST_P(ImagePair, Calib3D_DisparityBilateralFilter, Values(pair_string("gpu
{ {
d_filter(d_disp, d_img, d_dst); d_filter(d_disp, d_img, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy.";
} }
} }
...@@ -175,7 +185,7 @@ PERF_TEST_P(Count, Calib3D_TransformPoints, Values(5000, 10000, 20000)) ...@@ -175,7 +185,7 @@ PERF_TEST_P(Count, Calib3D_TransformPoints, Values(5000, 10000, 20000))
const cv::Mat rvec = cv::Mat::ones(1, 3, CV_32FC1); const cv::Mat rvec = cv::Mat::ones(1, 3, CV_32FC1);
const cv::Mat tvec = cv::Mat::ones(1, 3, CV_32FC1); const cv::Mat tvec = cv::Mat::ones(1, 3, CV_32FC1);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -186,10 +196,12 @@ PERF_TEST_P(Count, Calib3D_TransformPoints, Values(5000, 10000, 20000)) ...@@ -186,10 +196,12 @@ PERF_TEST_P(Count, Calib3D_TransformPoints, Values(5000, 10000, 20000))
{ {
cv::gpu::transformPoints(d_src, rvec, tvec, d_dst); cv::gpu::transformPoints(d_src, rvec, tvec, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy.";
} }
} }
...@@ -207,7 +219,7 @@ PERF_TEST_P(Count, Calib3D_ProjectPoints, Values(5000, 10000, 20000)) ...@@ -207,7 +219,7 @@ PERF_TEST_P(Count, Calib3D_ProjectPoints, Values(5000, 10000, 20000))
const cv::Mat tvec = cv::Mat::ones(1, 3, CV_32FC1); const cv::Mat tvec = cv::Mat::ones(1, 3, CV_32FC1);
const cv::Mat camera_mat = cv::Mat::ones(3, 3, CV_32FC1); const cv::Mat camera_mat = cv::Mat::ones(3, 3, CV_32FC1);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -218,6 +230,8 @@ PERF_TEST_P(Count, Calib3D_ProjectPoints, Values(5000, 10000, 20000)) ...@@ -218,6 +230,8 @@ PERF_TEST_P(Count, Calib3D_ProjectPoints, Values(5000, 10000, 20000))
{ {
cv::gpu::projectPoints(d_src, rvec, tvec, camera_mat, cv::Mat(), d_dst); cv::gpu::projectPoints(d_src, rvec, tvec, camera_mat, cv::Mat(), d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -229,6 +243,8 @@ PERF_TEST_P(Count, Calib3D_ProjectPoints, Values(5000, 10000, 20000)) ...@@ -229,6 +243,8 @@ PERF_TEST_P(Count, Calib3D_ProjectPoints, Values(5000, 10000, 20000))
{ {
cv::projectPoints(src, rvec, tvec, camera_mat, cv::noArray(), dst); cv::projectPoints(src, rvec, tvec, camera_mat, cv::noArray(), dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -265,7 +281,7 @@ PERF_TEST_P(Count, Calib3D_SolvePnPRansac, Values(5000, 10000, 20000)) ...@@ -265,7 +281,7 @@ PERF_TEST_P(Count, Calib3D_SolvePnPRansac, Values(5000, 10000, 20000))
cv::Mat rvec; cv::Mat rvec;
cv::Mat tvec; cv::Mat tvec;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::solvePnPRansac(object, image, camera_mat, dist_coef, rvec, tvec); cv::gpu::solvePnPRansac(object, image, camera_mat, dist_coef, rvec, tvec);
...@@ -283,6 +299,9 @@ PERF_TEST_P(Count, Calib3D_SolvePnPRansac, Values(5000, 10000, 20000)) ...@@ -283,6 +299,9 @@ PERF_TEST_P(Count, Calib3D_SolvePnPRansac, Values(5000, 10000, 20000))
cv::solvePnPRansac(object, image, camera_mat, dist_coef, rvec, tvec); cv::solvePnPRansac(object, image, camera_mat, dist_coef, rvec, tvec);
} }
} }
CPU_SANITY_CHECK(rvec);
CPU_SANITY_CHECK(tvec);
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
...@@ -299,7 +318,7 @@ PERF_TEST_P(Sz_Depth, Calib3D_ReprojectImageTo3D, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -299,7 +318,7 @@ PERF_TEST_P(Sz_Depth, Calib3D_ReprojectImageTo3D, Combine(GPU_TYPICAL_MAT_SIZES,
cv::Mat Q(4, 4, CV_32FC1); cv::Mat Q(4, 4, CV_32FC1);
fillRandom(Q, 0.1, 1.0); fillRandom(Q, 0.1, 1.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -310,6 +329,8 @@ PERF_TEST_P(Sz_Depth, Calib3D_ReprojectImageTo3D, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -310,6 +329,8 @@ PERF_TEST_P(Sz_Depth, Calib3D_ReprojectImageTo3D, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::gpu::reprojectImageTo3D(d_src, d_dst, Q); cv::gpu::reprojectImageTo3D(d_src, d_dst, Q);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -321,6 +342,8 @@ PERF_TEST_P(Sz_Depth, Calib3D_ReprojectImageTo3D, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -321,6 +342,8 @@ PERF_TEST_P(Sz_Depth, Calib3D_ReprojectImageTo3D, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::reprojectImageTo3D(src, dst, Q); cv::reprojectImageTo3D(src, dst, Q);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -335,7 +358,7 @@ PERF_TEST_P(Sz_Depth, Calib3D_DrawColorDisp, Combine(GPU_TYPICAL_MAT_SIZES, Valu ...@@ -335,7 +358,7 @@ PERF_TEST_P(Sz_Depth, Calib3D_DrawColorDisp, Combine(GPU_TYPICAL_MAT_SIZES, Valu
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src, 0, 255); fillRandom(src, 0, 255);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -346,10 +369,12 @@ PERF_TEST_P(Sz_Depth, Calib3D_DrawColorDisp, Combine(GPU_TYPICAL_MAT_SIZES, Valu ...@@ -346,10 +369,12 @@ PERF_TEST_P(Sz_Depth, Calib3D_DrawColorDisp, Combine(GPU_TYPICAL_MAT_SIZES, Valu
{ {
cv::gpu::drawColorDisp(d_src, d_dst, 255); cv::gpu::drawColorDisp(d_src, d_dst, 255);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy.";
} }
} }
......
...@@ -20,7 +20,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Merge, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D ...@@ -20,7 +20,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Merge, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D
for (int i = 0; i < channels; ++i) for (int i = 0; i < channels; ++i)
src[i] = cv::Mat(size, depth, cv::Scalar::all(i)); src[i] = cv::Mat(size, depth, cv::Scalar::all(i));
if (runOnGpu) if (PERF_RUN_GPU())
{ {
std::vector<cv::gpu::GpuMat> d_src(channels); std::vector<cv::gpu::GpuMat> d_src(channels);
for (int i = 0; i < channels; ++i) for (int i = 0; i < channels; ++i)
...@@ -34,6 +34,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Merge, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D ...@@ -34,6 +34,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Merge, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D
{ {
cv::gpu::merge(d_src, d_dst); cv::gpu::merge(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -45,6 +47,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Merge, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D ...@@ -45,6 +47,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Merge, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D
{ {
cv::merge(src, dst); cv::merge(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -59,7 +63,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Split, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D ...@@ -59,7 +63,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Split, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D
cv::Mat src(size, CV_MAKE_TYPE(depth, channels), cv::Scalar(1, 2, 3, 4)); cv::Mat src(size, CV_MAKE_TYPE(depth, channels), cv::Scalar(1, 2, 3, 4));
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
...@@ -71,6 +75,9 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Split, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D ...@@ -71,6 +75,9 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Split, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D
{ {
cv::gpu::split(d_src, d_dst); cv::gpu::split(d_src, d_dst);
} }
cv::gpu::GpuMat first = d_dst[0];
GPU_SANITY_CHECK(first);
} }
else else
{ {
...@@ -82,6 +89,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Split, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D ...@@ -82,6 +89,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Split, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_D
{ {
cv::split(src, dst); cv::split(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -99,7 +108,7 @@ PERF_TEST_P(Sz_Depth, Core_AddMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_DEP ...@@ -99,7 +108,7 @@ PERF_TEST_P(Sz_Depth, Core_AddMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_DEP
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -111,6 +120,8 @@ PERF_TEST_P(Sz_Depth, Core_AddMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_DEP ...@@ -111,6 +120,8 @@ PERF_TEST_P(Sz_Depth, Core_AddMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_DEP
{ {
cv::gpu::add(d_src1, d_src2, d_dst); cv::gpu::add(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -122,6 +133,8 @@ PERF_TEST_P(Sz_Depth, Core_AddMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_DEP ...@@ -122,6 +133,8 @@ PERF_TEST_P(Sz_Depth, Core_AddMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_DEP
{ {
cv::add(src1, src2, dst); cv::add(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -138,7 +151,7 @@ PERF_TEST_P(Sz_Depth, Core_AddScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_ ...@@ -138,7 +151,7 @@ PERF_TEST_P(Sz_Depth, Core_AddScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_
cv::Scalar s(1, 2, 3, 4); cv::Scalar s(1, 2, 3, 4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -149,6 +162,8 @@ PERF_TEST_P(Sz_Depth, Core_AddScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_ ...@@ -149,6 +162,8 @@ PERF_TEST_P(Sz_Depth, Core_AddScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_
{ {
cv::gpu::add(d_src, s, d_dst); cv::gpu::add(d_src, s, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -160,6 +175,8 @@ PERF_TEST_P(Sz_Depth, Core_AddScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_ ...@@ -160,6 +175,8 @@ PERF_TEST_P(Sz_Depth, Core_AddScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_
{ {
cv::add(src, s, dst); cv::add(src, s, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -177,7 +194,7 @@ PERF_TEST_P(Sz_Depth, Core_SubtractMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA ...@@ -177,7 +194,7 @@ PERF_TEST_P(Sz_Depth, Core_SubtractMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -189,6 +206,8 @@ PERF_TEST_P(Sz_Depth, Core_SubtractMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA ...@@ -189,6 +206,8 @@ PERF_TEST_P(Sz_Depth, Core_SubtractMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA
{ {
cv::gpu::subtract(d_src1, d_src2, d_dst); cv::gpu::subtract(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -200,6 +219,8 @@ PERF_TEST_P(Sz_Depth, Core_SubtractMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA ...@@ -200,6 +219,8 @@ PERF_TEST_P(Sz_Depth, Core_SubtractMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA
{ {
cv::subtract(src1, src2, dst); cv::subtract(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -216,7 +237,7 @@ PERF_TEST_P(Sz_Depth, Core_SubtractScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM ...@@ -216,7 +237,7 @@ PERF_TEST_P(Sz_Depth, Core_SubtractScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM
cv::Scalar s(1, 2, 3, 4); cv::Scalar s(1, 2, 3, 4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -227,6 +248,8 @@ PERF_TEST_P(Sz_Depth, Core_SubtractScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM ...@@ -227,6 +248,8 @@ PERF_TEST_P(Sz_Depth, Core_SubtractScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM
{ {
cv::gpu::subtract(d_src, s, d_dst); cv::gpu::subtract(d_src, s, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -238,6 +261,8 @@ PERF_TEST_P(Sz_Depth, Core_SubtractScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM ...@@ -238,6 +261,8 @@ PERF_TEST_P(Sz_Depth, Core_SubtractScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM
{ {
cv::subtract(src, s, dst); cv::subtract(src, s, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -255,7 +280,7 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA ...@@ -255,7 +280,7 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -267,6 +292,8 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA ...@@ -267,6 +292,8 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA
{ {
cv::gpu::multiply(d_src1, d_src2, d_dst); cv::gpu::multiply(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -278,6 +305,8 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA ...@@ -278,6 +305,8 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MA
{ {
cv::multiply(src1, src2, dst); cv::multiply(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -294,7 +323,7 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM ...@@ -294,7 +323,7 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM
cv::Scalar s(1, 2, 3, 4); cv::Scalar s(1, 2, 3, 4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -305,6 +334,8 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM ...@@ -305,6 +334,8 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM
{ {
cv::gpu::multiply(d_src, s, d_dst); cv::gpu::multiply(d_src, s, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -316,6 +347,8 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM ...@@ -316,6 +347,8 @@ PERF_TEST_P(Sz_Depth, Core_MultiplyScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM
{ {
cv::multiply(src, s, dst); cv::multiply(src, s, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -333,7 +366,7 @@ PERF_TEST_P(Sz_Depth, Core_DivideMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_ ...@@ -333,7 +366,7 @@ PERF_TEST_P(Sz_Depth, Core_DivideMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -345,6 +378,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_ ...@@ -345,6 +378,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_
{ {
cv::gpu::divide(d_src1, d_src2, d_dst); cv::gpu::divide(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -356,6 +391,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_ ...@@ -356,6 +391,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT_
{ {
cv::divide(src1, src2, dst); cv::divide(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -372,7 +409,7 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_M ...@@ -372,7 +409,7 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_M
cv::Scalar s(1, 2, 3, 4); cv::Scalar s(1, 2, 3, 4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -383,6 +420,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_M ...@@ -383,6 +420,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_M
{ {
cv::gpu::divide(d_src, s, d_dst); cv::gpu::divide(d_src, s, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -394,6 +433,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_M ...@@ -394,6 +433,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_M
{ {
cv::divide(src, s, dst); cv::divide(src, s, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -410,7 +451,7 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalarInv, Combine(GPU_TYPICAL_MAT_SIZES, ARITH ...@@ -410,7 +451,7 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalarInv, Combine(GPU_TYPICAL_MAT_SIZES, ARITH
double s = 100.0; double s = 100.0;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -421,6 +462,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalarInv, Combine(GPU_TYPICAL_MAT_SIZES, ARITH ...@@ -421,6 +462,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalarInv, Combine(GPU_TYPICAL_MAT_SIZES, ARITH
{ {
cv::gpu::divide(s, d_src, d_dst); cv::gpu::divide(s, d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -432,6 +475,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalarInv, Combine(GPU_TYPICAL_MAT_SIZES, ARITH ...@@ -432,6 +475,8 @@ PERF_TEST_P(Sz_Depth, Core_DivideScalarInv, Combine(GPU_TYPICAL_MAT_SIZES, ARITH
{ {
cv::divide(s, src, dst); cv::divide(s, src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -449,7 +494,7 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT ...@@ -449,7 +494,7 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -461,6 +506,8 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT ...@@ -461,6 +506,8 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT
{ {
cv::gpu::absdiff(d_src1, d_src2, d_dst); cv::gpu::absdiff(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -472,6 +519,8 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT ...@@ -472,6 +519,8 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_MAT
{ {
cv::absdiff(src1, src2, dst); cv::absdiff(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -488,7 +537,7 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_ ...@@ -488,7 +537,7 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_
cv::Scalar s(1, 2, 3, 4); cv::Scalar s(1, 2, 3, 4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -499,6 +548,8 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_ ...@@ -499,6 +548,8 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_
{ {
cv::gpu::absdiff(d_src, s, d_dst); cv::gpu::absdiff(d_src, s, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -510,6 +561,8 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_ ...@@ -510,6 +561,8 @@ PERF_TEST_P(Sz_Depth, Core_AbsDiffScalar, Combine(GPU_TYPICAL_MAT_SIZES, ARITHM_
{ {
cv::absdiff(src, s, dst); cv::absdiff(src, s, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -524,7 +577,7 @@ PERF_TEST_P(Sz_Depth, Core_Abs, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_16S, CV ...@@ -524,7 +577,7 @@ PERF_TEST_P(Sz_Depth, Core_Abs, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_16S, CV
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -535,10 +588,12 @@ PERF_TEST_P(Sz_Depth, Core_Abs, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_16S, CV ...@@ -535,10 +588,12 @@ PERF_TEST_P(Sz_Depth, Core_Abs, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_16S, CV
{ {
cv::gpu::abs(d_src, d_dst); cv::gpu::abs(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -553,7 +608,7 @@ PERF_TEST_P(Sz_Depth, Core_Sqr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_ ...@@ -553,7 +608,7 @@ PERF_TEST_P(Sz_Depth, Core_Sqr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -564,10 +619,12 @@ PERF_TEST_P(Sz_Depth, Core_Sqr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_ ...@@ -564,10 +619,12 @@ PERF_TEST_P(Sz_Depth, Core_Sqr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_
{ {
cv::gpu::sqr(d_src, d_dst); cv::gpu::sqr(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -582,7 +639,7 @@ PERF_TEST_P(Sz_Depth, Core_Sqrt, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV ...@@ -582,7 +639,7 @@ PERF_TEST_P(Sz_Depth, Core_Sqrt, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -593,6 +650,8 @@ PERF_TEST_P(Sz_Depth, Core_Sqrt, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV ...@@ -593,6 +650,8 @@ PERF_TEST_P(Sz_Depth, Core_Sqrt, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV
{ {
cv::gpu::sqrt(d_src, d_dst); cv::gpu::sqrt(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -604,6 +663,8 @@ PERF_TEST_P(Sz_Depth, Core_Sqrt, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV ...@@ -604,6 +663,8 @@ PERF_TEST_P(Sz_Depth, Core_Sqrt, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV
{ {
cv::sqrt(src, dst); cv::sqrt(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -618,7 +679,7 @@ PERF_TEST_P(Sz_Depth, Core_Log, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_ ...@@ -618,7 +679,7 @@ PERF_TEST_P(Sz_Depth, Core_Log, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src, 1.0, 255.0); fillRandom(src, 1.0, 255.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -629,6 +690,8 @@ PERF_TEST_P(Sz_Depth, Core_Log, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_ ...@@ -629,6 +690,8 @@ PERF_TEST_P(Sz_Depth, Core_Log, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_
{ {
cv::gpu::log(d_src, d_dst); cv::gpu::log(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -640,6 +703,8 @@ PERF_TEST_P(Sz_Depth, Core_Log, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_ ...@@ -640,6 +703,8 @@ PERF_TEST_P(Sz_Depth, Core_Log, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_
{ {
cv::log(src, dst); cv::log(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -654,7 +719,7 @@ PERF_TEST_P(Sz_Depth, Core_Exp, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_ ...@@ -654,7 +719,7 @@ PERF_TEST_P(Sz_Depth, Core_Exp, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src, 1.0, 10.0); fillRandom(src, 1.0, 10.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -665,6 +730,8 @@ PERF_TEST_P(Sz_Depth, Core_Exp, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_ ...@@ -665,6 +730,8 @@ PERF_TEST_P(Sz_Depth, Core_Exp, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_
{ {
cv::gpu::exp(d_src, d_dst); cv::gpu::exp(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -676,6 +743,8 @@ PERF_TEST_P(Sz_Depth, Core_Exp, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_ ...@@ -676,6 +743,8 @@ PERF_TEST_P(Sz_Depth, Core_Exp, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, CV_
{ {
cv::exp(src, dst); cv::exp(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -693,7 +762,7 @@ PERF_TEST_P(Sz_Depth_Power, Core_Pow, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -693,7 +762,7 @@ PERF_TEST_P(Sz_Depth_Power, Core_Pow, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src, 1.0, 10.0); fillRandom(src, 1.0, 10.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -704,6 +773,8 @@ PERF_TEST_P(Sz_Depth_Power, Core_Pow, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -704,6 +773,8 @@ PERF_TEST_P(Sz_Depth_Power, Core_Pow, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
cv::gpu::pow(d_src, power, d_dst); cv::gpu::pow(d_src, power, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -715,6 +786,8 @@ PERF_TEST_P(Sz_Depth_Power, Core_Pow, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -715,6 +786,8 @@ PERF_TEST_P(Sz_Depth_Power, Core_Pow, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
cv::pow(src, power, dst); cv::pow(src, power, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -738,7 +811,7 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITH ...@@ -738,7 +811,7 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITH
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -750,6 +823,8 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITH ...@@ -750,6 +823,8 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITH
{ {
cv::gpu::compare(d_src1, d_src2, d_dst, cmp_code); cv::gpu::compare(d_src1, d_src2, d_dst, cmp_code);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -761,6 +836,8 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITH ...@@ -761,6 +836,8 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareMat, Combine(GPU_TYPICAL_MAT_SIZES, ARITH
{ {
cv::compare(src1, src2, dst, cmp_code); cv::compare(src1, src2, dst, cmp_code);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -778,7 +855,7 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareScalar, Combine(GPU_TYPICAL_MAT_SIZES, AR ...@@ -778,7 +855,7 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareScalar, Combine(GPU_TYPICAL_MAT_SIZES, AR
cv::Scalar s = cv::Scalar::all(100); cv::Scalar s = cv::Scalar::all(100);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -789,6 +866,8 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareScalar, Combine(GPU_TYPICAL_MAT_SIZES, AR ...@@ -789,6 +866,8 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareScalar, Combine(GPU_TYPICAL_MAT_SIZES, AR
{ {
cv::gpu::compare(d_src, s, d_dst, cmp_code); cv::gpu::compare(d_src, s, d_dst, cmp_code);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -800,6 +879,8 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareScalar, Combine(GPU_TYPICAL_MAT_SIZES, AR ...@@ -800,6 +879,8 @@ PERF_TEST_P(Sz_Depth_Code, Core_CompareScalar, Combine(GPU_TYPICAL_MAT_SIZES, AR
{ {
cv::compare(src, s, dst, cmp_code); cv::compare(src, s, dst, cmp_code);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -814,7 +895,7 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseNot, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_ ...@@ -814,7 +895,7 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseNot, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -825,6 +906,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseNot, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_ ...@@ -825,6 +906,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseNot, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_
{ {
cv::gpu::bitwise_not(d_src, d_dst); cv::gpu::bitwise_not(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -836,6 +919,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseNot, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_ ...@@ -836,6 +919,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseNot, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_
{ {
cv::bitwise_not(src, dst); cv::bitwise_not(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -853,7 +938,7 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseAndMat, Combine(GPU_TYPICAL_MAT_SIZES, Values( ...@@ -853,7 +938,7 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseAndMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -865,6 +950,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseAndMat, Combine(GPU_TYPICAL_MAT_SIZES, Values( ...@@ -865,6 +950,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseAndMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(
{ {
cv::gpu::bitwise_and(d_src1, d_src2, d_dst); cv::gpu::bitwise_and(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -895,7 +982,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseAndScalar, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -895,7 +982,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseAndScalar, Combine(GPU_TYPICAL_MAT_SIZES, V
cv::Scalar s = cv::Scalar::all(100); cv::Scalar s = cv::Scalar::all(100);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -906,6 +993,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseAndScalar, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -906,6 +993,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseAndScalar, Combine(GPU_TYPICAL_MAT_SIZES, V
{ {
cv::gpu::bitwise_and(d_src, s, d_dst); cv::gpu::bitwise_and(d_src, s, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -917,6 +1006,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseAndScalar, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -917,6 +1006,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseAndScalar, Combine(GPU_TYPICAL_MAT_SIZES, V
{ {
cv::bitwise_and(src, s, dst); cv::bitwise_and(src, s, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -934,7 +1025,7 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseOrMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(C ...@@ -934,7 +1025,7 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseOrMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(C
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -946,6 +1037,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseOrMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(C ...@@ -946,6 +1037,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseOrMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(C
{ {
cv::gpu::bitwise_or(d_src1, d_src2, d_dst); cv::gpu::bitwise_or(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -957,6 +1050,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseOrMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(C ...@@ -957,6 +1050,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseOrMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(C
{ {
cv::bitwise_or(src1, src2, dst); cv::bitwise_or(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -976,7 +1071,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseOrScalar, Combine(GPU_TYPICAL_MAT_SIZES, Va ...@@ -976,7 +1071,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseOrScalar, Combine(GPU_TYPICAL_MAT_SIZES, Va
cv::Scalar s = cv::Scalar::all(100); cv::Scalar s = cv::Scalar::all(100);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -987,6 +1082,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseOrScalar, Combine(GPU_TYPICAL_MAT_SIZES, Va ...@@ -987,6 +1082,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseOrScalar, Combine(GPU_TYPICAL_MAT_SIZES, Va
{ {
cv::gpu::bitwise_or(d_src, s, d_dst); cv::gpu::bitwise_or(d_src, s, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -998,6 +1095,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseOrScalar, Combine(GPU_TYPICAL_MAT_SIZES, Va ...@@ -998,6 +1095,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseOrScalar, Combine(GPU_TYPICAL_MAT_SIZES, Va
{ {
cv::bitwise_or(src, s, dst); cv::bitwise_or(src, s, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1015,7 +1114,7 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseXorMat, Combine(GPU_TYPICAL_MAT_SIZES, Values( ...@@ -1015,7 +1114,7 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseXorMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1027,6 +1126,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseXorMat, Combine(GPU_TYPICAL_MAT_SIZES, Values( ...@@ -1027,6 +1126,8 @@ PERF_TEST_P(Sz_Depth, Core_BitwiseXorMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(
{ {
cv::gpu::bitwise_xor(d_src1, d_src2, d_dst); cv::gpu::bitwise_xor(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1057,7 +1158,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseXorScalar, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -1057,7 +1158,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseXorScalar, Combine(GPU_TYPICAL_MAT_SIZES, V
cv::Scalar s = cv::Scalar::all(100); cv::Scalar s = cv::Scalar::all(100);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1068,6 +1169,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseXorScalar, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -1068,6 +1169,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseXorScalar, Combine(GPU_TYPICAL_MAT_SIZES, V
{ {
cv::gpu::bitwise_xor(d_src, s, d_dst); cv::gpu::bitwise_xor(d_src, s, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1079,6 +1182,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseXorScalar, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -1079,6 +1182,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_BitwiseXorScalar, Combine(GPU_TYPICAL_MAT_SIZES, V
{ {
cv::bitwise_xor(src, s, dst); cv::bitwise_xor(src, s, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1098,7 +1203,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_RShift, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1098,7 +1203,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_RShift, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
const cv::Scalar_<int> val = cv::Scalar_<int>::all(4); const cv::Scalar_<int> val = cv::Scalar_<int>::all(4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1109,10 +1214,12 @@ PERF_TEST_P(Sz_Depth_Cn, Core_RShift, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1109,10 +1214,12 @@ PERF_TEST_P(Sz_Depth_Cn, Core_RShift, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
cv::gpu::rshift(d_src, val, d_dst); cv::gpu::rshift(d_src, val, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1132,7 +1239,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_LShift, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1132,7 +1239,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_LShift, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
const cv::Scalar_<int> val = cv::Scalar_<int>::all(4); const cv::Scalar_<int> val = cv::Scalar_<int>::all(4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1143,10 +1250,12 @@ PERF_TEST_P(Sz_Depth_Cn, Core_LShift, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1143,10 +1250,12 @@ PERF_TEST_P(Sz_Depth_Cn, Core_LShift, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
cv::gpu::lshift(d_src, val, d_dst); cv::gpu::lshift(d_src, val, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1164,7 +1273,7 @@ PERF_TEST_P(Sz_Depth, Core_MinMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, ...@@ -1164,7 +1273,7 @@ PERF_TEST_P(Sz_Depth, Core_MinMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U,
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1176,6 +1285,8 @@ PERF_TEST_P(Sz_Depth, Core_MinMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, ...@@ -1176,6 +1285,8 @@ PERF_TEST_P(Sz_Depth, Core_MinMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U,
{ {
cv::gpu::min(d_src1, d_src2, d_dst); cv::gpu::min(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1187,6 +1298,8 @@ PERF_TEST_P(Sz_Depth, Core_MinMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, ...@@ -1187,6 +1298,8 @@ PERF_TEST_P(Sz_Depth, Core_MinMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U,
{ {
cv::min(src1, src2, dst); cv::min(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1203,7 +1316,7 @@ PERF_TEST_P(Sz_Depth, Core_MinScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1203,7 +1316,7 @@ PERF_TEST_P(Sz_Depth, Core_MinScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
const double val = 50.0; const double val = 50.0;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1214,6 +1327,8 @@ PERF_TEST_P(Sz_Depth, Core_MinScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1214,6 +1327,8 @@ PERF_TEST_P(Sz_Depth, Core_MinScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
cv::gpu::min(d_src, val, d_dst); cv::gpu::min(d_src, val, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1225,6 +1340,8 @@ PERF_TEST_P(Sz_Depth, Core_MinScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1225,6 +1340,8 @@ PERF_TEST_P(Sz_Depth, Core_MinScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
cv::min(src, val, dst); cv::min(src, val, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1242,7 +1359,7 @@ PERF_TEST_P(Sz_Depth, Core_MaxMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, ...@@ -1242,7 +1359,7 @@ PERF_TEST_P(Sz_Depth, Core_MaxMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U,
cv::Mat src2(size, depth); cv::Mat src2(size, depth);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1254,6 +1371,8 @@ PERF_TEST_P(Sz_Depth, Core_MaxMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, ...@@ -1254,6 +1371,8 @@ PERF_TEST_P(Sz_Depth, Core_MaxMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U,
{ {
cv::gpu::max(d_src1, d_src2, d_dst); cv::gpu::max(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1265,6 +1384,8 @@ PERF_TEST_P(Sz_Depth, Core_MaxMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U, ...@@ -1265,6 +1384,8 @@ PERF_TEST_P(Sz_Depth, Core_MaxMat, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U,
{ {
cv::max(src1, src2, dst); cv::max(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1281,7 +1402,7 @@ PERF_TEST_P(Sz_Depth, Core_MaxScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1281,7 +1402,7 @@ PERF_TEST_P(Sz_Depth, Core_MaxScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
const double val = 50.0; const double val = 50.0;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1292,6 +1413,8 @@ PERF_TEST_P(Sz_Depth, Core_MaxScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1292,6 +1413,8 @@ PERF_TEST_P(Sz_Depth, Core_MaxScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
cv::gpu::max(d_src, val, d_dst); cv::gpu::max(d_src, val, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1303,6 +1426,8 @@ PERF_TEST_P(Sz_Depth, Core_MaxScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -1303,6 +1426,8 @@ PERF_TEST_P(Sz_Depth, Core_MaxScalar, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
cv::max(src, val, dst); cv::max(src, val, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1328,7 +1453,7 @@ PERF_TEST_P(Sz_3Depth, Core_AddWeighted, Combine( ...@@ -1328,7 +1453,7 @@ PERF_TEST_P(Sz_3Depth, Core_AddWeighted, Combine(
cv::Mat src2(size, depth2); cv::Mat src2(size, depth2);
fillRandom(src2); fillRandom(src2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1340,6 +1465,8 @@ PERF_TEST_P(Sz_3Depth, Core_AddWeighted, Combine( ...@@ -1340,6 +1465,8 @@ PERF_TEST_P(Sz_3Depth, Core_AddWeighted, Combine(
{ {
cv::gpu::addWeighted(d_src1, 0.5, d_src2, 0.5, 10.0, d_dst, dst_depth); cv::gpu::addWeighted(d_src1, 0.5, d_src2, 0.5, 10.0, d_dst, dst_depth);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1351,6 +1478,8 @@ PERF_TEST_P(Sz_3Depth, Core_AddWeighted, Combine( ...@@ -1351,6 +1478,8 @@ PERF_TEST_P(Sz_3Depth, Core_AddWeighted, Combine(
{ {
cv::addWeighted(src1, 0.5, src2, 0.5, 10.0, dst, dst_depth); cv::addWeighted(src1, 0.5, src2, 0.5, 10.0, dst, dst_depth);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1382,7 +1511,7 @@ PERF_TEST_P(Sz_Type_Flags, Core_GEMM, Combine( ...@@ -1382,7 +1511,7 @@ PERF_TEST_P(Sz_Type_Flags, Core_GEMM, Combine(
cv::Mat src3(size, type); cv::Mat src3(size, type);
fillRandom(src3); fillRandom(src3);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1395,6 +1524,8 @@ PERF_TEST_P(Sz_Type_Flags, Core_GEMM, Combine( ...@@ -1395,6 +1524,8 @@ PERF_TEST_P(Sz_Type_Flags, Core_GEMM, Combine(
{ {
cv::gpu::gemm(d_src1, d_src2, 1.0, d_src3, 1.0, d_dst, flags); cv::gpu::gemm(d_src1, d_src2, 1.0, d_src3, 1.0, d_dst, flags);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1408,6 +1539,8 @@ PERF_TEST_P(Sz_Type_Flags, Core_GEMM, Combine( ...@@ -1408,6 +1539,8 @@ PERF_TEST_P(Sz_Type_Flags, Core_GEMM, Combine(
{ {
cv::gemm(src1, src2, 1.0, src3, 1.0, dst, flags); cv::gemm(src1, src2, 1.0, src3, 1.0, dst, flags);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1424,7 +1557,7 @@ PERF_TEST_P(Sz_Type, Core_Transpose, Combine( ...@@ -1424,7 +1557,7 @@ PERF_TEST_P(Sz_Type, Core_Transpose, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1435,6 +1568,8 @@ PERF_TEST_P(Sz_Type, Core_Transpose, Combine( ...@@ -1435,6 +1568,8 @@ PERF_TEST_P(Sz_Type, Core_Transpose, Combine(
{ {
cv::gpu::transpose(d_src, d_dst); cv::gpu::transpose(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1446,6 +1581,8 @@ PERF_TEST_P(Sz_Type, Core_Transpose, Combine( ...@@ -1446,6 +1581,8 @@ PERF_TEST_P(Sz_Type, Core_Transpose, Combine(
{ {
cv::transpose(src, dst); cv::transpose(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1474,7 +1611,7 @@ PERF_TEST_P(Sz_Depth_Cn_Code, Core_Flip, Combine( ...@@ -1474,7 +1611,7 @@ PERF_TEST_P(Sz_Depth_Cn_Code, Core_Flip, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1485,6 +1622,8 @@ PERF_TEST_P(Sz_Depth_Cn_Code, Core_Flip, Combine( ...@@ -1485,6 +1622,8 @@ PERF_TEST_P(Sz_Depth_Cn_Code, Core_Flip, Combine(
{ {
cv::gpu::flip(d_src, d_dst, flipCode); cv::gpu::flip(d_src, d_dst, flipCode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1496,6 +1635,8 @@ PERF_TEST_P(Sz_Depth_Cn_Code, Core_Flip, Combine( ...@@ -1496,6 +1635,8 @@ PERF_TEST_P(Sz_Depth_Cn_Code, Core_Flip, Combine(
{ {
cv::flip(src, dst, flipCode); cv::flip(src, dst, flipCode);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1515,7 +1656,7 @@ PERF_TEST_P(Sz_Type, Core_LutOneChannel, Combine( ...@@ -1515,7 +1656,7 @@ PERF_TEST_P(Sz_Type, Core_LutOneChannel, Combine(
cv::Mat lut(1, 256, CV_8UC1); cv::Mat lut(1, 256, CV_8UC1);
fillRandom(lut); fillRandom(lut);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1526,6 +1667,8 @@ PERF_TEST_P(Sz_Type, Core_LutOneChannel, Combine( ...@@ -1526,6 +1667,8 @@ PERF_TEST_P(Sz_Type, Core_LutOneChannel, Combine(
{ {
cv::gpu::LUT(d_src, lut, d_dst); cv::gpu::LUT(d_src, lut, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1537,6 +1680,8 @@ PERF_TEST_P(Sz_Type, Core_LutOneChannel, Combine( ...@@ -1537,6 +1680,8 @@ PERF_TEST_P(Sz_Type, Core_LutOneChannel, Combine(
{ {
cv::LUT(src, lut, dst); cv::LUT(src, lut, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1556,7 +1701,7 @@ PERF_TEST_P(Sz_Type, Core_LutMultiChannel, Combine( ...@@ -1556,7 +1701,7 @@ PERF_TEST_P(Sz_Type, Core_LutMultiChannel, Combine(
cv::Mat lut(1, 256, CV_MAKE_TYPE(CV_8U, src.channels())); cv::Mat lut(1, 256, CV_MAKE_TYPE(CV_8U, src.channels()));
fillRandom(lut); fillRandom(lut);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1567,6 +1712,8 @@ PERF_TEST_P(Sz_Type, Core_LutMultiChannel, Combine( ...@@ -1567,6 +1712,8 @@ PERF_TEST_P(Sz_Type, Core_LutMultiChannel, Combine(
{ {
cv::gpu::LUT(d_src, lut, d_dst); cv::gpu::LUT(d_src, lut, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1578,6 +1725,8 @@ PERF_TEST_P(Sz_Type, Core_LutMultiChannel, Combine( ...@@ -1578,6 +1725,8 @@ PERF_TEST_P(Sz_Type, Core_LutMultiChannel, Combine(
{ {
cv::LUT(src, lut, dst); cv::LUT(src, lut, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1591,7 +1740,7 @@ PERF_TEST_P(Sz, Core_MagnitudeComplex, GPU_TYPICAL_MAT_SIZES) ...@@ -1591,7 +1740,7 @@ PERF_TEST_P(Sz, Core_MagnitudeComplex, GPU_TYPICAL_MAT_SIZES)
cv::Mat src(size, CV_32FC2); cv::Mat src(size, CV_32FC2);
fillRandom(src, -100.0, 100.0); fillRandom(src, -100.0, 100.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1602,6 +1751,8 @@ PERF_TEST_P(Sz, Core_MagnitudeComplex, GPU_TYPICAL_MAT_SIZES) ...@@ -1602,6 +1751,8 @@ PERF_TEST_P(Sz, Core_MagnitudeComplex, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::magnitude(d_src, d_dst); cv::gpu::magnitude(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1616,6 +1767,8 @@ PERF_TEST_P(Sz, Core_MagnitudeComplex, GPU_TYPICAL_MAT_SIZES) ...@@ -1616,6 +1767,8 @@ PERF_TEST_P(Sz, Core_MagnitudeComplex, GPU_TYPICAL_MAT_SIZES)
{ {
cv::magnitude(xy[0], xy[1], dst); cv::magnitude(xy[0], xy[1], dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1629,7 +1782,7 @@ PERF_TEST_P(Sz, Core_MagnitudeSqrComplex, GPU_TYPICAL_MAT_SIZES) ...@@ -1629,7 +1782,7 @@ PERF_TEST_P(Sz, Core_MagnitudeSqrComplex, GPU_TYPICAL_MAT_SIZES)
cv::Mat src(size, CV_32FC2); cv::Mat src(size, CV_32FC2);
fillRandom(src, -100.0, 100.0); fillRandom(src, -100.0, 100.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1640,10 +1793,12 @@ PERF_TEST_P(Sz, Core_MagnitudeSqrComplex, GPU_TYPICAL_MAT_SIZES) ...@@ -1640,10 +1793,12 @@ PERF_TEST_P(Sz, Core_MagnitudeSqrComplex, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::magnitudeSqr(d_src, d_dst); cv::gpu::magnitudeSqr(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1660,7 +1815,7 @@ PERF_TEST_P(Sz, Core_Magnitude, GPU_TYPICAL_MAT_SIZES) ...@@ -1660,7 +1815,7 @@ PERF_TEST_P(Sz, Core_Magnitude, GPU_TYPICAL_MAT_SIZES)
cv::Mat src2(size, CV_32FC1); cv::Mat src2(size, CV_32FC1);
fillRandom(src2, -100.0, 100.0); fillRandom(src2, -100.0, 100.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1672,6 +1827,8 @@ PERF_TEST_P(Sz, Core_Magnitude, GPU_TYPICAL_MAT_SIZES) ...@@ -1672,6 +1827,8 @@ PERF_TEST_P(Sz, Core_Magnitude, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::magnitude(d_src1, d_src2, d_dst); cv::gpu::magnitude(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1683,6 +1840,9 @@ PERF_TEST_P(Sz, Core_Magnitude, GPU_TYPICAL_MAT_SIZES) ...@@ -1683,6 +1840,9 @@ PERF_TEST_P(Sz, Core_Magnitude, GPU_TYPICAL_MAT_SIZES)
{ {
cv::magnitude(src1, src2, dst); cv::magnitude(src1, src2, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1699,7 +1859,7 @@ PERF_TEST_P(Sz, Core_MagnitudeSqr, GPU_TYPICAL_MAT_SIZES) ...@@ -1699,7 +1859,7 @@ PERF_TEST_P(Sz, Core_MagnitudeSqr, GPU_TYPICAL_MAT_SIZES)
cv::Mat src2(size, CV_32FC1); cv::Mat src2(size, CV_32FC1);
fillRandom(src2, -100.0, 100.0); fillRandom(src2, -100.0, 100.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1711,10 +1871,12 @@ PERF_TEST_P(Sz, Core_MagnitudeSqr, GPU_TYPICAL_MAT_SIZES) ...@@ -1711,10 +1871,12 @@ PERF_TEST_P(Sz, Core_MagnitudeSqr, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::magnitudeSqr(d_src1, d_src2, d_dst); cv::gpu::magnitudeSqr(d_src1, d_src2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1734,7 +1896,7 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_Phase, Combine(GPU_TYPICAL_MAT_SIZES, Bool() ...@@ -1734,7 +1896,7 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_Phase, Combine(GPU_TYPICAL_MAT_SIZES, Bool()
cv::Mat src2(size, CV_32FC1); cv::Mat src2(size, CV_32FC1);
fillRandom(src2, -100.0, 100.0); fillRandom(src2, -100.0, 100.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1746,6 +1908,8 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_Phase, Combine(GPU_TYPICAL_MAT_SIZES, Bool() ...@@ -1746,6 +1908,8 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_Phase, Combine(GPU_TYPICAL_MAT_SIZES, Bool()
{ {
cv::gpu::phase(d_src1, d_src2, d_dst, angleInDegrees); cv::gpu::phase(d_src1, d_src2, d_dst, angleInDegrees);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1757,6 +1921,8 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_Phase, Combine(GPU_TYPICAL_MAT_SIZES, Bool() ...@@ -1757,6 +1921,8 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_Phase, Combine(GPU_TYPICAL_MAT_SIZES, Bool()
{ {
cv::phase(src1, src2, dst, angleInDegrees); cv::phase(src1, src2, dst, angleInDegrees);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1774,7 +1940,7 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_CartToPolar, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1774,7 +1940,7 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_CartToPolar, Combine(GPU_TYPICAL_MAT_SIZES,
cv::Mat src2(size, CV_32FC1); cv::Mat src2(size, CV_32FC1);
fillRandom(src2, -100.0, 100.0); fillRandom(src2, -100.0, 100.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1787,6 +1953,10 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_CartToPolar, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1787,6 +1953,10 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_CartToPolar, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::gpu::cartToPolar(d_src1, d_src2, d_magnitude, d_angle, angleInDegrees); cv::gpu::cartToPolar(d_src1, d_src2, d_magnitude, d_angle, angleInDegrees);
} }
GPU_SANITY_CHECK(d_magnitude);
GPU_SANITY_CHECK(d_angle);
} }
else else
{ {
...@@ -1799,6 +1969,9 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_CartToPolar, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1799,6 +1969,9 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_CartToPolar, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::cartToPolar(src1, src2, magnitude, angle, angleInDegrees); cv::cartToPolar(src1, src2, magnitude, angle, angleInDegrees);
} }
CPU_SANITY_CHECK(magnitude);
CPU_SANITY_CHECK(angle);
} }
} }
...@@ -1816,7 +1989,7 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_PolarToCart, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1816,7 +1989,7 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_PolarToCart, Combine(GPU_TYPICAL_MAT_SIZES,
cv::Mat angle(size, CV_32FC1); cv::Mat angle(size, CV_32FC1);
fillRandom(angle, 0.0, angleInDegrees ? 360.0 : 2 * CV_PI); fillRandom(angle, 0.0, angleInDegrees ? 360.0 : 2 * CV_PI);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_magnitude(magnitude); cv::gpu::GpuMat d_magnitude(magnitude);
cv::gpu::GpuMat d_angle(angle); cv::gpu::GpuMat d_angle(angle);
...@@ -1829,6 +2002,9 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_PolarToCart, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1829,6 +2002,9 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_PolarToCart, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::gpu::polarToCart(d_magnitude, d_angle, d_x, d_y, angleInDegrees); cv::gpu::polarToCart(d_magnitude, d_angle, d_x, d_y, angleInDegrees);
} }
GPU_SANITY_CHECK(d_x);
GPU_SANITY_CHECK(d_y);
} }
else else
{ {
...@@ -1841,6 +2017,9 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_PolarToCart, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1841,6 +2017,9 @@ PERF_TEST_P(Sz_AngleInDegrees, Core_PolarToCart, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::polarToCart(magnitude, angle, x, y, angleInDegrees); cv::polarToCart(magnitude, angle, x, y, angleInDegrees);
} }
CPU_SANITY_CHECK(x);
CPU_SANITY_CHECK(y);
} }
} }
...@@ -1857,7 +2036,7 @@ PERF_TEST_P(Sz, Core_MeanStdDev, GPU_TYPICAL_MAT_SIZES) ...@@ -1857,7 +2036,7 @@ PERF_TEST_P(Sz, Core_MeanStdDev, GPU_TYPICAL_MAT_SIZES)
cv::Scalar mean; cv::Scalar mean;
cv::Scalar stddev; cv::Scalar stddev;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_buf; cv::gpu::GpuMat d_buf;
...@@ -1878,6 +2057,8 @@ PERF_TEST_P(Sz, Core_MeanStdDev, GPU_TYPICAL_MAT_SIZES) ...@@ -1878,6 +2057,8 @@ PERF_TEST_P(Sz, Core_MeanStdDev, GPU_TYPICAL_MAT_SIZES)
cv::meanStdDev(src, mean, stddev); cv::meanStdDev(src, mean, stddev);
} }
} }
GPU_SANITY_CHECK(stddev);
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
...@@ -1899,7 +2080,7 @@ PERF_TEST_P(Sz_Depth_Norm, Core_Norm, Combine( ...@@ -1899,7 +2080,7 @@ PERF_TEST_P(Sz_Depth_Norm, Core_Norm, Combine(
double dst; double dst;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_buf; cv::gpu::GpuMat d_buf;
...@@ -1920,7 +2101,8 @@ PERF_TEST_P(Sz_Depth_Norm, Core_Norm, Combine( ...@@ -1920,7 +2101,8 @@ PERF_TEST_P(Sz_Depth_Norm, Core_Norm, Combine(
dst = cv::norm(src, normType); dst = cv::norm(src, normType);
} }
} }
(void)dst;
SANITY_CHECK(dst);
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
...@@ -1943,7 +2125,7 @@ PERF_TEST_P(Sz_Norm, Core_NormDiff, Combine( ...@@ -1943,7 +2125,7 @@ PERF_TEST_P(Sz_Norm, Core_NormDiff, Combine(
double dst; double dst;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1954,6 +2136,7 @@ PERF_TEST_P(Sz_Norm, Core_NormDiff, Combine( ...@@ -1954,6 +2136,7 @@ PERF_TEST_P(Sz_Norm, Core_NormDiff, Combine(
{ {
dst = cv::gpu::norm(d_src1, d_src2, normType); dst = cv::gpu::norm(d_src1, d_src2, normType);
} }
} }
else else
{ {
...@@ -1964,7 +2147,8 @@ PERF_TEST_P(Sz_Norm, Core_NormDiff, Combine( ...@@ -1964,7 +2147,8 @@ PERF_TEST_P(Sz_Norm, Core_NormDiff, Combine(
dst = cv::norm(src1, src2, normType); dst = cv::norm(src1, src2, normType);
} }
} }
(void)dst;
SANITY_CHECK(dst);
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
...@@ -1986,7 +2170,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Sum, Combine( ...@@ -1986,7 +2170,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Sum, Combine(
cv::Scalar dst; cv::Scalar dst;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_buf; cv::gpu::GpuMat d_buf;
...@@ -2007,6 +2191,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Sum, Combine( ...@@ -2007,6 +2191,8 @@ PERF_TEST_P(Sz_Depth_Cn, Core_Sum, Combine(
dst = cv::sum(src); dst = cv::sum(src);
} }
} }
SANITY_CHECK(dst);
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
...@@ -2028,7 +2214,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_SumAbs, Combine( ...@@ -2028,7 +2214,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_SumAbs, Combine(
cv::Scalar dst; cv::Scalar dst;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_buf; cv::gpu::GpuMat d_buf;
...@@ -2039,10 +2225,12 @@ PERF_TEST_P(Sz_Depth_Cn, Core_SumAbs, Combine( ...@@ -2039,10 +2225,12 @@ PERF_TEST_P(Sz_Depth_Cn, Core_SumAbs, Combine(
{ {
dst = cv::gpu::absSum(d_src, d_buf); dst = cv::gpu::absSum(d_src, d_buf);
} }
SANITY_CHECK(dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -2065,7 +2253,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_SumSqr, Combine( ...@@ -2065,7 +2253,7 @@ PERF_TEST_P(Sz_Depth_Cn, Core_SumSqr, Combine(
cv::Scalar dst; cv::Scalar dst;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_buf; cv::gpu::GpuMat d_buf;
...@@ -2076,10 +2264,12 @@ PERF_TEST_P(Sz_Depth_Cn, Core_SumSqr, Combine( ...@@ -2076,10 +2264,12 @@ PERF_TEST_P(Sz_Depth_Cn, Core_SumSqr, Combine(
{ {
dst = cv::gpu::sqrSum(d_src, d_buf); dst = cv::gpu::sqrSum(d_src, d_buf);
} }
SANITY_CHECK(dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -2098,7 +2288,7 @@ PERF_TEST_P(Sz_Depth, Core_MinMax, Combine( ...@@ -2098,7 +2288,7 @@ PERF_TEST_P(Sz_Depth, Core_MinMax, Combine(
double minVal, maxVal; double minVal, maxVal;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_buf; cv::gpu::GpuMat d_buf;
...@@ -2109,10 +2299,13 @@ PERF_TEST_P(Sz_Depth, Core_MinMax, Combine( ...@@ -2109,10 +2299,13 @@ PERF_TEST_P(Sz_Depth, Core_MinMax, Combine(
{ {
cv::gpu::minMax(d_src, &minVal, &maxVal, cv::gpu::GpuMat(), d_buf); cv::gpu::minMax(d_src, &minVal, &maxVal, cv::gpu::GpuMat(), d_buf);
} }
SANITY_CHECK(minVal);
SANITY_CHECK(maxVal);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -2132,7 +2325,7 @@ PERF_TEST_P(Sz_Depth, Core_MinMaxLoc, Combine( ...@@ -2132,7 +2325,7 @@ PERF_TEST_P(Sz_Depth, Core_MinMaxLoc, Combine(
double minVal, maxVal; double minVal, maxVal;
cv::Point minLoc, maxLoc; cv::Point minLoc, maxLoc;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_valbuf, d_locbuf; cv::gpu::GpuMat d_valbuf, d_locbuf;
...@@ -2153,6 +2346,13 @@ PERF_TEST_P(Sz_Depth, Core_MinMaxLoc, Combine( ...@@ -2153,6 +2346,13 @@ PERF_TEST_P(Sz_Depth, Core_MinMaxLoc, Combine(
cv::minMaxLoc(src, &minVal, &maxVal, &minLoc, &maxLoc); cv::minMaxLoc(src, &minVal, &maxVal, &minLoc, &maxLoc);
} }
} }
SANITY_CHECK(minVal);
SANITY_CHECK(maxVal);
// unsupported by peft system
//SANITY_CHECK(minLoc);
//SANITY_CHECK(maxLoc);
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
...@@ -2170,7 +2370,7 @@ PERF_TEST_P(Sz_Depth, Core_CountNonZero, Combine( ...@@ -2170,7 +2370,7 @@ PERF_TEST_P(Sz_Depth, Core_CountNonZero, Combine(
int dst; int dst;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_buf; cv::gpu::GpuMat d_buf;
...@@ -2191,7 +2391,8 @@ PERF_TEST_P(Sz_Depth, Core_CountNonZero, Combine( ...@@ -2191,7 +2391,8 @@ PERF_TEST_P(Sz_Depth, Core_CountNonZero, Combine(
dst = cv::countNonZero(src); dst = cv::countNonZero(src);
} }
} }
(void)dst;
SANITY_CHECK(dst);
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
...@@ -2224,7 +2425,7 @@ PERF_TEST_P(Sz_Depth_Cn_Code_Dim, Core_Reduce, Combine( ...@@ -2224,7 +2425,7 @@ PERF_TEST_P(Sz_Depth_Cn_Code_Dim, Core_Reduce, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -2235,6 +2436,8 @@ PERF_TEST_P(Sz_Depth_Cn_Code_Dim, Core_Reduce, Combine( ...@@ -2235,6 +2436,8 @@ PERF_TEST_P(Sz_Depth_Cn_Code_Dim, Core_Reduce, Combine(
{ {
cv::gpu::reduce(d_src, d_dst, dim, reduceOp); cv::gpu::reduce(d_src, d_dst, dim, reduceOp);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
......
...@@ -11,7 +11,7 @@ using namespace testing; ...@@ -11,7 +11,7 @@ using namespace testing;
DEF_PARAM_TEST(Sz_Depth_Cn_KernelSz, cv::Size, MatDepth, MatCn, int); DEF_PARAM_TEST(Sz_Depth_Cn_KernelSz, cv::Size, MatDepth, MatCn, int);
PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter, PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter,
Combine(GPU_DENOISING_IMAGE_SIZES, Values(CV_8U, CV_32F), GPU_CHANNELS_1_3, Values(3, 5, 9))) Combine(GPU_DENOISING_IMAGE_SIZES, Values(CV_8U, CV_32F), GPU_CHANNELS_1_3, Values(3, 5, 9)))
{ {
declare.time(60.0); declare.time(60.0);
...@@ -30,7 +30,7 @@ PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter, ...@@ -30,7 +30,7 @@ PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter,
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -41,6 +41,8 @@ PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter, ...@@ -41,6 +41,8 @@ PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter,
{ {
cv::gpu::bilateralFilter(d_src, d_dst, kernel_size, sigma_color, sigma_spatial, borderMode); cv::gpu::bilateralFilter(d_src, d_dst, kernel_size, sigma_color, sigma_spatial, borderMode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -52,6 +54,8 @@ PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter, ...@@ -52,6 +54,8 @@ PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter,
{ {
cv::bilateralFilter(src, dst, kernel_size, sigma_color, sigma_spatial, borderMode); cv::bilateralFilter(src, dst, kernel_size, sigma_color, sigma_spatial, borderMode);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -61,27 +65,27 @@ PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter, ...@@ -61,27 +65,27 @@ PERF_TEST_P(Sz_Depth_Cn_KernelSz, Denoising_BilateralFilter,
DEF_PARAM_TEST(Sz_Depth_Cn_WinSz_BlockSz, cv::Size, MatDepth, MatCn, int, int); DEF_PARAM_TEST(Sz_Depth_Cn_WinSz_BlockSz, cv::Size, MatDepth, MatCn, int, int);
PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_NonLocalMeans, PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_NonLocalMeans,
Combine(GPU_DENOISING_IMAGE_SIZES, Values<MatDepth>(CV_8U), GPU_CHANNELS_1_3, Values(21), Values(5, 7))) Combine(GPU_DENOISING_IMAGE_SIZES, Values<MatDepth>(CV_8U), GPU_CHANNELS_1_3, Values(21), Values(5, 7)))
{ {
declare.time(60.0); declare.time(60.0);
cv::Size size = GET_PARAM(0); cv::Size size = GET_PARAM(0);
int depth = GET_PARAM(1); int depth = GET_PARAM(1);
int channels = GET_PARAM(2); int channels = GET_PARAM(2);
int search_widow_size = GET_PARAM(3); int search_widow_size = GET_PARAM(3);
int block_size = GET_PARAM(4); int block_size = GET_PARAM(4);
float h = 10; float h = 10;
int borderMode = cv::BORDER_REFLECT101; int borderMode = cv::BORDER_REFLECT101;
int type = CV_MAKE_TYPE(depth, channels); int type = CV_MAKE_TYPE(depth, channels);
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -92,10 +96,12 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_NonLocalMeans, ...@@ -92,10 +96,12 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_NonLocalMeans,
{ {
cv::gpu::nonLocalMeans(d_src, d_dst, h, search_widow_size, block_size, borderMode); cv::gpu::nonLocalMeans(d_src, d_dst, h, search_widow_size, block_size, borderMode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -105,35 +111,37 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_NonLocalMeans, ...@@ -105,35 +111,37 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_NonLocalMeans,
DEF_PARAM_TEST(Sz_Depth_Cn_WinSz_BlockSz, cv::Size, MatDepth, MatCn, int, int); DEF_PARAM_TEST(Sz_Depth_Cn_WinSz_BlockSz, cv::Size, MatDepth, MatCn, int, int);
PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_FastNonLocalMeans, PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_FastNonLocalMeans,
Combine(GPU_DENOISING_IMAGE_SIZES, Values<MatDepth>(CV_8U), GPU_CHANNELS_1_3, Values(21), Values(7))) Combine(GPU_DENOISING_IMAGE_SIZES, Values<MatDepth>(CV_8U), GPU_CHANNELS_1_3, Values(21), Values(7)))
{ {
declare.time(150.0); declare.time(150.0);
cv::Size size = GET_PARAM(0); cv::Size size = GET_PARAM(0);
int depth = GET_PARAM(1); int depth = GET_PARAM(1);
int search_widow_size = GET_PARAM(2); int search_widow_size = GET_PARAM(2);
int block_size = GET_PARAM(3); int block_size = GET_PARAM(3);
float h = 10; float h = 10;
int type = CV_MAKE_TYPE(depth, 1); int type = CV_MAKE_TYPE(depth, 1);
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
cv::gpu::FastNonLocalMeansDenoising fnlmd; cv::gpu::FastNonLocalMeansDenoising fnlmd;
fnlmd.simpleMethod(d_src, d_dst, h, search_widow_size, block_size); fnlmd.simpleMethod(d_src, d_dst, h, search_widow_size, block_size);
TEST_CYCLE() TEST_CYCLE()
{ {
fnlmd.simpleMethod(d_src, d_dst, h, search_widow_size, block_size); fnlmd.simpleMethod(d_src, d_dst, h, search_widow_size, block_size);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -144,6 +152,8 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_FastNonLocalMeans, ...@@ -144,6 +152,8 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_FastNonLocalMeans,
{ {
cv::fastNlMeansDenoising(src, dst, h, block_size, search_widow_size); cv::fastNlMeansDenoising(src, dst, h, block_size, search_widow_size);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -152,35 +162,37 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_FastNonLocalMeans, ...@@ -152,35 +162,37 @@ PERF_TEST_P(Sz_Depth_Cn_WinSz_BlockSz, Denoising_FastNonLocalMeans,
DEF_PARAM_TEST(Sz_Depth_WinSz_BlockSz, cv::Size, MatDepth, int, int); DEF_PARAM_TEST(Sz_Depth_WinSz_BlockSz, cv::Size, MatDepth, int, int);
PERF_TEST_P(Sz_Depth_WinSz_BlockSz, Denoising_FastNonLocalMeansColored, PERF_TEST_P(Sz_Depth_WinSz_BlockSz, Denoising_FastNonLocalMeansColored,
Combine(GPU_DENOISING_IMAGE_SIZES, Values<MatDepth>(CV_8U), Values(21), Values(7))) Combine(GPU_DENOISING_IMAGE_SIZES, Values<MatDepth>(CV_8U), Values(21), Values(7)))
{ {
declare.time(350.0); declare.time(350.0);
cv::Size size = GET_PARAM(0); cv::Size size = GET_PARAM(0);
int depth = GET_PARAM(1); int depth = GET_PARAM(1);
int search_widow_size = GET_PARAM(2); int search_widow_size = GET_PARAM(2);
int block_size = GET_PARAM(3); int block_size = GET_PARAM(3);
float h = 10; float h = 10;
int type = CV_MAKE_TYPE(depth, 3); int type = CV_MAKE_TYPE(depth, 3);
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
cv::gpu::FastNonLocalMeansDenoising fnlmd; cv::gpu::FastNonLocalMeansDenoising fnlmd;
fnlmd.labMethod(d_src, d_dst, h, h, search_widow_size, block_size); fnlmd.labMethod(d_src, d_dst, h, h, search_widow_size, block_size);
TEST_CYCLE() TEST_CYCLE()
{ {
fnlmd.labMethod(d_src, d_dst, h, h, search_widow_size, block_size); fnlmd.labMethod(d_src, d_dst, h, h, search_widow_size, block_size);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -191,5 +203,7 @@ PERF_TEST_P(Sz_Depth_WinSz_BlockSz, Denoising_FastNonLocalMeansColored, ...@@ -191,5 +203,7 @@ PERF_TEST_P(Sz_Depth_WinSz_BlockSz, Denoising_FastNonLocalMeansColored,
{ {
cv::fastNlMeansDenoisingColored(src, dst, h, h, block_size, search_widow_size); cv::fastNlMeansDenoisingColored(src, dst, h, h, block_size, search_widow_size);
} }
CPU_SANITY_CHECK(dst);
} }
} }
\ No newline at end of file
...@@ -17,7 +17,7 @@ PERF_TEST_P(Image, Features2D_SURF, Values<string>("gpu/perf/aloe.png")) ...@@ -17,7 +17,7 @@ PERF_TEST_P(Image, Features2D_SURF, Values<string>("gpu/perf/aloe.png"))
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(img.empty()); ASSERT_FALSE(img.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::SURF_GPU d_surf; cv::gpu::SURF_GPU d_surf;
...@@ -30,6 +30,9 @@ PERF_TEST_P(Image, Features2D_SURF, Values<string>("gpu/perf/aloe.png")) ...@@ -30,6 +30,9 @@ PERF_TEST_P(Image, Features2D_SURF, Values<string>("gpu/perf/aloe.png"))
{ {
d_surf(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); d_surf(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors);
} }
GPU_SANITY_CHECK(d_descriptors, 1e-4);
GPU_SANITY_CHECK_KEYPOINTS(SURF, d_keypoints);
} }
else else
{ {
...@@ -45,6 +48,9 @@ PERF_TEST_P(Image, Features2D_SURF, Values<string>("gpu/perf/aloe.png")) ...@@ -45,6 +48,9 @@ PERF_TEST_P(Image, Features2D_SURF, Values<string>("gpu/perf/aloe.png"))
keypoints.clear(); keypoints.clear();
surf(img, cv::noArray(), keypoints, descriptors); surf(img, cv::noArray(), keypoints, descriptors);
} }
SANITY_CHECK_KEYPOINTS(keypoints);
SANITY_CHECK(descriptors, 1e-4);
} }
} }
...@@ -56,7 +62,7 @@ PERF_TEST_P(Image, Features2D_FAST, Values<string>("gpu/perf/aloe.png")) ...@@ -56,7 +62,7 @@ PERF_TEST_P(Image, Features2D_FAST, Values<string>("gpu/perf/aloe.png"))
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(img.empty()); ASSERT_FALSE(img.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::FAST_GPU d_fast(20); cv::gpu::FAST_GPU d_fast(20);
...@@ -69,6 +75,8 @@ PERF_TEST_P(Image, Features2D_FAST, Values<string>("gpu/perf/aloe.png")) ...@@ -69,6 +75,8 @@ PERF_TEST_P(Image, Features2D_FAST, Values<string>("gpu/perf/aloe.png"))
{ {
d_fast(d_img, cv::gpu::GpuMat(), d_keypoints); d_fast(d_img, cv::gpu::GpuMat(), d_keypoints);
} }
GPU_SANITY_CHECK_RESPONSE(FAST, d_keypoints);
} }
else else
{ {
...@@ -81,6 +89,8 @@ PERF_TEST_P(Image, Features2D_FAST, Values<string>("gpu/perf/aloe.png")) ...@@ -81,6 +89,8 @@ PERF_TEST_P(Image, Features2D_FAST, Values<string>("gpu/perf/aloe.png"))
keypoints.clear(); keypoints.clear();
cv::FAST(img, keypoints, 20); cv::FAST(img, keypoints, 20);
} }
SANITY_CHECK_KEYPOINTS(keypoints);
} }
} }
...@@ -92,7 +102,7 @@ PERF_TEST_P(Image, Features2D_ORB, Values<string>("gpu/perf/aloe.png")) ...@@ -92,7 +102,7 @@ PERF_TEST_P(Image, Features2D_ORB, Values<string>("gpu/perf/aloe.png"))
cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(img.empty()); ASSERT_FALSE(img.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::ORB_GPU d_orb(4000); cv::gpu::ORB_GPU d_orb(4000);
...@@ -105,6 +115,9 @@ PERF_TEST_P(Image, Features2D_ORB, Values<string>("gpu/perf/aloe.png")) ...@@ -105,6 +115,9 @@ PERF_TEST_P(Image, Features2D_ORB, Values<string>("gpu/perf/aloe.png"))
{ {
d_orb(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors); d_orb(d_img, cv::gpu::GpuMat(), d_keypoints, d_descriptors);
} }
GPU_SANITY_CHECK_KEYPOINTS(ORB, d_keypoints);
GPU_SANITY_CHECK(d_descriptors);
} }
else else
{ {
...@@ -120,6 +133,9 @@ PERF_TEST_P(Image, Features2D_ORB, Values<string>("gpu/perf/aloe.png")) ...@@ -120,6 +133,9 @@ PERF_TEST_P(Image, Features2D_ORB, Values<string>("gpu/perf/aloe.png"))
keypoints.clear(); keypoints.clear();
orb(img, cv::noArray(), keypoints, descriptors); orb(img, cv::noArray(), keypoints, descriptors);
} }
SANITY_CHECK_KEYPOINTS(keypoints);
SANITY_CHECK(descriptors);
} }
} }
...@@ -143,7 +159,7 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFMatch, Combine(Values(64, 128, 256), Val ...@@ -143,7 +159,7 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFMatch, Combine(Values(64, 128, 256), Val
cv::Mat train(3000, desc_size, type); cv::Mat train(3000, desc_size, type);
fillRandom(train); fillRandom(train);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::BFMatcher_GPU d_matcher(normType); cv::gpu::BFMatcher_GPU d_matcher(normType);
...@@ -157,6 +173,9 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFMatch, Combine(Values(64, 128, 256), Val ...@@ -157,6 +173,9 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFMatch, Combine(Values(64, 128, 256), Val
{ {
d_matcher.matchSingle(d_query, d_train, d_trainIdx, d_distance); d_matcher.matchSingle(d_query, d_train, d_trainIdx, d_distance);
} }
GPU_SANITY_CHECK(d_trainIdx);
GPU_SANITY_CHECK(d_distance);
} }
else else
{ {
...@@ -170,6 +189,8 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFMatch, Combine(Values(64, 128, 256), Val ...@@ -170,6 +189,8 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFMatch, Combine(Values(64, 128, 256), Val
{ {
matcher.match(query, train, matches); matcher.match(query, train, matches);
} }
SANITY_CHECK(matches);
} }
} }
...@@ -197,7 +218,7 @@ PERF_TEST_P(DescSize_K_Norm, Features2D_BFKnnMatch, Combine( ...@@ -197,7 +218,7 @@ PERF_TEST_P(DescSize_K_Norm, Features2D_BFKnnMatch, Combine(
cv::Mat train(3000, desc_size, type); cv::Mat train(3000, desc_size, type);
fillRandom(train); fillRandom(train);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::BFMatcher_GPU d_matcher(normType); cv::gpu::BFMatcher_GPU d_matcher(normType);
...@@ -211,6 +232,9 @@ PERF_TEST_P(DescSize_K_Norm, Features2D_BFKnnMatch, Combine( ...@@ -211,6 +232,9 @@ PERF_TEST_P(DescSize_K_Norm, Features2D_BFKnnMatch, Combine(
{ {
d_matcher.knnMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_allDist, k); d_matcher.knnMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_allDist, k);
} }
GPU_SANITY_CHECK(d_trainIdx);
GPU_SANITY_CHECK(d_distance);
} }
else else
{ {
...@@ -224,6 +248,8 @@ PERF_TEST_P(DescSize_K_Norm, Features2D_BFKnnMatch, Combine( ...@@ -224,6 +248,8 @@ PERF_TEST_P(DescSize_K_Norm, Features2D_BFKnnMatch, Combine(
{ {
matcher.knnMatch(query, train, matches, k); matcher.knnMatch(query, train, matches, k);
} }
SANITY_CHECK(matches);
} }
} }
...@@ -245,7 +271,7 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFRadiusMatch, Combine(Values(64, 128, 256 ...@@ -245,7 +271,7 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFRadiusMatch, Combine(Values(64, 128, 256
cv::Mat train(3000, desc_size, type); cv::Mat train(3000, desc_size, type);
fillRandom(train, 0.0, 1.0); fillRandom(train, 0.0, 1.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::BFMatcher_GPU d_matcher(normType); cv::gpu::BFMatcher_GPU d_matcher(normType);
...@@ -259,6 +285,9 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFRadiusMatch, Combine(Values(64, 128, 256 ...@@ -259,6 +285,9 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFRadiusMatch, Combine(Values(64, 128, 256
{ {
d_matcher.radiusMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_nMatches, 2.0); d_matcher.radiusMatchSingle(d_query, d_train, d_trainIdx, d_distance, d_nMatches, 2.0);
} }
GPU_SANITY_CHECK(d_trainIdx);
GPU_SANITY_CHECK(d_distance);
} }
else else
{ {
...@@ -272,6 +301,8 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFRadiusMatch, Combine(Values(64, 128, 256 ...@@ -272,6 +301,8 @@ PERF_TEST_P(DescSize_Norm, Features2D_BFRadiusMatch, Combine(Values(64, 128, 256
{ {
matcher.radiusMatch(query, train, matches, 2.0); matcher.radiusMatch(query, train, matches, 2.0);
} }
SANITY_CHECK(matches);
} }
} }
......
...@@ -21,7 +21,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Blur, Combine(GPU_TYPICAL_MAT_SIZES, Value ...@@ -21,7 +21,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Blur, Combine(GPU_TYPICAL_MAT_SIZES, Value
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -32,6 +32,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Blur, Combine(GPU_TYPICAL_MAT_SIZES, Value ...@@ -32,6 +32,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Blur, Combine(GPU_TYPICAL_MAT_SIZES, Value
{ {
cv::gpu::blur(d_src, d_dst, cv::Size(ksize, ksize)); cv::gpu::blur(d_src, d_dst, cv::Size(ksize, ksize));
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -43,6 +45,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Blur, Combine(GPU_TYPICAL_MAT_SIZES, Value ...@@ -43,6 +45,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Blur, Combine(GPU_TYPICAL_MAT_SIZES, Value
{ {
cv::blur(src, dst, cv::Size(ksize, ksize)); cv::blur(src, dst, cv::Size(ksize, ksize));
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -60,7 +64,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Sobel, Combine(GPU_TYPICAL_MAT_SIZES, Valu ...@@ -60,7 +64,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Sobel, Combine(GPU_TYPICAL_MAT_SIZES, Valu
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -72,6 +76,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Sobel, Combine(GPU_TYPICAL_MAT_SIZES, Valu ...@@ -72,6 +76,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Sobel, Combine(GPU_TYPICAL_MAT_SIZES, Valu
{ {
cv::gpu::Sobel(d_src, d_dst, -1, 1, 1, d_buf, ksize); cv::gpu::Sobel(d_src, d_dst, -1, 1, 1, d_buf, ksize);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -83,6 +89,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Sobel, Combine(GPU_TYPICAL_MAT_SIZES, Valu ...@@ -83,6 +89,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Sobel, Combine(GPU_TYPICAL_MAT_SIZES, Valu
{ {
cv::Sobel(src, dst, -1, 1, 1, ksize); cv::Sobel(src, dst, -1, 1, 1, ksize);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -99,7 +107,7 @@ PERF_TEST_P(Sz_Type, Filters_Scharr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U ...@@ -99,7 +107,7 @@ PERF_TEST_P(Sz_Type, Filters_Scharr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -111,6 +119,8 @@ PERF_TEST_P(Sz_Type, Filters_Scharr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U ...@@ -111,6 +119,8 @@ PERF_TEST_P(Sz_Type, Filters_Scharr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U
{ {
cv::gpu::Scharr(d_src, d_dst, -1, 1, 0, d_buf); cv::gpu::Scharr(d_src, d_dst, -1, 1, 0, d_buf);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -122,6 +132,8 @@ PERF_TEST_P(Sz_Type, Filters_Scharr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U ...@@ -122,6 +132,8 @@ PERF_TEST_P(Sz_Type, Filters_Scharr, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U
{ {
cv::Scharr(src, dst, -1, 1, 0); cv::Scharr(src, dst, -1, 1, 0);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -139,7 +151,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_GaussianBlur, Combine(GPU_TYPICAL_MAT_SIZE ...@@ -139,7 +151,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_GaussianBlur, Combine(GPU_TYPICAL_MAT_SIZE
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -151,6 +163,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_GaussianBlur, Combine(GPU_TYPICAL_MAT_SIZE ...@@ -151,6 +163,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_GaussianBlur, Combine(GPU_TYPICAL_MAT_SIZE
{ {
cv::gpu::GaussianBlur(d_src, d_dst, cv::Size(ksize, ksize), d_buf, 0.5); cv::gpu::GaussianBlur(d_src, d_dst, cv::Size(ksize, ksize), d_buf, 0.5);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -162,6 +176,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_GaussianBlur, Combine(GPU_TYPICAL_MAT_SIZE ...@@ -162,6 +176,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_GaussianBlur, Combine(GPU_TYPICAL_MAT_SIZE
{ {
cv::GaussianBlur(src, dst, cv::Size(ksize, ksize), 0.5); cv::GaussianBlur(src, dst, cv::Size(ksize, ksize), 0.5);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -179,7 +195,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Laplacian, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -179,7 +195,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Laplacian, Combine(GPU_TYPICAL_MAT_SIZES,
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -190,6 +206,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Laplacian, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -190,6 +206,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Laplacian, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::gpu::Laplacian(d_src, d_dst, -1, ksize); cv::gpu::Laplacian(d_src, d_dst, -1, ksize);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -201,6 +219,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Laplacian, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -201,6 +219,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Laplacian, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::Laplacian(src, dst, -1, ksize); cv::Laplacian(src, dst, -1, ksize);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -219,7 +239,7 @@ PERF_TEST_P(Sz_Type, Filters_Erode, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC ...@@ -219,7 +239,7 @@ PERF_TEST_P(Sz_Type, Filters_Erode, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -231,6 +251,8 @@ PERF_TEST_P(Sz_Type, Filters_Erode, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC ...@@ -231,6 +251,8 @@ PERF_TEST_P(Sz_Type, Filters_Erode, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC
{ {
cv::gpu::erode(d_src, d_dst, ker, d_buf); cv::gpu::erode(d_src, d_dst, ker, d_buf);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -242,6 +264,8 @@ PERF_TEST_P(Sz_Type, Filters_Erode, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC ...@@ -242,6 +264,8 @@ PERF_TEST_P(Sz_Type, Filters_Erode, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8UC
{ {
cv::erode(src, dst, ker); cv::erode(src, dst, ker);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -260,7 +284,7 @@ PERF_TEST_P(Sz_Type, Filters_Dilate, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U ...@@ -260,7 +284,7 @@ PERF_TEST_P(Sz_Type, Filters_Dilate, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -272,6 +296,8 @@ PERF_TEST_P(Sz_Type, Filters_Dilate, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U ...@@ -272,6 +296,8 @@ PERF_TEST_P(Sz_Type, Filters_Dilate, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U
{ {
cv::gpu::dilate(d_src, d_dst, ker, d_buf); cv::gpu::dilate(d_src, d_dst, ker, d_buf);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -283,6 +309,8 @@ PERF_TEST_P(Sz_Type, Filters_Dilate, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U ...@@ -283,6 +309,8 @@ PERF_TEST_P(Sz_Type, Filters_Dilate, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8U
{ {
cv::dilate(src, dst, ker); cv::dilate(src, dst, ker);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -307,7 +335,7 @@ PERF_TEST_P(Sz_Type_Op, Filters_MorphologyEx, Combine(GPU_TYPICAL_MAT_SIZES, Val ...@@ -307,7 +335,7 @@ PERF_TEST_P(Sz_Type_Op, Filters_MorphologyEx, Combine(GPU_TYPICAL_MAT_SIZES, Val
cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); cv::Mat ker = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -320,6 +348,8 @@ PERF_TEST_P(Sz_Type_Op, Filters_MorphologyEx, Combine(GPU_TYPICAL_MAT_SIZES, Val ...@@ -320,6 +348,8 @@ PERF_TEST_P(Sz_Type_Op, Filters_MorphologyEx, Combine(GPU_TYPICAL_MAT_SIZES, Val
{ {
cv::gpu::morphologyEx(d_src, d_dst, morphOp, ker, d_buf1, d_buf2); cv::gpu::morphologyEx(d_src, d_dst, morphOp, ker, d_buf1, d_buf2);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -331,6 +361,8 @@ PERF_TEST_P(Sz_Type_Op, Filters_MorphologyEx, Combine(GPU_TYPICAL_MAT_SIZES, Val ...@@ -331,6 +361,8 @@ PERF_TEST_P(Sz_Type_Op, Filters_MorphologyEx, Combine(GPU_TYPICAL_MAT_SIZES, Val
{ {
cv::morphologyEx(src, dst, morphOp, ker); cv::morphologyEx(src, dst, morphOp, ker);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -351,7 +383,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Filter2D, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -351,7 +383,7 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Filter2D, Combine(GPU_TYPICAL_MAT_SIZES, V
cv::Mat kernel(ksize, ksize, CV_32FC1); cv::Mat kernel(ksize, ksize, CV_32FC1);
fillRandom(kernel, 0.0, 1.0); fillRandom(kernel, 0.0, 1.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -362,6 +394,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Filter2D, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -362,6 +394,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Filter2D, Combine(GPU_TYPICAL_MAT_SIZES, V
{ {
cv::gpu::filter2D(d_src, d_dst, -1, kernel); cv::gpu::filter2D(d_src, d_dst, -1, kernel);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -373,6 +407,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Filter2D, Combine(GPU_TYPICAL_MAT_SIZES, V ...@@ -373,6 +407,8 @@ PERF_TEST_P(Sz_Type_KernelSz, Filters_Filter2D, Combine(GPU_TYPICAL_MAT_SIZES, V
{ {
cv::filter2D(src, dst, -1, kernel); cv::filter2D(src, dst, -1, kernel);
} }
CPU_SANITY_CHECK(dst);
} }
} }
......
...@@ -78,7 +78,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border_Mode, ImgProc_Remap, Combine( ...@@ -78,7 +78,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border_Mode, ImgProc_Remap, Combine(
generateMap(xmap, ymap, remapMode); generateMap(xmap, ymap, remapMode);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_xmap(xmap); cv::gpu::GpuMat d_xmap(xmap);
...@@ -91,6 +91,8 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border_Mode, ImgProc_Remap, Combine( ...@@ -91,6 +91,8 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border_Mode, ImgProc_Remap, Combine(
{ {
cv::gpu::remap(d_src, d_dst, d_xmap, d_ymap, interpolation, borderMode); cv::gpu::remap(d_src, d_dst, d_xmap, d_ymap, interpolation, borderMode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -130,7 +132,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Scale, ImgProc_Resize, Combine( ...@@ -130,7 +132,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Scale, ImgProc_Resize, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -141,6 +143,8 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Scale, ImgProc_Resize, Combine( ...@@ -141,6 +143,8 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Scale, ImgProc_Resize, Combine(
{ {
cv::gpu::resize(d_src, d_dst, cv::Size(), f, f, interpolation); cv::gpu::resize(d_src, d_dst, cv::Size(), f, f, interpolation);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -179,7 +183,7 @@ PERF_TEST_P(Sz_Depth_Cn_Scale, ImgProc_ResizeArea, Combine( ...@@ -179,7 +183,7 @@ PERF_TEST_P(Sz_Depth_Cn_Scale, ImgProc_ResizeArea, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -190,6 +194,8 @@ PERF_TEST_P(Sz_Depth_Cn_Scale, ImgProc_ResizeArea, Combine( ...@@ -190,6 +194,8 @@ PERF_TEST_P(Sz_Depth_Cn_Scale, ImgProc_ResizeArea, Combine(
{ {
cv::gpu::resize(d_src, d_dst, cv::Size(), f, f, interpolation); cv::gpu::resize(d_src, d_dst, cv::Size(), f, f, interpolation);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -234,7 +240,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border, ImgProc_WarpAffine, Combine( ...@@ -234,7 +240,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border, ImgProc_WarpAffine, Combine(
{std::sin(aplha), std::cos(aplha), 0}}; {std::sin(aplha), std::cos(aplha), 0}};
cv::Mat M(2, 3, CV_64F, (void*) mat); cv::Mat M(2, 3, CV_64F, (void*) mat);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -245,6 +251,8 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border, ImgProc_WarpAffine, Combine( ...@@ -245,6 +251,8 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border, ImgProc_WarpAffine, Combine(
{ {
cv::gpu::warpAffine(d_src, d_dst, M, size, interpolation, borderMode); cv::gpu::warpAffine(d_src, d_dst, M, size, interpolation, borderMode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -288,7 +296,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border, ImgProc_WarpPerspective, Combine( ...@@ -288,7 +296,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border, ImgProc_WarpPerspective, Combine(
{0.0, 0.0, 1.0}}; {0.0, 0.0, 1.0}};
cv::Mat M(3, 3, CV_64F, (void*) mat); cv::Mat M(3, 3, CV_64F, (void*) mat);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -299,6 +307,8 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border, ImgProc_WarpPerspective, Combine( ...@@ -299,6 +307,8 @@ PERF_TEST_P(Sz_Depth_Cn_Inter_Border, ImgProc_WarpPerspective, Combine(
{ {
cv::gpu::warpPerspective(d_src, d_dst, M, size, interpolation, borderMode); cv::gpu::warpPerspective(d_src, d_dst, M, size, interpolation, borderMode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -334,7 +344,7 @@ PERF_TEST_P(Sz_Depth_Cn_Border, ImgProc_CopyMakeBorder, Combine( ...@@ -334,7 +344,7 @@ PERF_TEST_P(Sz_Depth_Cn_Border, ImgProc_CopyMakeBorder, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -345,6 +355,8 @@ PERF_TEST_P(Sz_Depth_Cn_Border, ImgProc_CopyMakeBorder, Combine( ...@@ -345,6 +355,8 @@ PERF_TEST_P(Sz_Depth_Cn_Border, ImgProc_CopyMakeBorder, Combine(
{ {
cv::gpu::copyMakeBorder(d_src, d_dst, 5, 5, 5, 5, borderMode); cv::gpu::copyMakeBorder(d_src, d_dst, 5, 5, 5, 5, borderMode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -379,7 +391,7 @@ PERF_TEST_P(Sz_Depth_Op, ImgProc_Threshold, Combine( ...@@ -379,7 +391,7 @@ PERF_TEST_P(Sz_Depth_Op, ImgProc_Threshold, Combine(
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -390,6 +402,8 @@ PERF_TEST_P(Sz_Depth_Op, ImgProc_Threshold, Combine( ...@@ -390,6 +402,8 @@ PERF_TEST_P(Sz_Depth_Op, ImgProc_Threshold, Combine(
{ {
cv::gpu::threshold(d_src, d_dst, 100.0, 255.0, threshOp); cv::gpu::threshold(d_src, d_dst, 100.0, 255.0, threshOp);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -414,7 +428,7 @@ PERF_TEST_P(Sz, ImgProc_Integral, GPU_TYPICAL_MAT_SIZES) ...@@ -414,7 +428,7 @@ PERF_TEST_P(Sz, ImgProc_Integral, GPU_TYPICAL_MAT_SIZES)
cv::Mat src(size, CV_8UC1); cv::Mat src(size, CV_8UC1);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -426,6 +440,8 @@ PERF_TEST_P(Sz, ImgProc_Integral, GPU_TYPICAL_MAT_SIZES) ...@@ -426,6 +440,8 @@ PERF_TEST_P(Sz, ImgProc_Integral, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::integralBuffered(d_src, d_dst, d_buf); cv::gpu::integralBuffered(d_src, d_dst, d_buf);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -450,7 +466,7 @@ PERF_TEST_P(Sz, ImgProc_IntegralSqr, GPU_TYPICAL_MAT_SIZES) ...@@ -450,7 +466,7 @@ PERF_TEST_P(Sz, ImgProc_IntegralSqr, GPU_TYPICAL_MAT_SIZES)
cv::Mat src(size, CV_8UC1); cv::Mat src(size, CV_8UC1);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -461,10 +477,12 @@ PERF_TEST_P(Sz, ImgProc_IntegralSqr, GPU_TYPICAL_MAT_SIZES) ...@@ -461,10 +477,12 @@ PERF_TEST_P(Sz, ImgProc_IntegralSqr, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::sqrIntegral(d_src, d_dst); cv::gpu::sqrIntegral(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -479,7 +497,7 @@ PERF_TEST_P(Sz_Depth, ImgProc_HistEvenC1, Combine(GPU_TYPICAL_MAT_SIZES, Values( ...@@ -479,7 +497,7 @@ PERF_TEST_P(Sz_Depth, ImgProc_HistEvenC1, Combine(GPU_TYPICAL_MAT_SIZES, Values(
cv::Mat src(size, depth); cv::Mat src(size, depth);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_hist; cv::gpu::GpuMat d_hist;
...@@ -491,6 +509,8 @@ PERF_TEST_P(Sz_Depth, ImgProc_HistEvenC1, Combine(GPU_TYPICAL_MAT_SIZES, Values( ...@@ -491,6 +509,8 @@ PERF_TEST_P(Sz_Depth, ImgProc_HistEvenC1, Combine(GPU_TYPICAL_MAT_SIZES, Values(
{ {
cv::gpu::histEven(d_src, d_hist, d_buf, 30, 0, 180); cv::gpu::histEven(d_src, d_hist, d_buf, 30, 0, 180);
} }
GPU_SANITY_CHECK(d_hist);
} }
else else
{ {
...@@ -526,11 +546,11 @@ PERF_TEST_P(Sz_Depth, ImgProc_HistEvenC4, Combine(GPU_TYPICAL_MAT_SIZES, Values( ...@@ -526,11 +546,11 @@ PERF_TEST_P(Sz_Depth, ImgProc_HistEvenC4, Combine(GPU_TYPICAL_MAT_SIZES, Values(
int lowerLevel[] = {0, 0, 0, 0}; int lowerLevel[] = {0, 0, 0, 0};
int upperLevel[] = {180, 180, 180, 180}; int upperLevel[] = {180, 180, 180, 180};
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_hist[4]; cv::gpu::GpuMat d_hist[4];
cv::gpu::GpuMat d_buf; cv::gpu::GpuMat d_buf, d_hist0;
cv::gpu::histEven(d_src, d_hist, d_buf, histSize, lowerLevel, upperLevel); cv::gpu::histEven(d_src, d_hist, d_buf, histSize, lowerLevel, upperLevel);
...@@ -538,10 +558,12 @@ PERF_TEST_P(Sz_Depth, ImgProc_HistEvenC4, Combine(GPU_TYPICAL_MAT_SIZES, Values( ...@@ -538,10 +558,12 @@ PERF_TEST_P(Sz_Depth, ImgProc_HistEvenC4, Combine(GPU_TYPICAL_MAT_SIZES, Values(
{ {
cv::gpu::histEven(d_src, d_hist, d_buf, histSize, lowerLevel, upperLevel); cv::gpu::histEven(d_src, d_hist, d_buf, histSize, lowerLevel, upperLevel);
} }
GPU_SANITY_CHECK(d_hist0);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -555,7 +577,7 @@ PERF_TEST_P(Sz, ImgProc_CalcHist, GPU_TYPICAL_MAT_SIZES) ...@@ -555,7 +577,7 @@ PERF_TEST_P(Sz, ImgProc_CalcHist, GPU_TYPICAL_MAT_SIZES)
cv::Mat src(size, CV_8UC1); cv::Mat src(size, CV_8UC1);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_hist; cv::gpu::GpuMat d_hist;
...@@ -567,10 +589,12 @@ PERF_TEST_P(Sz, ImgProc_CalcHist, GPU_TYPICAL_MAT_SIZES) ...@@ -567,10 +589,12 @@ PERF_TEST_P(Sz, ImgProc_CalcHist, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::calcHist(d_src, d_hist, d_buf); cv::gpu::calcHist(d_src, d_hist, d_buf);
} }
GPU_SANITY_CHECK(d_hist);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -584,7 +608,7 @@ PERF_TEST_P(Sz, ImgProc_EqualizeHist, GPU_TYPICAL_MAT_SIZES) ...@@ -584,7 +608,7 @@ PERF_TEST_P(Sz, ImgProc_EqualizeHist, GPU_TYPICAL_MAT_SIZES)
cv::Mat src(size, CV_8UC1); cv::Mat src(size, CV_8UC1);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -597,6 +621,8 @@ PERF_TEST_P(Sz, ImgProc_EqualizeHist, GPU_TYPICAL_MAT_SIZES) ...@@ -597,6 +621,8 @@ PERF_TEST_P(Sz, ImgProc_EqualizeHist, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::equalizeHist(d_src, d_dst, d_hist, d_buf); cv::gpu::equalizeHist(d_src, d_dst, d_hist, d_buf);
} }
GPU_SANITY_CHECK(d_hist);
} }
else else
{ {
...@@ -621,7 +647,7 @@ PERF_TEST_P(Sz, ImgProc_ColumnSum, GPU_TYPICAL_MAT_SIZES) ...@@ -621,7 +647,7 @@ PERF_TEST_P(Sz, ImgProc_ColumnSum, GPU_TYPICAL_MAT_SIZES)
cv::Mat src(size, CV_32FC1); cv::Mat src(size, CV_32FC1);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -632,10 +658,12 @@ PERF_TEST_P(Sz, ImgProc_ColumnSum, GPU_TYPICAL_MAT_SIZES) ...@@ -632,10 +658,12 @@ PERF_TEST_P(Sz, ImgProc_ColumnSum, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::columnSum(d_src, d_dst); cv::gpu::columnSum(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -656,7 +684,7 @@ PERF_TEST_P(Image_AppertureSz_L2gradient, ImgProc_Canny, Combine( ...@@ -656,7 +684,7 @@ PERF_TEST_P(Image_AppertureSz_L2gradient, ImgProc_Canny, Combine(
cv::Mat image = readImage(fileName, cv::IMREAD_GRAYSCALE); cv::Mat image = readImage(fileName, cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(image.empty()); ASSERT_FALSE(image.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_image(image); cv::gpu::GpuMat d_image(image);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -668,6 +696,8 @@ PERF_TEST_P(Image_AppertureSz_L2gradient, ImgProc_Canny, Combine( ...@@ -668,6 +696,8 @@ PERF_TEST_P(Image_AppertureSz_L2gradient, ImgProc_Canny, Combine(
{ {
cv::gpu::Canny(d_image, d_buf, d_dst, 50.0, 100.0, apperture_size, useL2gradient); cv::gpu::Canny(d_image, d_buf, d_dst, 50.0, 100.0, apperture_size, useL2gradient);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -697,7 +727,7 @@ PERF_TEST_P(Image, ImgProc_MeanShiftFiltering, Values<string>("gpu/meanshift/con ...@@ -697,7 +727,7 @@ PERF_TEST_P(Image, ImgProc_MeanShiftFiltering, Values<string>("gpu/meanshift/con
cv::Mat rgba; cv::Mat rgba;
cv::cvtColor(img, rgba, cv::COLOR_BGR2BGRA); cv::cvtColor(img, rgba, cv::COLOR_BGR2BGRA);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(rgba); cv::gpu::GpuMat d_src(rgba);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -708,6 +738,8 @@ PERF_TEST_P(Image, ImgProc_MeanShiftFiltering, Values<string>("gpu/meanshift/con ...@@ -708,6 +738,8 @@ PERF_TEST_P(Image, ImgProc_MeanShiftFiltering, Values<string>("gpu/meanshift/con
{ {
cv::gpu::meanShiftFiltering(d_src, d_dst, 50, 50); cv::gpu::meanShiftFiltering(d_src, d_dst, 50, 50);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -735,7 +767,7 @@ PERF_TEST_P(Image, ImgProc_MeanShiftProc, Values<string>("gpu/meanshift/cones.pn ...@@ -735,7 +767,7 @@ PERF_TEST_P(Image, ImgProc_MeanShiftProc, Values<string>("gpu/meanshift/cones.pn
cv::Mat rgba; cv::Mat rgba;
cv::cvtColor(img, rgba, cv::COLOR_BGR2BGRA); cv::cvtColor(img, rgba, cv::COLOR_BGR2BGRA);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(rgba); cv::gpu::GpuMat d_src(rgba);
cv::gpu::GpuMat d_dstr; cv::gpu::GpuMat d_dstr;
...@@ -747,10 +779,12 @@ PERF_TEST_P(Image, ImgProc_MeanShiftProc, Values<string>("gpu/meanshift/cones.pn ...@@ -747,10 +779,12 @@ PERF_TEST_P(Image, ImgProc_MeanShiftProc, Values<string>("gpu/meanshift/cones.pn
{ {
cv::gpu::meanShiftProc(d_src, d_dstr, d_dstsp, 50, 50); cv::gpu::meanShiftProc(d_src, d_dstr, d_dstsp, 50, 50);
} }
GPU_SANITY_CHECK(d_dstr);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -769,7 +803,7 @@ PERF_TEST_P(Image, ImgProc_MeanShiftSegmentation, Values<string>("gpu/meanshift/ ...@@ -769,7 +803,7 @@ PERF_TEST_P(Image, ImgProc_MeanShiftSegmentation, Values<string>("gpu/meanshift/
cv::Mat dst; cv::Mat dst;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(rgba); cv::gpu::GpuMat d_src(rgba);
...@@ -779,10 +813,12 @@ PERF_TEST_P(Image, ImgProc_MeanShiftSegmentation, Values<string>("gpu/meanshift/ ...@@ -779,10 +813,12 @@ PERF_TEST_P(Image, ImgProc_MeanShiftSegmentation, Values<string>("gpu/meanshift/
{ {
cv::gpu::meanShiftSegmentation(d_src, dst, 10, 10, 20); cv::gpu::meanShiftSegmentation(d_src, dst, 10, 10, 20);
} }
GPU_SANITY_CHECK(dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -803,7 +839,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_BlendLinear, Combine(GPU_TYPICAL_MAT_SIZES, Val ...@@ -803,7 +839,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_BlendLinear, Combine(GPU_TYPICAL_MAT_SIZES, Val
cv::Mat img2(size, type); cv::Mat img2(size, type);
fillRandom(img2); fillRandom(img2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_img1(img1); cv::gpu::GpuMat d_img1(img1);
cv::gpu::GpuMat d_img2(img2); cv::gpu::GpuMat d_img2(img2);
...@@ -817,10 +853,12 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_BlendLinear, Combine(GPU_TYPICAL_MAT_SIZES, Val ...@@ -817,10 +853,12 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_BlendLinear, Combine(GPU_TYPICAL_MAT_SIZES, Val
{ {
cv::gpu::blendLinear(d_img1, d_img2, d_weights1, d_weights2, d_dst); cv::gpu::blendLinear(d_img1, d_img2, d_weights1, d_weights2, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -843,7 +881,7 @@ PERF_TEST_P(Sz_KernelSz_Ccorr, ImgProc_Convolve, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -843,7 +881,7 @@ PERF_TEST_P(Sz_KernelSz_Ccorr, ImgProc_Convolve, Combine(GPU_TYPICAL_MAT_SIZES,
cv::Mat templ(templ_size, templ_size, CV_32FC1); cv::Mat templ(templ_size, templ_size, CV_32FC1);
templ.setTo(1.0); templ.setTo(1.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_image = cv::gpu::createContinuous(size, CV_32FC1); cv::gpu::GpuMat d_image = cv::gpu::createContinuous(size, CV_32FC1);
d_image.upload(image); d_image.upload(image);
...@@ -860,6 +898,8 @@ PERF_TEST_P(Sz_KernelSz_Ccorr, ImgProc_Convolve, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -860,6 +898,8 @@ PERF_TEST_P(Sz_KernelSz_Ccorr, ImgProc_Convolve, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::gpu::convolve(d_image, d_templ, d_dst, ccorr, d_buf); cv::gpu::convolve(d_image, d_templ, d_dst, ccorr, d_buf);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -873,6 +913,8 @@ PERF_TEST_P(Sz_KernelSz_Ccorr, ImgProc_Convolve, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -873,6 +913,8 @@ PERF_TEST_P(Sz_KernelSz_Ccorr, ImgProc_Convolve, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::filter2D(image, dst, image.depth(), templ); cv::filter2D(image, dst, image.depth(), templ);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -901,7 +943,7 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate8U, Combine( ...@@ -901,7 +943,7 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate8U, Combine(
cv::Mat templ(templ_size, CV_MAKE_TYPE(CV_8U, cn)); cv::Mat templ(templ_size, CV_MAKE_TYPE(CV_8U, cn));
fillRandom(templ); fillRandom(templ);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_image(image); cv::gpu::GpuMat d_image(image);
cv::gpu::GpuMat d_templ(templ); cv::gpu::GpuMat d_templ(templ);
...@@ -913,6 +955,8 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate8U, Combine( ...@@ -913,6 +955,8 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate8U, Combine(
{ {
cv::gpu::matchTemplate(d_image, d_templ, d_dst, method); cv::gpu::matchTemplate(d_image, d_templ, d_dst, method);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -924,6 +968,8 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate8U, Combine( ...@@ -924,6 +968,8 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate8U, Combine(
{ {
cv::matchTemplate(image, templ, dst, method); cv::matchTemplate(image, templ, dst, method);
} }
CPU_SANITY_CHECK(dst);
} }
}; };
...@@ -947,7 +993,7 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate32F, Combine( ...@@ -947,7 +993,7 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate32F, Combine(
cv::Mat templ(templ_size, CV_MAKE_TYPE(CV_32F, cn)); cv::Mat templ(templ_size, CV_MAKE_TYPE(CV_32F, cn));
fillRandom(templ); fillRandom(templ);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_image(image); cv::gpu::GpuMat d_image(image);
cv::gpu::GpuMat d_templ(templ); cv::gpu::GpuMat d_templ(templ);
...@@ -959,6 +1005,8 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate32F, Combine( ...@@ -959,6 +1005,8 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate32F, Combine(
{ {
cv::gpu::matchTemplate(d_image, d_templ, d_dst, method); cv::gpu::matchTemplate(d_image, d_templ, d_dst, method);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -970,6 +1018,8 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate32F, Combine( ...@@ -970,6 +1018,8 @@ PERF_TEST_P(Sz_TemplateSz_Cn_Method, ImgProc_MatchTemplate32F, Combine(
{ {
cv::matchTemplate(image, templ, dst, method); cv::matchTemplate(image, templ, dst, method);
} }
CPU_SANITY_CHECK(dst);
} }
}; };
...@@ -993,7 +1043,7 @@ PERF_TEST_P(Sz_Flags, ImgProc_MulSpectrums, Combine( ...@@ -993,7 +1043,7 @@ PERF_TEST_P(Sz_Flags, ImgProc_MulSpectrums, Combine(
cv::Mat b(size, CV_32FC2); cv::Mat b(size, CV_32FC2);
fillRandom(b, 0, 100); fillRandom(b, 0, 100);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_a(a); cv::gpu::GpuMat d_a(a);
cv::gpu::GpuMat d_b(b); cv::gpu::GpuMat d_b(b);
...@@ -1005,6 +1055,8 @@ PERF_TEST_P(Sz_Flags, ImgProc_MulSpectrums, Combine( ...@@ -1005,6 +1055,8 @@ PERF_TEST_P(Sz_Flags, ImgProc_MulSpectrums, Combine(
{ {
cv::gpu::mulSpectrums(d_a, d_b, d_dst, flag); cv::gpu::mulSpectrums(d_a, d_b, d_dst, flag);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1016,6 +1068,8 @@ PERF_TEST_P(Sz_Flags, ImgProc_MulSpectrums, Combine( ...@@ -1016,6 +1068,8 @@ PERF_TEST_P(Sz_Flags, ImgProc_MulSpectrums, Combine(
{ {
cv::mulSpectrums(a, b, dst, flag); cv::mulSpectrums(a, b, dst, flag);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1034,7 +1088,7 @@ PERF_TEST_P(Sz, ImgProc_MulAndScaleSpectrums, GPU_TYPICAL_MAT_SIZES) ...@@ -1034,7 +1088,7 @@ PERF_TEST_P(Sz, ImgProc_MulAndScaleSpectrums, GPU_TYPICAL_MAT_SIZES)
cv::Mat src2(size, CV_32FC2); cv::Mat src2(size, CV_32FC2);
fillRandom(src2, 0, 100); fillRandom(src2, 0, 100);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src1(src1); cv::gpu::GpuMat d_src1(src1);
cv::gpu::GpuMat d_src2(src2); cv::gpu::GpuMat d_src2(src2);
...@@ -1046,10 +1100,12 @@ PERF_TEST_P(Sz, ImgProc_MulAndScaleSpectrums, GPU_TYPICAL_MAT_SIZES) ...@@ -1046,10 +1100,12 @@ PERF_TEST_P(Sz, ImgProc_MulAndScaleSpectrums, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::mulAndScaleSpectrums(d_src1, d_src2, d_dst, cv::DFT_ROWS, scale, false); cv::gpu::mulAndScaleSpectrums(d_src1, d_src2, d_dst, cv::DFT_ROWS, scale, false);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1068,7 +1124,7 @@ PERF_TEST_P(Sz_Flags, ImgProc_Dft, Combine( ...@@ -1068,7 +1124,7 @@ PERF_TEST_P(Sz_Flags, ImgProc_Dft, Combine(
cv::Mat src(size, CV_32FC2); cv::Mat src(size, CV_32FC2);
fillRandom(src, 0, 100); fillRandom(src, 0, 100);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1079,6 +1135,8 @@ PERF_TEST_P(Sz_Flags, ImgProc_Dft, Combine( ...@@ -1079,6 +1135,8 @@ PERF_TEST_P(Sz_Flags, ImgProc_Dft, Combine(
{ {
cv::gpu::dft(d_src, d_dst, size, flag); cv::gpu::dft(d_src, d_dst, size, flag);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1090,6 +1148,8 @@ PERF_TEST_P(Sz_Flags, ImgProc_Dft, Combine( ...@@ -1090,6 +1148,8 @@ PERF_TEST_P(Sz_Flags, ImgProc_Dft, Combine(
{ {
cv::dft(src, dst, flag); cv::dft(src, dst, flag);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1117,7 +1177,7 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerHarris, Combine( ...@@ -1117,7 +1177,7 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerHarris, Combine(
double k = 0.5; double k = 0.5;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_img(img); cv::gpu::GpuMat d_img(img);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1131,6 +1191,8 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerHarris, Combine( ...@@ -1131,6 +1191,8 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerHarris, Combine(
{ {
cv::gpu::cornerHarris(d_img, d_dst, d_Dx, d_Dy, d_buf, blockSize, apertureSize, k, borderMode); cv::gpu::cornerHarris(d_img, d_dst, d_Dx, d_Dy, d_buf, blockSize, apertureSize, k, borderMode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1142,6 +1204,8 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerHarris, Combine( ...@@ -1142,6 +1204,8 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerHarris, Combine(
{ {
cv::cornerHarris(img, dst, blockSize, apertureSize, k, borderMode); cv::cornerHarris(img, dst, blockSize, apertureSize, k, borderMode);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1166,7 +1230,7 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerMinEigenVal, Com ...@@ -1166,7 +1230,7 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerMinEigenVal, Com
img.convertTo(img, type, type == CV_32F ? 1.0 / 255.0 : 1.0); img.convertTo(img, type, type == CV_32F ? 1.0 / 255.0 : 1.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_img(img); cv::gpu::GpuMat d_img(img);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1180,6 +1244,8 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerMinEigenVal, Com ...@@ -1180,6 +1244,8 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerMinEigenVal, Com
{ {
cv::gpu::cornerMinEigenVal(d_img, d_dst, d_Dx, d_Dy, d_buf, blockSize, apertureSize, borderMode); cv::gpu::cornerMinEigenVal(d_img, d_dst, d_Dx, d_Dy, d_buf, blockSize, apertureSize, borderMode);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1191,6 +1257,8 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerMinEigenVal, Com ...@@ -1191,6 +1257,8 @@ PERF_TEST_P(Image_Type_Border_BlockSz_ApertureSz, ImgProc_CornerMinEigenVal, Com
{ {
cv::cornerMinEigenVal(img, dst, blockSize, apertureSize, borderMode); cv::cornerMinEigenVal(img, dst, blockSize, apertureSize, borderMode);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1205,7 +1273,7 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpPlaneMaps, GPU_TYPICAL_MAT_SIZES) ...@@ -1205,7 +1273,7 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpPlaneMaps, GPU_TYPICAL_MAT_SIZES)
cv::Mat R = cv::Mat::ones(3, 3, CV_32FC1); cv::Mat R = cv::Mat::ones(3, 3, CV_32FC1);
cv::Mat T = cv::Mat::zeros(1, 3, CV_32F); cv::Mat T = cv::Mat::zeros(1, 3, CV_32F);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_map_x; cv::gpu::GpuMat d_map_x;
cv::gpu::GpuMat d_map_y; cv::gpu::GpuMat d_map_y;
...@@ -1216,10 +1284,13 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpPlaneMaps, GPU_TYPICAL_MAT_SIZES) ...@@ -1216,10 +1284,13 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpPlaneMaps, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::buildWarpPlaneMaps(size, cv::Rect(0, 0, size.width, size.height), K, R, T, 1.0, d_map_x, d_map_y); cv::gpu::buildWarpPlaneMaps(size, cv::Rect(0, 0, size.width, size.height), K, R, T, 1.0, d_map_x, d_map_y);
} }
GPU_SANITY_CHECK(d_map_x);
GPU_SANITY_CHECK(d_map_y);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1233,7 +1304,7 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpCylindricalMaps, GPU_TYPICAL_MAT_SIZES) ...@@ -1233,7 +1304,7 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpCylindricalMaps, GPU_TYPICAL_MAT_SIZES)
cv::Mat K = cv::Mat::eye(3, 3, CV_32FC1); cv::Mat K = cv::Mat::eye(3, 3, CV_32FC1);
cv::Mat R = cv::Mat::ones(3, 3, CV_32FC1); cv::Mat R = cv::Mat::ones(3, 3, CV_32FC1);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_map_x; cv::gpu::GpuMat d_map_x;
cv::gpu::GpuMat d_map_y; cv::gpu::GpuMat d_map_y;
...@@ -1244,10 +1315,13 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpCylindricalMaps, GPU_TYPICAL_MAT_SIZES) ...@@ -1244,10 +1315,13 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpCylindricalMaps, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::buildWarpCylindricalMaps(size, cv::Rect(0, 0, size.width, size.height), K, R, 1.0, d_map_x, d_map_y); cv::gpu::buildWarpCylindricalMaps(size, cv::Rect(0, 0, size.width, size.height), K, R, 1.0, d_map_x, d_map_y);
} }
GPU_SANITY_CHECK(d_map_x);
GPU_SANITY_CHECK(d_map_y);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1261,7 +1335,7 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpSphericalMaps, GPU_TYPICAL_MAT_SIZES) ...@@ -1261,7 +1335,7 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpSphericalMaps, GPU_TYPICAL_MAT_SIZES)
cv::Mat K = cv::Mat::eye(3, 3, CV_32FC1); cv::Mat K = cv::Mat::eye(3, 3, CV_32FC1);
cv::Mat R = cv::Mat::ones(3, 3, CV_32FC1); cv::Mat R = cv::Mat::ones(3, 3, CV_32FC1);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_map_x; cv::gpu::GpuMat d_map_x;
cv::gpu::GpuMat d_map_y; cv::gpu::GpuMat d_map_y;
...@@ -1272,10 +1346,14 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpSphericalMaps, GPU_TYPICAL_MAT_SIZES) ...@@ -1272,10 +1346,14 @@ PERF_TEST_P(Sz, ImgProc_BuildWarpSphericalMaps, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::buildWarpSphericalMaps(size, cv::Rect(0, 0, size.width, size.height), K, R, 1.0, d_map_x, d_map_y); cv::gpu::buildWarpSphericalMaps(size, cv::Rect(0, 0, size.width, size.height), K, R, 1.0, d_map_x, d_map_y);
} }
GPU_SANITY_CHECK(d_map_x);
GPU_SANITY_CHECK(d_map_y);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1300,7 +1378,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter, ImgProc_Rotate, Combine( ...@@ -1300,7 +1378,7 @@ PERF_TEST_P(Sz_Depth_Cn_Inter, ImgProc_Rotate, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1311,10 +1389,12 @@ PERF_TEST_P(Sz_Depth_Cn_Inter, ImgProc_Rotate, Combine( ...@@ -1311,10 +1389,12 @@ PERF_TEST_P(Sz_Depth_Cn_Inter, ImgProc_Rotate, Combine(
{ {
cv::gpu::rotate(d_src, d_dst, size, 30.0, 0, 0, interpolation); cv::gpu::rotate(d_src, d_dst, size, 30.0, 0, 0, interpolation);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1335,7 +1415,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrDown, Combine( ...@@ -1335,7 +1415,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrDown, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1346,6 +1426,8 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrDown, Combine( ...@@ -1346,6 +1426,8 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrDown, Combine(
{ {
cv::gpu::pyrDown(d_src, d_dst); cv::gpu::pyrDown(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1357,6 +1439,8 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrDown, Combine( ...@@ -1357,6 +1439,8 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrDown, Combine(
{ {
cv::pyrDown(src, dst); cv::pyrDown(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1377,7 +1461,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrUp, Combine( ...@@ -1377,7 +1461,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrUp, Combine(
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1388,6 +1472,8 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrUp, Combine( ...@@ -1388,6 +1472,8 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrUp, Combine(
{ {
cv::gpu::pyrUp(d_src, d_dst); cv::gpu::pyrUp(d_src, d_dst);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1399,6 +1485,8 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrUp, Combine( ...@@ -1399,6 +1485,8 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_PyrUp, Combine(
{ {
cv::pyrUp(src, dst); cv::pyrUp(src, dst);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1444,7 +1532,7 @@ PERF_TEST_P(Sz_Depth_Code, ImgProc_CvtColor, Combine( ...@@ -1444,7 +1532,7 @@ PERF_TEST_P(Sz_Depth_Code, ImgProc_CvtColor, Combine(
cv::Mat src(size, CV_MAKETYPE(depth, info.scn)); cv::Mat src(size, CV_MAKETYPE(depth, info.scn));
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1455,6 +1543,8 @@ PERF_TEST_P(Sz_Depth_Code, ImgProc_CvtColor, Combine( ...@@ -1455,6 +1543,8 @@ PERF_TEST_P(Sz_Depth_Code, ImgProc_CvtColor, Combine(
{ {
cv::gpu::cvtColor(d_src, d_dst, info.code, info.dcn); cv::gpu::cvtColor(d_src, d_dst, info.code, info.dcn);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -1466,6 +1556,8 @@ PERF_TEST_P(Sz_Depth_Code, ImgProc_CvtColor, Combine( ...@@ -1466,6 +1556,8 @@ PERF_TEST_P(Sz_Depth_Code, ImgProc_CvtColor, Combine(
{ {
cv::cvtColor(src, dst, info.code, info.dcn); cv::cvtColor(src, dst, info.code, info.dcn);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -1481,7 +1573,7 @@ PERF_TEST_P(Sz, ImgProc_SwapChannels, GPU_TYPICAL_MAT_SIZES) ...@@ -1481,7 +1573,7 @@ PERF_TEST_P(Sz, ImgProc_SwapChannels, GPU_TYPICAL_MAT_SIZES)
const int dstOrder[] = {2, 1, 0, 3}; const int dstOrder[] = {2, 1, 0, 3};
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
...@@ -1491,10 +1583,12 @@ PERF_TEST_P(Sz, ImgProc_SwapChannels, GPU_TYPICAL_MAT_SIZES) ...@@ -1491,10 +1583,12 @@ PERF_TEST_P(Sz, ImgProc_SwapChannels, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::swapChannels(d_src, dstOrder); cv::gpu::swapChannels(d_src, dstOrder);
} }
GPU_SANITY_CHECK(d_src);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1518,7 +1612,7 @@ PERF_TEST_P(Sz_Type_Op, ImgProc_AlphaComp, Combine(GPU_TYPICAL_MAT_SIZES, Values ...@@ -1518,7 +1612,7 @@ PERF_TEST_P(Sz_Type_Op, ImgProc_AlphaComp, Combine(GPU_TYPICAL_MAT_SIZES, Values
cv::Mat img2(size, type); cv::Mat img2(size, type);
fillRandom(img2); fillRandom(img2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_img1(img1); cv::gpu::GpuMat d_img1(img1);
cv::gpu::GpuMat d_img2(img2); cv::gpu::GpuMat d_img2(img2);
...@@ -1530,10 +1624,12 @@ PERF_TEST_P(Sz_Type_Op, ImgProc_AlphaComp, Combine(GPU_TYPICAL_MAT_SIZES, Values ...@@ -1530,10 +1624,12 @@ PERF_TEST_P(Sz_Type_Op, ImgProc_AlphaComp, Combine(GPU_TYPICAL_MAT_SIZES, Values
{ {
cv::gpu::alphaComp(d_img1, d_img2, d_dst, alpha_op); cv::gpu::alphaComp(d_img1, d_img2, d_dst, alpha_op);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1551,7 +1647,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_ImagePyramidBuild, Combine(GPU_TYPICAL_MAT_SIZE ...@@ -1551,7 +1647,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_ImagePyramidBuild, Combine(GPU_TYPICAL_MAT_SIZE
cv::Mat src(size, type); cv::Mat src(size, type);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
...@@ -1563,10 +1659,12 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_ImagePyramidBuild, Combine(GPU_TYPICAL_MAT_SIZE ...@@ -1563,10 +1659,12 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_ImagePyramidBuild, Combine(GPU_TYPICAL_MAT_SIZE
{ {
d_pyr.build(d_src, 5); d_pyr.build(d_src, 5);
} }
GPU_SANITY_CHECK(d_src);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -1586,7 +1684,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_ImagePyramidGetLayer, Combine(GPU_TYPICAL_MAT_S ...@@ -1586,7 +1684,7 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_ImagePyramidGetLayer, Combine(GPU_TYPICAL_MAT_S
cv::Size dstSize(size.width / 2 + 10, size.height / 2 + 10); cv::Size dstSize(size.width / 2 + 10, size.height / 2 + 10);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -1599,17 +1697,19 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_ImagePyramidGetLayer, Combine(GPU_TYPICAL_MAT_S ...@@ -1599,17 +1697,19 @@ PERF_TEST_P(Sz_Depth_Cn, ImgProc_ImagePyramidGetLayer, Combine(GPU_TYPICAL_MAT_S
{ {
d_pyr.getLayer(d_dst, dstSize); d_pyr.getLayer(d_dst, dstSize);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// HoughLines // HoughLines
PERF_TEST_P(Sz, ImgProc_HoughLines, GPU_TYPICAL_MAT_SIZES) PERF_TEST_P(Sz, DISABLED_ImgProc_HoughLines, GPU_TYPICAL_MAT_SIZES)
{ {
declare.time(30.0); declare.time(30.0);
...@@ -1631,7 +1731,7 @@ PERF_TEST_P(Sz, ImgProc_HoughLines, GPU_TYPICAL_MAT_SIZES) ...@@ -1631,7 +1731,7 @@ PERF_TEST_P(Sz, ImgProc_HoughLines, GPU_TYPICAL_MAT_SIZES)
cv::line(src, p1, p2, cv::Scalar::all(255), 2); cv::line(src, p1, p2, cv::Scalar::all(255), 2);
} }
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_lines; cv::gpu::GpuMat d_lines;
...@@ -1643,6 +1743,8 @@ PERF_TEST_P(Sz, ImgProc_HoughLines, GPU_TYPICAL_MAT_SIZES) ...@@ -1643,6 +1743,8 @@ PERF_TEST_P(Sz, ImgProc_HoughLines, GPU_TYPICAL_MAT_SIZES)
{ {
cv::gpu::HoughLines(d_src, d_lines, d_buf, rho, theta, threshold); cv::gpu::HoughLines(d_src, d_lines, d_buf, rho, theta, threshold);
} }
GPU_SANITY_CHECK(d_lines);
} }
else else
{ {
...@@ -1653,6 +1755,8 @@ PERF_TEST_P(Sz, ImgProc_HoughLines, GPU_TYPICAL_MAT_SIZES) ...@@ -1653,6 +1755,8 @@ PERF_TEST_P(Sz, ImgProc_HoughLines, GPU_TYPICAL_MAT_SIZES)
{ {
cv::HoughLines(src, lines, rho, theta, threshold); cv::HoughLines(src, lines, rho, theta, threshold);
} }
CPU_SANITY_CHECK(lines);
} }
} }
...@@ -1687,7 +1791,7 @@ PERF_TEST_P(Sz_Dp_MinDist, ImgProc_HoughCircles, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1687,7 +1791,7 @@ PERF_TEST_P(Sz_Dp_MinDist, ImgProc_HoughCircles, Combine(GPU_TYPICAL_MAT_SIZES,
cv::circle(src, center, radius, cv::Scalar::all(255), -1); cv::circle(src, center, radius, cv::Scalar::all(255), -1);
} }
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_circles; cv::gpu::GpuMat d_circles;
...@@ -1699,6 +1803,8 @@ PERF_TEST_P(Sz_Dp_MinDist, ImgProc_HoughCircles, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1699,6 +1803,8 @@ PERF_TEST_P(Sz_Dp_MinDist, ImgProc_HoughCircles, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::gpu::HoughCircles(d_src, d_circles, d_buf, CV_HOUGH_GRADIENT, dp, minDist, cannyThreshold, votesThreshold, minRadius, maxRadius); cv::gpu::HoughCircles(d_src, d_circles, d_buf, CV_HOUGH_GRADIENT, dp, minDist, cannyThreshold, votesThreshold, minRadius, maxRadius);
} }
GPU_SANITY_CHECK(d_circles);
} }
else else
{ {
...@@ -1710,6 +1816,8 @@ PERF_TEST_P(Sz_Dp_MinDist, ImgProc_HoughCircles, Combine(GPU_TYPICAL_MAT_SIZES, ...@@ -1710,6 +1816,8 @@ PERF_TEST_P(Sz_Dp_MinDist, ImgProc_HoughCircles, Combine(GPU_TYPICAL_MAT_SIZES,
{ {
cv::HoughCircles(src, circles, CV_HOUGH_GRADIENT, dp, minDist, cannyThreshold, votesThreshold, minRadius, maxRadius); cv::HoughCircles(src, circles, CV_HOUGH_GRADIENT, dp, minDist, cannyThreshold, votesThreshold, minRadius, maxRadius);
} }
CPU_SANITY_CHECK(circles);
} }
} }
...@@ -1762,7 +1870,7 @@ PERF_TEST_P(Method_Sz, ImgProc_GeneralizedHough, Combine( ...@@ -1762,7 +1870,7 @@ PERF_TEST_P(Method_Sz, ImgProc_GeneralizedHough, Combine(
cv::Sobel(image, dx, CV_32F, 1, 0); cv::Sobel(image, dx, CV_32F, 1, 0);
cv::Sobel(image, dy, CV_32F, 0, 1); cv::Sobel(image, dy, CV_32F, 0, 1);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_edges(edges); cv::gpu::GpuMat d_edges(edges);
cv::gpu::GpuMat d_dx(dx); cv::gpu::GpuMat d_dx(dx);
...@@ -1784,6 +1892,8 @@ PERF_TEST_P(Method_Sz, ImgProc_GeneralizedHough, Combine( ...@@ -1784,6 +1892,8 @@ PERF_TEST_P(Method_Sz, ImgProc_GeneralizedHough, Combine(
{ {
d_hough->detect(d_edges, d_dx, d_dy, d_position); d_hough->detect(d_edges, d_dx, d_dy, d_position);
} }
GPU_SANITY_CHECK(d_position);
} }
else else
{ {
...@@ -1804,6 +1914,9 @@ PERF_TEST_P(Method_Sz, ImgProc_GeneralizedHough, Combine( ...@@ -1804,6 +1914,9 @@ PERF_TEST_P(Method_Sz, ImgProc_GeneralizedHough, Combine(
{ {
hough->detect(edges, dx, dy, positions); hough->detect(edges, dx, dy, positions);
} }
CPU_SANITY_CHECK(dx);
CPU_SANITY_CHECK(dy);
} }
} }
......
...@@ -106,7 +106,7 @@ PERF_TEST_P(Image, Labeling_ConnectedComponents, Values<string>("gpu/labeling/al ...@@ -106,7 +106,7 @@ PERF_TEST_P(Image, Labeling_ConnectedComponents, Values<string>("gpu/labeling/al
cv::Mat image = readImage(GetParam(), cv::IMREAD_GRAYSCALE); cv::Mat image = readImage(GetParam(), cv::IMREAD_GRAYSCALE);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat mask; cv::gpu::GpuMat mask;
mask.create(image.rows, image.cols, CV_8UC1); mask.create(image.rows, image.cols, CV_8UC1);
...@@ -122,6 +122,8 @@ PERF_TEST_P(Image, Labeling_ConnectedComponents, Values<string>("gpu/labeling/al ...@@ -122,6 +122,8 @@ PERF_TEST_P(Image, Labeling_ConnectedComponents, Values<string>("gpu/labeling/al
{ {
cv::gpu::labelComponents(mask, components); cv::gpu::labelComponents(mask, components);
} }
GPU_SANITY_CHECK(components);
} }
else else
{ {
...@@ -135,6 +137,8 @@ PERF_TEST_P(Image, Labeling_ConnectedComponents, Values<string>("gpu/labeling/al ...@@ -135,6 +137,8 @@ PERF_TEST_P(Image, Labeling_ConnectedComponents, Values<string>("gpu/labeling/al
{ {
host(host._labels); host(host._labels);
} }
CPU_SANITY_CHECK(host._labels);
} }
} }
......
#include "perf_precomp.hpp"
namespace{
static void printOsInfo()
{
#if defined _WIN32
# if defined _WIN64
printf("[----------]\n[ GPU INFO ] \tRun on OS Windows x64.\n[----------]\n"), fflush(stdout);
# else
printf("[----------]\n[ GPU INFO ] \tRun on OS Windows x32.\n[----------]\n"), fflush(stdout);
# endif
#elif defined linux
# if defined _LP64
printf("[----------]\n[ GPU INFO ] \tRun on OS Linux x64.\n[----------]\n"), fflush(stdout);
# else
printf("[----------]\n[ GPU INFO ] \tRun on OS Linux x32.\n[----------]\n"), fflush(stdout);
# endif
#elif defined __APPLE__
# if defined _LP64
printf("[----------]\n[ GPU INFO ] \tRun on OS Apple x64.\n[----------]\n"), fflush(stdout);
# else
printf("[----------]\n[ GPU INFO ] \tRun on OS Apple x32.\n[----------]\n"), fflush(stdout);
# endif
#endif
}
static void printCudaInfo()
{
printOsInfo();
#ifndef HAVE_CUDA
printf("[----------]\n[ GPU INFO ] \tOpenCV was built without CUDA support.\n[----------]\n"), fflush(stdout);
#else
int driver;
cudaDriverGetVersion(&driver);
printf("[----------]\n"), fflush(stdout);
printf("[ GPU INFO ] \tCUDA Driver version: %d.\n", driver), fflush(stdout);
printf("[ GPU INFO ] \tCUDA Runtime version: %d.\n", CUDART_VERSION), fflush(stdout);
printf("[----------]\n"), fflush(stdout);
printf("[----------]\n"), fflush(stdout);
printf("[ GPU INFO ] \tGPU module was compiled for the following GPU archs.\n"), fflush(stdout);
printf("[ BIN ] \t%s.\n", CUDA_ARCH_BIN), fflush(stdout);
printf("[ PTX ] \t%s.\n", CUDA_ARCH_PTX), fflush(stdout);
printf("[----------]\n"), fflush(stdout);
printf("[----------]\n"), fflush(stdout);
int deviceCount = cv::gpu::getCudaEnabledDeviceCount();
printf("[ GPU INFO ] \tCUDA device count:: %d.\n", deviceCount), fflush(stdout);
printf("[----------]\n"), fflush(stdout);
for (int i = 0; i < deviceCount; ++i)
{
cv::gpu::DeviceInfo info(i);
printf("[----------]\n"), fflush(stdout);
printf("[ DEVICE ] \t# %d %s.\n", i, info.name().c_str()), fflush(stdout);
printf("[ ] \tCompute capability: %d.%d\n", (int)info.majorVersion(), (int)info.minorVersion()), fflush(stdout);
printf("[ ] \tMulti Processor Count: %d\n", info.multiProcessorCount()), fflush(stdout);
printf("[ ] \tTotal memory: %d Mb\n", static_cast<int>(static_cast<int>(info.totalMemory() / 1024.0) / 1024.0)), fflush(stdout);
printf("[ ] \tFree memory: %d Mb\n", static_cast<int>(static_cast<int>(info.freeMemory() / 1024.0) / 1024.0)), fflush(stdout);
if (!info.isCompatible())
printf("[ GPU INFO ] \tThis device is NOT compatible with current GPU module build\n");
printf("[----------]\n"), fflush(stdout);
}
#endif
}
}
CV_PERF_TEST_MAIN(gpu, printCudaInfo())
\ No newline at end of file
...@@ -18,7 +18,7 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -18,7 +18,7 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
cv::Scalar val(1, 2, 3, 4); cv::Scalar val(1, 2, 3, 4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(size, type); cv::gpu::GpuMat d_src(size, type);
...@@ -28,6 +28,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -28,6 +28,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
d_src.setTo(val); d_src.setTo(val);
} }
GPU_SANITY_CHECK(d_src);
} }
else else
{ {
...@@ -39,6 +41,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8 ...@@ -39,6 +41,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV_8
{ {
src.setTo(val); src.setTo(val);
} }
CPU_SANITY_CHECK(src);
} }
} }
...@@ -61,7 +65,7 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Value ...@@ -61,7 +65,7 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Value
cv::Scalar val(1, 2, 3, 4); cv::Scalar val(1, 2, 3, 4);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_mask(mask); cv::gpu::GpuMat d_mask(mask);
...@@ -72,6 +76,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Value ...@@ -72,6 +76,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Value
{ {
d_src.setTo(val, d_mask); d_src.setTo(val, d_mask);
} }
GPU_SANITY_CHECK(d_src);
} }
else else
{ {
...@@ -81,6 +87,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Value ...@@ -81,6 +87,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_SetToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Value
{ {
src.setTo(val, mask); src.setTo(val, mask);
} }
CPU_SANITY_CHECK(src);
} }
} }
...@@ -101,7 +109,7 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Valu ...@@ -101,7 +109,7 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Valu
cv::Mat mask(size, CV_8UC1); cv::Mat mask(size, CV_8UC1);
fillRandom(mask, 0, 2); fillRandom(mask, 0, 2);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_mask(mask); cv::gpu::GpuMat d_mask(mask);
...@@ -113,6 +121,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Valu ...@@ -113,6 +121,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Valu
{ {
d_src.copyTo(d_dst, d_mask); d_src.copyTo(d_dst, d_mask);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -124,6 +134,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Valu ...@@ -124,6 +134,8 @@ PERF_TEST_P(Sz_Depth_Cn, MatOp_CopyToMasked, Combine(GPU_TYPICAL_MAT_SIZES, Valu
{ {
src.copyTo(dst, mask); src.copyTo(dst, mask);
} }
CPU_SANITY_CHECK(dst);
} }
} }
...@@ -141,7 +153,7 @@ PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV ...@@ -141,7 +153,7 @@ PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV
cv::Mat src(size, depth1); cv::Mat src(size, depth1);
fillRandom(src); fillRandom(src);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_src(src); cv::gpu::GpuMat d_src(src);
cv::gpu::GpuMat d_dst; cv::gpu::GpuMat d_dst;
...@@ -152,6 +164,8 @@ PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV ...@@ -152,6 +164,8 @@ PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV
{ {
d_src.convertTo(d_dst, depth2, 0.5, 1.0); d_src.convertTo(d_dst, depth2, 0.5, 1.0);
} }
GPU_SANITY_CHECK(d_dst);
} }
else else
{ {
...@@ -163,6 +177,8 @@ PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV ...@@ -163,6 +177,8 @@ PERF_TEST_P(Sz_2Depth, MatOp_ConvertTo, Combine(GPU_TYPICAL_MAT_SIZES, Values(CV
{ {
src.convertTo(dst, depth2, 0.5, 1.0); src.convertTo(dst, depth2, 0.5, 1.0);
} }
CPU_SANITY_CHECK(dst);
} }
} }
......
...@@ -17,7 +17,7 @@ PERF_TEST_P(Image, ObjDetect_HOG, Values<string>("gpu/hog/road.png")) ...@@ -17,7 +17,7 @@ PERF_TEST_P(Image, ObjDetect_HOG, Values<string>("gpu/hog/road.png"))
std::vector<cv::Rect> found_locations; std::vector<cv::Rect> found_locations;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_img(img); cv::gpu::GpuMat d_img(img);
...@@ -43,6 +43,8 @@ PERF_TEST_P(Image, ObjDetect_HOG, Values<string>("gpu/hog/road.png")) ...@@ -43,6 +43,8 @@ PERF_TEST_P(Image, ObjDetect_HOG, Values<string>("gpu/hog/road.png"))
hog.detectMultiScale(img, found_locations); hog.detectMultiScale(img, found_locations);
} }
} }
SANITY_CHECK(found_locations);
} }
//===========test for CalTech data =============// //===========test for CalTech data =============//
...@@ -57,7 +59,7 @@ PERF_TEST_P(HOG, CalTech, Values<string>("gpu/caltech/image_00000009_0.png", "gp ...@@ -57,7 +59,7 @@ PERF_TEST_P(HOG, CalTech, Values<string>("gpu/caltech/image_00000009_0.png", "gp
std::vector<cv::Rect> found_locations; std::vector<cv::Rect> found_locations;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_img(img); cv::gpu::GpuMat d_img(img);
...@@ -83,6 +85,8 @@ PERF_TEST_P(HOG, CalTech, Values<string>("gpu/caltech/image_00000009_0.png", "gp ...@@ -83,6 +85,8 @@ PERF_TEST_P(HOG, CalTech, Values<string>("gpu/caltech/image_00000009_0.png", "gp
hog.detectMultiScale(img, found_locations); hog.detectMultiScale(img, found_locations);
} }
} }
SANITY_CHECK(found_locations);
} }
...@@ -98,7 +102,7 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_HaarClassifier, ...@@ -98,7 +102,7 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_HaarClassifier,
cv::Mat img = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); cv::Mat img = readImage(GetParam().first, cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(img.empty()); ASSERT_FALSE(img.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::CascadeClassifier_GPU d_cascade; cv::gpu::CascadeClassifier_GPU d_cascade;
ASSERT_TRUE(d_cascade.load(perf::TestBase::getDataPath(GetParam().second))); ASSERT_TRUE(d_cascade.load(perf::TestBase::getDataPath(GetParam().second)));
...@@ -112,6 +116,8 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_HaarClassifier, ...@@ -112,6 +116,8 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_HaarClassifier,
{ {
d_cascade.detectMultiScale(d_img, d_objects_buffer); d_cascade.detectMultiScale(d_img, d_objects_buffer);
} }
GPU_SANITY_CHECK(d_objects_buffer);
} }
else else
{ {
...@@ -126,6 +132,8 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_HaarClassifier, ...@@ -126,6 +132,8 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_HaarClassifier,
{ {
cascade.detectMultiScale(img, rects); cascade.detectMultiScale(img, rects);
} }
CPU_SANITY_CHECK(rects);
} }
} }
...@@ -138,7 +146,7 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_LBPClassifier, ...@@ -138,7 +146,7 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_LBPClassifier,
cv::Mat img = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); cv::Mat img = readImage(GetParam().first, cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(img.empty()); ASSERT_FALSE(img.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::CascadeClassifier_GPU d_cascade; cv::gpu::CascadeClassifier_GPU d_cascade;
ASSERT_TRUE(d_cascade.load(perf::TestBase::getDataPath(GetParam().second))); ASSERT_TRUE(d_cascade.load(perf::TestBase::getDataPath(GetParam().second)));
...@@ -152,6 +160,8 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_LBPClassifier, ...@@ -152,6 +160,8 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_LBPClassifier,
{ {
d_cascade.detectMultiScale(d_img, d_gpu_rects); d_cascade.detectMultiScale(d_img, d_gpu_rects);
} }
GPU_SANITY_CHECK(d_gpu_rects);
} }
else else
{ {
...@@ -166,6 +176,8 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_LBPClassifier, ...@@ -166,6 +176,8 @@ PERF_TEST_P(ImageAndCascade, ObjDetect_LBPClassifier,
{ {
cascade.detectMultiScale(img, rects); cascade.detectMultiScale(img, rects);
} }
CPU_SANITY_CHECK(rects);
} }
} }
......
...@@ -20,7 +20,8 @@ typedef pair<string, string> pair_string; ...@@ -20,7 +20,8 @@ typedef pair<string, string> pair_string;
DEF_PARAM_TEST_1(ImagePair, pair_string); DEF_PARAM_TEST_1(ImagePair, pair_string);
PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) PERF_TEST_P(ImagePair, Video_BroxOpticalFlow,
Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png")))
{ {
declare.time(10); declare.time(10);
...@@ -33,7 +34,7 @@ PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, Values<pair_string>(make_pair("gpu ...@@ -33,7 +34,7 @@ PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, Values<pair_string>(make_pair("gpu
frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0); frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0);
frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0); frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame0(frame0);
cv::gpu::GpuMat d_frame1(frame1); cv::gpu::GpuMat d_frame1(frame1);
...@@ -49,17 +50,21 @@ PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, Values<pair_string>(make_pair("gpu ...@@ -49,17 +50,21 @@ PERF_TEST_P(ImagePair, Video_BroxOpticalFlow, Values<pair_string>(make_pair("gpu
{ {
d_flow(d_frame0, d_frame1, d_u, d_v); d_flow(d_frame0, d_frame1, d_u, d_v);
} }
GPU_SANITY_CHECK(d_u);
GPU_SANITY_CHECK(d_v);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// InterpolateFrames // InterpolateFrames
PERF_TEST_P(ImagePair, Video_InterpolateFrames, Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) PERF_TEST_P(ImagePair, Video_InterpolateFrames,
Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png")))
{ {
cv::Mat frame0 = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); cv::Mat frame0 = readImage(GetParam().first, cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(frame0.empty()); ASSERT_FALSE(frame0.empty());
...@@ -70,7 +75,7 @@ PERF_TEST_P(ImagePair, Video_InterpolateFrames, Values<pair_string>(make_pair("g ...@@ -70,7 +75,7 @@ PERF_TEST_P(ImagePair, Video_InterpolateFrames, Values<pair_string>(make_pair("g
frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0); frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0);
frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0); frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame0(frame0);
cv::gpu::GpuMat d_frame1(frame1); cv::gpu::GpuMat d_frame1(frame1);
...@@ -92,17 +97,23 @@ PERF_TEST_P(ImagePair, Video_InterpolateFrames, Values<pair_string>(make_pair("g ...@@ -92,17 +97,23 @@ PERF_TEST_P(ImagePair, Video_InterpolateFrames, Values<pair_string>(make_pair("g
{ {
cv::gpu::interpolateFrames(d_frame0, d_frame1, d_fu, d_fv, d_bu, d_bv, 0.5f, d_newFrame, d_buf); cv::gpu::interpolateFrames(d_frame0, d_frame1, d_fu, d_fv, d_bu, d_bv, 0.5f, d_newFrame, d_buf);
} }
GPU_SANITY_CHECK(d_fu);
GPU_SANITY_CHECK(d_fv);
GPU_SANITY_CHECK(d_bu);
GPU_SANITY_CHECK(d_bv);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// CreateOpticalFlowNeedleMap // CreateOpticalFlowNeedleMap
PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap,
Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png")))
{ {
cv::Mat frame0 = readImage(GetParam().first, cv::IMREAD_GRAYSCALE); cv::Mat frame0 = readImage(GetParam().first, cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(frame0.empty()); ASSERT_FALSE(frame0.empty());
...@@ -113,7 +124,7 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values<pair_string>(mak ...@@ -113,7 +124,7 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values<pair_string>(mak
frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0); frame0.convertTo(frame0, CV_32FC1, 1.0 / 255.0);
frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0); frame1.convertTo(frame1, CV_32FC1, 1.0 / 255.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame0(frame0);
cv::gpu::GpuMat d_frame1(frame1); cv::gpu::GpuMat d_frame1(frame1);
...@@ -133,10 +144,13 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values<pair_string>(mak ...@@ -133,10 +144,13 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values<pair_string>(mak
{ {
cv::gpu::createOpticalFlowNeedleMap(d_u, d_v, d_vertex, d_colors); cv::gpu::createOpticalFlowNeedleMap(d_u, d_v, d_vertex, d_colors);
} }
GPU_SANITY_CHECK(d_vertex);
GPU_SANITY_CHECK(d_colors)
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -145,7 +159,8 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values<pair_string>(mak ...@@ -145,7 +159,8 @@ PERF_TEST_P(ImagePair, Video_CreateOpticalFlowNeedleMap, Values<pair_string>(mak
DEF_PARAM_TEST(Image_MinDistance, string, double); DEF_PARAM_TEST(Image_MinDistance, string, double);
PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values<string>("gpu/perf/aloe.png"), Values(0.0, 3.0))) PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack,
Combine(Values<string>("gpu/perf/aloe.png"), Values(0.0, 3.0)))
{ {
string fileName = GET_PARAM(0); string fileName = GET_PARAM(0);
double minDistance = GET_PARAM(1); double minDistance = GET_PARAM(1);
...@@ -153,7 +168,7 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values<string> ...@@ -153,7 +168,7 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values<string>
cv::Mat image = readImage(fileName, cv::IMREAD_GRAYSCALE); cv::Mat image = readImage(fileName, cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(image.empty()); ASSERT_FALSE(image.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GoodFeaturesToTrackDetector_GPU d_detector(8000, 0.01, minDistance); cv::gpu::GoodFeaturesToTrackDetector_GPU d_detector(8000, 0.01, minDistance);
...@@ -166,6 +181,8 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values<string> ...@@ -166,6 +181,8 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values<string>
{ {
d_detector(d_image, d_pts); d_detector(d_image, d_pts);
} }
GPU_SANITY_CHECK(d_pts);
} }
else else
{ {
...@@ -177,6 +194,8 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values<string> ...@@ -177,6 +194,8 @@ PERF_TEST_P(Image_MinDistance, Video_GoodFeaturesToTrack, Combine(Values<string>
{ {
cv::goodFeaturesToTrack(image, pts, 8000, 0.01, minDistance); cv::goodFeaturesToTrack(image, pts, 8000, 0.01, minDistance);
} }
CPU_SANITY_CHECK(pts);
} }
} }
...@@ -217,7 +236,7 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse ...@@ -217,7 +236,7 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse
cv::Mat pts; cv::Mat pts;
cv::goodFeaturesToTrack(gray_frame, pts, points, 0.01, 0.0); cv::goodFeaturesToTrack(gray_frame, pts, points, 0.01, 0.0);
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_pts(pts.reshape(2, 1)); cv::gpu::GpuMat d_pts(pts.reshape(2, 1));
...@@ -237,6 +256,8 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse ...@@ -237,6 +256,8 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse
{ {
d_pyrLK.sparse(d_frame0, d_frame1, d_pts, d_nextPts, d_status); d_pyrLK.sparse(d_frame0, d_frame1, d_pts, d_nextPts, d_status);
} }
GPU_SANITY_CHECK(d_status);
} }
else else
{ {
...@@ -253,6 +274,8 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse ...@@ -253,6 +274,8 @@ PERF_TEST_P(ImagePair_Gray_NPts_WinSz_Levels_Iters, Video_PyrLKOpticalFlowSparse
cv::Size(winSize, winSize), levels - 1, cv::Size(winSize, winSize), levels - 1,
cv::TermCriteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, iters, 0.01)); cv::TermCriteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, iters, 0.01));
} }
CPU_SANITY_CHECK(status);
} }
} }
...@@ -280,7 +303,7 @@ PERF_TEST_P(ImagePair_WinSz_Levels_Iters, Video_PyrLKOpticalFlowDense, Combine( ...@@ -280,7 +303,7 @@ PERF_TEST_P(ImagePair_WinSz_Levels_Iters, Video_PyrLKOpticalFlowDense, Combine(
cv::Mat frame1 = readImage(imagePair.second, cv::IMREAD_GRAYSCALE); cv::Mat frame1 = readImage(imagePair.second, cv::IMREAD_GRAYSCALE);
ASSERT_FALSE(frame1.empty()); ASSERT_FALSE(frame1.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame0(frame0);
cv::gpu::GpuMat d_frame1(frame1); cv::gpu::GpuMat d_frame1(frame1);
...@@ -298,17 +321,21 @@ PERF_TEST_P(ImagePair_WinSz_Levels_Iters, Video_PyrLKOpticalFlowDense, Combine( ...@@ -298,17 +321,21 @@ PERF_TEST_P(ImagePair_WinSz_Levels_Iters, Video_PyrLKOpticalFlowDense, Combine(
{ {
d_pyrLK.dense(d_frame0, d_frame1, d_u, d_v); d_pyrLK.dense(d_frame0, d_frame1, d_u, d_v);
} }
GPU_SANITY_CHECK(d_u);
GPU_SANITY_CHECK(d_v);
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// FarnebackOpticalFlow // FarnebackOpticalFlow
PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow,
Values<pair_string>(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png")))
{ {
declare.time(10); declare.time(10);
...@@ -326,7 +353,7 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair ...@@ -326,7 +353,7 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair
double polySigma = 1.1; double polySigma = 1.1;
int flags = 0; int flags = 0;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame0(frame0); cv::gpu::GpuMat d_frame0(frame0);
cv::gpu::GpuMat d_frame1(frame1); cv::gpu::GpuMat d_frame1(frame1);
...@@ -348,6 +375,9 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair ...@@ -348,6 +375,9 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair
{ {
d_farneback(d_frame0, d_frame1, d_u, d_v); d_farneback(d_frame0, d_frame1, d_u, d_v);
} }
GPU_SANITY_CHECK(d_u);
GPU_SANITY_CHECK(d_v);
} }
else else
{ {
...@@ -359,6 +389,8 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair ...@@ -359,6 +389,8 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair
{ {
cv::calcOpticalFlowFarneback(frame0, frame1, flow, pyrScale, numLevels, winSize, numIters, polyN, polySigma, flags); cv::calcOpticalFlowFarneback(frame0, frame1, flow, pyrScale, numLevels, winSize, numIters, polyN, polySigma, flags);
} }
CPU_SANITY_CHECK(flow);
} }
} }
...@@ -367,7 +399,7 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair ...@@ -367,7 +399,7 @@ PERF_TEST_P(ImagePair, Video_FarnebackOpticalFlow, Values<pair_string>(make_pair
DEF_PARAM_TEST_1(Video, string); DEF_PARAM_TEST_1(Video, string);
PERF_TEST_P(Video, Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi")) PERF_TEST_P(Video, DISABLED_Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"))
{ {
declare.time(60); declare.time(60);
...@@ -380,7 +412,7 @@ PERF_TEST_P(Video, Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/vide ...@@ -380,7 +412,7 @@ PERF_TEST_P(Video, Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/vide
cap >> frame; cap >> frame;
ASSERT_FALSE(frame.empty()); ASSERT_FALSE(frame.empty());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame(frame); cv::gpu::GpuMat d_frame(frame);
...@@ -423,7 +455,8 @@ PERF_TEST_P(Video, Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/vide ...@@ -423,7 +455,8 @@ PERF_TEST_P(Video, Video_FGDStatModel, Values("gpu/video/768x576.avi", "gpu/vide
DEF_PARAM_TEST(Video_Cn_LearningRate, string, MatCn, double); DEF_PARAM_TEST(Video_Cn_LearningRate, string, MatCn, double);
PERF_TEST_P(Video_Cn_LearningRate, Video_MOG, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4, Values(0.0, 0.01))) PERF_TEST_P(Video_Cn_LearningRate, DISABLED_Video_MOG,
Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4, Values(0.0, 0.01)))
{ {
string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); string inputFile = perf::TestBase::getDataPath(GET_PARAM(0));
int cn = GET_PARAM(1); int cn = GET_PARAM(1);
...@@ -447,7 +480,7 @@ PERF_TEST_P(Video_Cn_LearningRate, Video_MOG, Combine(Values("gpu/video/768x576. ...@@ -447,7 +480,7 @@ PERF_TEST_P(Video_Cn_LearningRate, Video_MOG, Combine(Values("gpu/video/768x576.
cv::swap(temp, frame); cv::swap(temp, frame);
} }
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame(frame); cv::gpu::GpuMat d_frame(frame);
cv::gpu::MOG_GPU d_mog; cv::gpu::MOG_GPU d_mog;
...@@ -511,7 +544,8 @@ PERF_TEST_P(Video_Cn_LearningRate, Video_MOG, Combine(Values("gpu/video/768x576. ...@@ -511,7 +544,8 @@ PERF_TEST_P(Video_Cn_LearningRate, Video_MOG, Combine(Values("gpu/video/768x576.
DEF_PARAM_TEST(Video_Cn, string, int); DEF_PARAM_TEST(Video_Cn, string, int);
PERF_TEST_P(Video_Cn, Video_MOG2, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) PERF_TEST_P(Video_Cn, DISABLED_Video_MOG2,
Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4))
{ {
string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); string inputFile = perf::TestBase::getDataPath(GET_PARAM(0));
int cn = GET_PARAM(1); int cn = GET_PARAM(1);
...@@ -534,7 +568,7 @@ PERF_TEST_P(Video_Cn, Video_MOG2, Combine(Values("gpu/video/768x576.avi", "gpu/v ...@@ -534,7 +568,7 @@ PERF_TEST_P(Video_Cn, Video_MOG2, Combine(Values("gpu/video/768x576.avi", "gpu/v
cv::swap(temp, frame); cv::swap(temp, frame);
} }
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame(frame); cv::gpu::GpuMat d_frame(frame);
cv::gpu::MOG2_GPU d_mog2; cv::gpu::MOG2_GPU d_mog2;
...@@ -596,7 +630,8 @@ PERF_TEST_P(Video_Cn, Video_MOG2, Combine(Values("gpu/video/768x576.avi", "gpu/v ...@@ -596,7 +630,8 @@ PERF_TEST_P(Video_Cn, Video_MOG2, Combine(Values("gpu/video/768x576.avi", "gpu/v
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// MOG2GetBackgroundImage // MOG2GetBackgroundImage
PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage,
Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4))
{ {
string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); string inputFile = perf::TestBase::getDataPath(GET_PARAM(0));
int cn = GET_PARAM(1); int cn = GET_PARAM(1);
...@@ -606,7 +641,7 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76 ...@@ -606,7 +641,7 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76
cv::Mat frame; cv::Mat frame;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame; cv::gpu::GpuMat d_frame;
cv::gpu::MOG2_GPU d_mog2; cv::gpu::MOG2_GPU d_mog2;
...@@ -639,6 +674,8 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76 ...@@ -639,6 +674,8 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76
{ {
d_mog2.getBackgroundImage(d_background); d_mog2.getBackgroundImage(d_background);
} }
GPU_SANITY_CHECK(d_background);
} }
else else
{ {
...@@ -670,13 +707,16 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76 ...@@ -670,13 +707,16 @@ PERF_TEST_P(Video_Cn, Video_MOG2GetBackgroundImage, Combine(Values("gpu/video/76
{ {
mog2.getBackgroundImage(background); mog2.getBackgroundImage(background);
} }
CPU_SANITY_CHECK(background);
} }
} }
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// VIBE // VIBE
PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4)) PERF_TEST_P(Video_Cn, DISABLED_Video_VIBE,
Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4))
{ {
string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); string inputFile = perf::TestBase::getDataPath(GET_PARAM(0));
int cn = GET_PARAM(1); int cn = GET_PARAM(1);
...@@ -698,7 +738,7 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v ...@@ -698,7 +738,7 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v
cv::swap(temp, frame); cv::swap(temp, frame);
} }
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame(frame); cv::gpu::GpuMat d_frame(frame);
cv::gpu::VIBE_GPU d_vibe; cv::gpu::VIBE_GPU d_vibe;
...@@ -730,7 +770,7 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v ...@@ -730,7 +770,7 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v
} }
else else
{ {
FAIL(); FAIL() << "No such CPU implementation analogy";
} }
} }
...@@ -739,7 +779,8 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v ...@@ -739,7 +779,8 @@ PERF_TEST_P(Video_Cn, Video_VIBE, Combine(Values("gpu/video/768x576.avi", "gpu/v
DEF_PARAM_TEST(Video_Cn_MaxFeatures, string, MatCn, int); DEF_PARAM_TEST(Video_Cn_MaxFeatures, string, MatCn, int);
PERF_TEST_P(Video_Cn_MaxFeatures, Video_GMG, Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4, Values(20, 40, 60))) PERF_TEST_P(Video_Cn_MaxFeatures, DISABLED_Video_GMG,
Combine(Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"), GPU_CHANNELS_1_3_4, Values(20, 40, 60)))
{ {
std::string inputFile = perf::TestBase::getDataPath(GET_PARAM(0)); std::string inputFile = perf::TestBase::getDataPath(GET_PARAM(0));
int cn = GET_PARAM(1); int cn = GET_PARAM(1);
...@@ -762,7 +803,7 @@ PERF_TEST_P(Video_Cn_MaxFeatures, Video_GMG, Combine(Values("gpu/video/768x576.a ...@@ -762,7 +803,7 @@ PERF_TEST_P(Video_Cn_MaxFeatures, Video_GMG, Combine(Values("gpu/video/768x576.a
cv::swap(temp, frame); cv::swap(temp, frame);
} }
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::GpuMat d_frame(frame); cv::gpu::GpuMat d_frame(frame);
cv::gpu::GpuMat d_fgmask; cv::gpu::GpuMat d_fgmask;
...@@ -840,7 +881,7 @@ PERF_TEST_P(Video_Cn_MaxFeatures, Video_GMG, Combine(Values("gpu/video/768x576.a ...@@ -840,7 +881,7 @@ PERF_TEST_P(Video_Cn_MaxFeatures, Video_GMG, Combine(Values("gpu/video/768x576.a
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// VideoWriter // VideoWriter
PERF_TEST_P(Video, Video_VideoWriter, Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi")) PERF_TEST_P(Video, DISABLED_Video_VideoWriter, Values("gpu/video/768x576.avi", "gpu/video/1920x1080.avi"))
{ {
declare.time(30); declare.time(30);
...@@ -854,7 +895,7 @@ PERF_TEST_P(Video, Video_VideoWriter, Values("gpu/video/768x576.avi", "gpu/video ...@@ -854,7 +895,7 @@ PERF_TEST_P(Video, Video_VideoWriter, Values("gpu/video/768x576.avi", "gpu/video
cv::Mat frame; cv::Mat frame;
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::VideoWriter_GPU d_writer; cv::gpu::VideoWriter_GPU d_writer;
...@@ -903,7 +944,7 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video ...@@ -903,7 +944,7 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video
string inputFile = perf::TestBase::getDataPath(GetParam()); string inputFile = perf::TestBase::getDataPath(GetParam());
if (runOnGpu) if (PERF_RUN_GPU())
{ {
cv::gpu::VideoReader_GPU d_reader(inputFile); cv::gpu::VideoReader_GPU d_reader(inputFile);
ASSERT_TRUE( d_reader.isOpened() ); ASSERT_TRUE( d_reader.isOpened() );
...@@ -916,6 +957,8 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video ...@@ -916,6 +957,8 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video
{ {
d_reader.read(d_frame); d_reader.read(d_frame);
} }
GPU_SANITY_CHECK(d_frame);
} }
else else
{ {
...@@ -930,6 +973,8 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video ...@@ -930,6 +973,8 @@ PERF_TEST_P(Video, Video_VideoReader, Values("gpu/video/768x576.avi", "gpu/video
{ {
reader >> frame; reader >> frame;
} }
CPU_SANITY_CHECK(frame);
} }
} }
......
...@@ -4,8 +4,6 @@ using namespace std; ...@@ -4,8 +4,6 @@ using namespace std;
using namespace cv; using namespace cv;
using namespace cv::gpu; using namespace cv::gpu;
bool runOnGpu = true;
void fillRandom(Mat& m, double a, double b) void fillRandom(Mat& m, double a, double b)
{ {
RNG rng(123456789); RNG rng(123456789);
...@@ -190,4 +188,4 @@ void PrintTo(const CvtColorInfo& info, ostream* os) ...@@ -190,4 +188,4 @@ void PrintTo(const CvtColorInfo& info, ostream* os)
}; };
*os << str[info.code]; *os << str[info.code];
} }
\ No newline at end of file
...@@ -6,8 +6,6 @@ ...@@ -6,8 +6,6 @@
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/ts/ts_perf.hpp" #include "opencv2/ts/ts_perf.hpp"
extern bool runOnGpu;
void fillRandom(cv::Mat& m, double a = 0.0, double b = 255.0); void fillRandom(cv::Mat& m, double a = 0.0, double b = 255.0);
cv::Mat readImage(const std::string& fileName, int flags = cv::IMREAD_COLOR); cv::Mat readImage(const std::string& fileName, int flags = cv::IMREAD_COLOR);
...@@ -48,5 +46,37 @@ DEF_PARAM_TEST(Sz_Depth_Cn, cv::Size, MatDepth, MatCn); ...@@ -48,5 +46,37 @@ DEF_PARAM_TEST(Sz_Depth_Cn, cv::Size, MatDepth, MatCn);
#define GPU_TYPICAL_MAT_SIZES testing::Values(perf::sz720p, perf::szSXGA, perf::sz1080p) #define GPU_TYPICAL_MAT_SIZES testing::Values(perf::sz720p, perf::szSXGA, perf::sz1080p)
#define GPU_SANITY_CHECK(dmat, ...) \
do{ \
cv::Mat d##dmat(dmat); \
SANITY_CHECK(d##dmat, ## __VA_ARGS__); \
} while(0)
#define CPU_SANITY_CHECK(cmat, ...) \
do{ \
SANITY_CHECK(cmat, ## __VA_ARGS__); \
} while(0)
#define GPU_SANITY_CHECK_KEYPOINTS(alg, dmat, ...) \
do{ \
cv::Mat d##dmat(dmat); \
cv::Mat __pt_x = d##dmat.row(cv::gpu::alg##_GPU::X_ROW); \
cv::Mat __pt_y = d##dmat.row(cv::gpu::alg##_GPU::Y_ROW); \
cv::Mat __angle = d##dmat.row(cv::gpu::alg##_GPU::ANGLE_ROW); \
cv::Mat __octave = d##dmat.row(cv::gpu::alg##_GPU::OCTAVE_ROW); \
cv::Mat __size = d##dmat.row(cv::gpu::alg##_GPU::SIZE_ROW); \
::perf::Regression::add(this, std::string(#dmat) + "-pt-x-row", __pt_x, ## __VA_ARGS__); \
::perf::Regression::add(this, std::string(#dmat) + "-pt-y-row", __pt_y, ## __VA_ARGS__); \
::perf::Regression::add(this, std::string(#dmat) + "-angle-row", __angle, ## __VA_ARGS__); \
::perf::Regression::add(this, std::string(#dmat) + "octave-row", __octave, ## __VA_ARGS__); \
::perf::Regression::add(this, std::string(#dmat) + "-pt-size-row", __size, ## __VA_ARGS__); \
} while(0)
#define GPU_SANITY_CHECK_RESPONSE(alg, dmat, ...) \
do{ \
cv::Mat d##dmat(dmat); \
cv::Mat __response = d##dmat.row(cv::gpu::alg##_GPU::RESPONSE_ROW); \
::perf::Regression::add(this, std::string(#dmat) + "-response-row", __response, ## __VA_ARGS__); \
} while(0)
#endif // __OPENCV_PERF_GPU_UTILITY_HPP__ #endif // __OPENCV_PERF_GPU_UTILITY_HPP__
...@@ -205,6 +205,18 @@ private: ...@@ -205,6 +205,18 @@ private:
#define SANITY_CHECK_KEYPOINTS(array, ...) ::perf::Regression::addKeypoints(this, #array, array , ## __VA_ARGS__) #define SANITY_CHECK_KEYPOINTS(array, ...) ::perf::Regression::addKeypoints(this, #array, array , ## __VA_ARGS__)
#define SANITY_CHECK_MATCHES(array, ...) ::perf::Regression::addMatches(this, #array, array , ## __VA_ARGS__) #define SANITY_CHECK_MATCHES(array, ...) ::perf::Regression::addMatches(this, #array, array , ## __VA_ARGS__)
#ifdef HAVE_CUDA
class CV_EXPORTS GpuPerf
{
public:
static bool targetDevice();
};
# define PERF_RUN_GPU() ::perf::GpuPerf::targetDevice()
#else
# define PERF_RUN_GPU() false
#endif
/*****************************************************************************************\ /*****************************************************************************************\
* Container for performance metrics * * Container for performance metrics *
...@@ -465,9 +477,10 @@ CV_EXPORTS void PrintTo(const Size& sz, ::std::ostream* os); ...@@ -465,9 +477,10 @@ CV_EXPORTS void PrintTo(const Size& sz, ::std::ostream* os);
void fixture##_##name::PerfTestBody() void fixture##_##name::PerfTestBody()
#define CV_PERF_TEST_MAIN(testsuitname) \ #define CV_PERF_TEST_MAIN(testsuitname, ...) \
int main(int argc, char **argv)\ int main(int argc, char **argv)\
{\ {\
__VA_ARGS__;\
::perf::Regression::Init(#testsuitname);\ ::perf::Regression::Init(#testsuitname);\
::perf::TestBase::Init(argc, argv);\ ::perf::TestBase::Init(argc, argv);\
::testing::InitGoogleTest(&argc, argv);\ ::testing::InitGoogleTest(&argc, argv);\
......
...@@ -17,15 +17,20 @@ const std::string command_line_keys = ...@@ -17,15 +17,20 @@ const std::string command_line_keys =
"{ perf_seed |809564 |seed for random numbers generator}" "{ perf_seed |809564 |seed for random numbers generator}"
"{ perf_tbb_nthreads |-1 |if TBB is enabled, the number of TBB threads}" "{ perf_tbb_nthreads |-1 |if TBB is enabled, the number of TBB threads}"
"{ perf_write_sanity | |allow to create new records for sanity checks}" "{ perf_write_sanity | |allow to create new records for sanity checks}"
#ifdef ANDROID #ifdef ANDROID
"{ perf_time_limit |6.0 |default time limit for a single test (in seconds)}" "{ perf_time_limit |6.0 |default time limit for a single test (in seconds)}"
"{ perf_affinity_mask |0 |set affinity mask for the main thread}" "{ perf_affinity_mask |0 |set affinity mask for the main thread}"
"{ perf_log_power_checkpoints | |additional xml logging for power measurement}" "{ perf_log_power_checkpoints | |additional xml logging for power measurement}"
#else #else
"{ perf_time_limit |3.0 |default time limit for a single test (in seconds)}" "{ perf_time_limit |3.0 |default time limit for a single test (in seconds)}"
#endif #endif
"{ perf_max_deviation |1.0 |}" "{ perf_max_deviation |1.0 |}"
"{ help h | |print help info}" "{ help h | |print help info}"
#ifdef HAVE_CUDA
"{ perf_run_cpu |false |run GPU performance tests for analogical CPU functions}"
"{ perf_cuda_device |0 |run GPU test suite onto specific CUDA capable device}"
"{ perf_cuda_info_only |false |print an information about system and an available CUDA devices and then exit.}"
#endif
; ;
static double param_max_outliers; static double param_max_outliers;
...@@ -36,10 +41,16 @@ static uint64 param_seed; ...@@ -36,10 +41,16 @@ static uint64 param_seed;
static double param_time_limit; static double param_time_limit;
static int param_tbb_nthreads; static int param_tbb_nthreads;
static bool param_write_sanity; static bool param_write_sanity;
#ifdef HAVE_CUDA
static bool param_run_cpu;
static int param_cuda_device;
#endif
#ifdef ANDROID #ifdef ANDROID
static int param_affinity_mask; static int param_affinity_mask;
static bool log_power_checkpoints; static bool log_power_checkpoints;
#include <sys/syscall.h> #include <sys/syscall.h>
#include <pthread.h> #include <pthread.h>
static void setCurrentThreadAffinityMask(int mask) static void setCurrentThreadAffinityMask(int mask)
...@@ -56,6 +67,10 @@ static void setCurrentThreadAffinityMask(int mask) ...@@ -56,6 +67,10 @@ static void setCurrentThreadAffinityMask(int mask)
#endif #endif
#ifdef HAVE_CUDA
# include <opencv2/core/gpumat.hpp>
#endif
static void randu(cv::Mat& m) static void randu(cv::Mat& m)
{ {
const int bigValue = 0x00000FFF; const int bigValue = 0x00000FFF;
...@@ -608,6 +623,33 @@ void TestBase::Init(int argc, const char* const argv[]) ...@@ -608,6 +623,33 @@ void TestBase::Init(int argc, const char* const argv[])
log_power_checkpoints = args.has("perf_log_power_checkpoints"); log_power_checkpoints = args.has("perf_log_power_checkpoints");
#endif #endif
#ifdef HAVE_CUDA
bool printOnly = args.has("perf_cuda_info_only");
if (printOnly)
exit(0);
param_run_cpu = args.has("perf_run_cpu");
param_cuda_device = std::max(0, std::min(cv::gpu::getCudaEnabledDeviceCount(), args.get<int>("perf_cuda_device")));
if (param_run_cpu)
printf("[----------]\n[ GPU INFO ] \tRun test suite on CPU.\n[----------]\n"), fflush(stdout);
else
{
cv::gpu::DeviceInfo info(param_cuda_device);
if (!info.isCompatible())
{
printf("[----------]\n[ FAILURE ] \tDevice %s is NOT compatible with current GPU module build.\n[----------]\n", info.name().c_str()), fflush(stdout);
exit(-1);
}
cv::gpu::setDevice(param_cuda_device);
printf("[----------]\n[ GPU INFO ] \tRun test suite on %s GPU.\n[----------]\n", info.name().c_str()), fflush(stdout);
}
#endif
if (!args.check()) if (!args.check())
{ {
args.printErrors(); args.printErrors();
...@@ -1185,6 +1227,16 @@ TestBase::_declareHelper::_declareHelper(TestBase* t) : test(t) ...@@ -1185,6 +1227,16 @@ TestBase::_declareHelper::_declareHelper(TestBase* t) : test(t)
{ {
} }
/*****************************************************************************************\
* ::perf::GpuPerf
\*****************************************************************************************/
#ifdef HAVE_CUDA
bool perf::GpuPerf::targetDevice()
{
return !param_run_cpu;
}
#endif
/*****************************************************************************************\ /*****************************************************************************************\
* ::perf::PrintTo * ::perf::PrintTo
\*****************************************************************************************/ \*****************************************************************************************/
......
...@@ -756,7 +756,7 @@ Mat KeypointBasedMotionEstimatorGpu::estimate(const gpu::GpuMat &frame0, const g ...@@ -756,7 +756,7 @@ Mat KeypointBasedMotionEstimatorGpu::estimate(const gpu::GpuMat &frame0, const g
grayFrame0 = frame0; grayFrame0 = frame0;
else else
{ {
gpu::cvtColor(frame0_, grayFrame0_, CV_BGR2GRAY); gpu::cvtColor(frame0, grayFrame0_, CV_BGR2GRAY);
grayFrame0 = grayFrame0_; grayFrame0 = grayFrame0_;
} }
......
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