arithm test gpu tests for cpu :)
authorAnatoly Baksheev <no@email>
Tue, 22 May 2012 13:15:22 +0000 (13:15 +0000)
committerAnatoly Baksheev <no@email>
Tue, 22 May 2012 13:15:22 +0000 (13:15 +0000)
modules/gpu/CMakeLists.txt
modules/gpu/perf/perf_arithm.cpp
modules/gpu/perf_cpu/perf_arithm.cpp

index dc7fc5d..357ba4b 100644 (file)
@@ -47,27 +47,23 @@ if (HAVE_CUDA)
     endif()
   endif()
 
-  OCV_CUDA_COMPILE(cuda_objs ${lib_cuda} ${ncv_cuda})
+  ocv_cuda_compile(cuda_objs ${lib_cuda} ${ncv_cuda})
   #CUDA_BUILD_CLEAN_TARGET()
 
+  
+  set(cuda_link_libs ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
+  
+  
   if(NOT APPLE)
     unset(CUDA_nvcuvid_LIBRARY CACHE)
     find_cuda_helper_libs(nvcuvid)
+       set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvid_LIBRARY})
   endif()
 
   if(WIN32)
     unset(CUDA_nvcuvenc_LIBRARY CACHE)
     find_cuda_helper_libs(nvcuvenc)
-  endif()
-
-  set(cuda_link_libs ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
-
-  if(NOT APPLE)
-    set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvid_LIBRARY})
-  endif()
-
-  if(WIN32)
-    set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvenc_LIBRARY})
+       set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvenc_LIBRARY})
   endif()
 
   if(NOT APPLE AND WITH_FFMPEG)
index 2ab720c..31f2f45 100644 (file)
@@ -216,6 +216,195 @@ INSTANTIATE_TEST_CASE_P(Arithm, AddScalar, testing::Combine(
                         GPU_TYPICAL_MAT_SIZES, \r
                         testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
 \r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// SubtractMat\r
+\r
+GPU_PERF_TEST(SubtractMat, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+\r
+    fill(src1_host, 0.0, 100.0);\r
+    fill(src2_host, 0.0, 100.0);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);\r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::subtract(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, SubtractMat, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// SubtractScalar\r
+\r
+GPU_PERF_TEST(SubtractScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src_host(size, type);\r
+\r
+    fill(src_host, 0.0, 100.0);\r
+\r
+    cv::gpu::GpuMat src(src_host);\r
+    cv::Scalar s(1,2,3,4);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::subtract(src, s, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, SubtractScalar, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// MultiplyMat\r
+\r
+GPU_PERF_TEST(MultiplyMat, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+\r
+    fill(src1_host, 0.0, 100.0);\r
+    fill(src2_host, 0.0, 100.0);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);\r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::multiply(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, MultiplyMat, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// MultiplyScalar\r
+\r
+GPU_PERF_TEST(MultiplyScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src_host(size, type);\r
+\r
+    fill(src_host, 0.0, 100.0);\r
+\r
+    cv::gpu::GpuMat src(src_host);\r
+    cv::Scalar s(1,2,3,4);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::multiply(src, s, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, MultiplyScalar, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// DivideMat\r
+\r
+GPU_PERF_TEST(DivideMat, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+\r
+    fill(src1_host, 0.0, 100.0);\r
+    fill(src2_host, 0.0, 100.0);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);\r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::divide(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, DivideMat, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// DivideScalar\r
+\r
+GPU_PERF_TEST(DivideScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src_host(size, type);\r
+\r
+    fill(src_host, 0.0, 100.0);\r
+\r
+    cv::gpu::GpuMat src(src_host);\r
+    cv::Scalar s(1,2,3,4);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::divide(src, s, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, DivideScalar, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
 //////////////////////////////////////////////////////////////////////\r
 // Exp\r
 \r
@@ -273,6 +462,65 @@ INSTANTIATE_TEST_CASE_P(Arithm, Pow, testing::Combine(
                         testing::Values(CV_8UC1, CV_8UC4, CV_16UC1, CV_32FC1)));\r
 \r
 //////////////////////////////////////////////////////////////////////\r
+// Log\r
+\r
+GPU_PERF_TEST(Log, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src_host(size, type);\r
+\r
+    declare.in(src_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src(src_host);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::log(src, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Log, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_8UC4, CV_16UC1, CV_32FC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Sqrt\r
+\r
+GPU_PERF_TEST(Sqrt, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src_host(size, type);\r
+\r
+    declare.in(src_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src(src_host);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::sqrt(src, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Sqrt, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_8UC4, CV_16UC1, CV_32FC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
 // Compare\r
 \r
 GPU_PERF_TEST(Compare, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
@@ -304,6 +552,36 @@ INSTANTIATE_TEST_CASE_P(Arithm, Compare, testing::Combine(
                         testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
 \r
 //////////////////////////////////////////////////////////////////////\r
+// CompareScalar\r
+\r
+GPU_PERF_TEST(CompareScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    \r
+    declare.in(src1_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);\r
+    cv::Scalar src2 = cv::Scalar::all(123);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::compare(src1, src2, dst, cv::CMP_EQ);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, CompareScalar, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
 // BitwiseNot\r
 \r
 GPU_PERF_TEST(BitwiseNot, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
@@ -363,6 +641,9 @@ INSTANTIATE_TEST_CASE_P(Arithm, BitwiseAnd, testing::Combine(
                         GPU_TYPICAL_MAT_SIZES, \r
                         testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
 \r
+//////////////////////////////////////////////////////////////////////\r
+// BitwiseScalarAnd\r
+\r
 GPU_PERF_TEST(BitwiseScalarAnd, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
 {\r
     cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
@@ -390,6 +671,132 @@ INSTANTIATE_TEST_CASE_P(Arithm, BitwiseScalarAnd, testing::Combine(
                         GPU_TYPICAL_MAT_SIZES, \r
                         testing::Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_16UC1, CV_16UC3, CV_16UC4, CV_32SC1, CV_32SC3, CV_32SC4)));\r
 \r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// BitwiseOr\r
+\r
+GPU_PERF_TEST(BitwiseOr, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+\r
+    declare.in(src1_host, src2_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);\r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::bitwise_or(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, BitwiseOr, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// BitwiseScalarOr\r
+\r
+GPU_PERF_TEST(BitwiseScalarOr, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src_host(size, type);\r
+\r
+    declare.in(src_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src(src_host);\r
+    cv::gpu::GpuMat dst;\r
+    cv::Scalar sc = cv::Scalar(123, 123, 123, 123);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::bitwise_or(src, sc, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, BitwiseScalarOr, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_16UC1, CV_16UC3, CV_16UC4, CV_32SC1, CV_32SC3, CV_32SC4)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// BitwiseXor\r
+\r
+GPU_PERF_TEST(BitwiseXor, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+\r
+    declare.in(src1_host, src2_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);\r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::bitwise_xor(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, BitwiseXor, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// BitwiseScalarXor\r
+\r
+GPU_PERF_TEST(BitwiseScalarXor, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src_host(size, type);\r
+\r
+    declare.in(src_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src(src_host);\r
+    cv::gpu::GpuMat dst;\r
+    cv::Scalar sc = cv::Scalar(123, 123, 123, 123);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::bitwise_xor(src, sc, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, BitwiseScalarXor, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_16UC1, CV_16UC3, CV_16UC4, CV_32SC1, CV_32SC3, CV_32SC4)));\r
+\r
+\r
+\r
 //////////////////////////////////////////////////////////////////////\r
 // Min\r
 \r
@@ -421,6 +828,193 @@ INSTANTIATE_TEST_CASE_P(Arithm, Min, testing::Combine(
                         GPU_TYPICAL_MAT_SIZES, \r
                         testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
 \r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Max\r
+\r
+GPU_PERF_TEST(Max, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+\r
+    declare.in(src1_host, src2_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);\r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::max(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Max, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Abs\r
+\r
+GPU_PERF_TEST(Abs, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    \r
+    declare.in(src1_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);    \r
+    cv::gpu::GpuMat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::abs(src1, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Abs, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_16S, CV_32F)));\r
+\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// AbsDiff\r
+\r
+GPU_PERF_TEST(AbsDiff, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+    \r
+    declare.in(src1_host, src2_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);    \r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::absdiff(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, AbsDiff, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Phase\r
+\r
+GPU_PERF_TEST(Phase, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+        \r
+    declare.in(src1_host, src2_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);    \r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::phase(src1, src2, dst, true);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Phase, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values<perf::MatType>(CV_32FC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Magnitude\r
+\r
+GPU_PERF_TEST(Magnitude, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1_host(size, type);\r
+    cv::Mat src2_host(size, type);\r
+        \r
+    declare.in(src1_host, src2_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);    \r
+    cv::gpu::GpuMat src2(src2_host);\r
+    cv::gpu::GpuMat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::magnitude(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Magnitude, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values<perf::MatType>(CV_32FC1)));\r
+\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// AbsDiffScalar\r
+\r
+GPU_PERF_TEST(AbsDiffScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+\r
+    cv::Mat src1_host(size, type);        \r
+    declare.in(src1_host, WARMUP_RNG);\r
+\r
+    cv::gpu::GpuMat src1(src1_host);    \r
+    cv::Scalar src2 = cv::Scalar::all(123);\r
+    cv::gpu::GpuMat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::gpu::absdiff(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, AbsDiffScalar, testing::Combine(\r
+                        ALL_DEVICES, \r
+                        GPU_TYPICAL_MAT_SIZES, \r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+\r
 //////////////////////////////////////////////////////////////////////\r
 // MeanStdDev\r
 \r
index 80f1cae..b202ef2 100644 (file)
@@ -185,6 +185,169 @@ INSTANTIATE_TEST_CASE_P(Arithm, AddScalar, testing::Combine(
                         GPU_TYPICAL_MAT_SIZES,\r
                         testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
 \r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// SubtractMat\r
+\r
+GPU_PERF_TEST(SubtractMat, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Mat src2(size, type);\r
+\r
+    fill(src1, 0.0, 100.0);\r
+    fill(src2, 0.0, 100.0);\r
+\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::subtract(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, SubtractMat, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// SubtractScalar\r
+\r
+GPU_PERF_TEST(SubtractScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src(size, type);\r
+\r
+    fill(src, 0.0, 100.0);\r
+\r
+    cv::Scalar s(1,2,3,4);\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::subtract(src, s, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, SubtractScalar, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// MultiplyMat\r
+\r
+GPU_PERF_TEST(MultiplyMat, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Mat src2(size, type);\r
+\r
+    fill(src1, 0.0, 100.0);\r
+    fill(src2, 0.0, 100.0);\r
+\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::multiply(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, MultiplyMat, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// MultiplyScalar\r
+\r
+GPU_PERF_TEST(MultiplyScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src(size, type);\r
+\r
+    fill(src, 0.0, 100.0);\r
+\r
+    cv::Scalar s(1,2,3,4);\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::multiply(src, s, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, MultiplyScalar, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// DivideMat\r
+\r
+GPU_PERF_TEST(DivideMat, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Mat src2(size, type);\r
+\r
+    fill(src1, 0.0, 100.0);\r
+    fill(src2, 0.0, 100.0);\r
+\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::divide(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, DivideMat, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// DivideScalar\r
+\r
+GPU_PERF_TEST(DivideScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src(size, type);\r
+\r
+    fill(src, 0.0, 100.0);\r
+\r
+    cv::Scalar s(1,2,3,4);\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::divide(src, s, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, DivideScalar, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+\r
 //////////////////////////////////////////////////////////////////////\r
 // Exp\r
 \r
@@ -234,6 +397,59 @@ INSTANTIATE_TEST_CASE_P(Arithm, Pow, testing::Combine(
                         testing::Values(perf::MatType(CV_32FC1))));\r
 \r
 //////////////////////////////////////////////////////////////////////\r
+// Log\r
+\r
+GPU_PERF_TEST(Log, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src(size, type);\r
+\r
+    declare.in(src, WARMUP_RNG);\r
+\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::log(src, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Log, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(perf::MatType(CV_32FC1))));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Sqrt\r
+\r
+GPU_PERF_TEST(Sqrt, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src(size, type);\r
+\r
+    declare.in(src, WARMUP_RNG);\r
+\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::sqrt(src, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Sqrt, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(perf::MatType(CV_32FC1))));\r
+\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
 // Compare\r
 \r
 GPU_PERF_TEST(Compare, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
@@ -259,6 +475,35 @@ INSTANTIATE_TEST_CASE_P(Arithm, Compare, testing::Combine(
                         GPU_TYPICAL_MAT_SIZES,\r
                         testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
 \r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// CompareScalar\r
+\r
+GPU_PERF_TEST(CompareScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Scalar src2 = cv::Scalar::all(123);\r
+\r
+    declare.in(src1, WARMUP_RNG);\r
+\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::compare(src1, src2, dst, cv::CMP_EQ);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, CompareScalar, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32FC1)));\r
+\r
+\r
+\r
 //////////////////////////////////////////////////////////////////////\r
 // BitwiseNot\r
 \r
@@ -336,6 +581,62 @@ INSTANTIATE_TEST_CASE_P(Arithm, BitwiseScalarAnd, testing::Combine(
                         GPU_TYPICAL_MAT_SIZES,\r
                         testing::Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_16UC1, CV_16UC3, CV_16UC4, CV_32SC1, CV_32SC3, CV_32SC4)));\r
 \r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// BitwiseOr\r
+\r
+GPU_PERF_TEST(BitwiseOr, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Mat src2(size, type);\r
+\r
+    declare.in(src1, src2, WARMUP_RNG);\r
+\r
+    cv::Mat dst;\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::bitwise_or(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, BitwiseOr, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// BitwiseScalarOr\r
+\r
+GPU_PERF_TEST(BitwiseScalarOr, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src(size, type);\r
+\r
+    declare.in(src, WARMUP_RNG);\r
+\r
+    cv::Mat dst;\r
+    cv::Scalar sc = cv::Scalar(123, 123, 123, 123);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::bitwise_or(src, sc, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, BitwiseScalarOr, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_16UC1, CV_16UC3, CV_16UC4, CV_32SC1, CV_32SC3, CV_32SC4)));\r
+\r
+\r
+\r
 //////////////////////////////////////////////////////////////////////\r
 // Min\r
 \r
@@ -363,6 +664,168 @@ INSTANTIATE_TEST_CASE_P(Arithm, Min, testing::Combine(
                         testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
 \r
 //////////////////////////////////////////////////////////////////////\r
+// Max\r
+\r
+GPU_PERF_TEST(Max, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Mat src2(size, type);\r
+\r
+    declare.in(src1, src2, WARMUP_RNG);\r
+\r
+    cv::Mat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::max(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Max, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Abs\r
+\r
+GPU_PERF_TEST(Abs, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    \r
+    declare.in(src1, WARMUP_RNG);\r
+\r
+    cv::Mat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        dst = cv::abs(src1);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Abs, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_16S, CV_32F)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// AbsDiff\r
+\r
+GPU_PERF_TEST(AbsDiff, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Mat src2(size, type);\r
+    \r
+    declare.in(src1, src2, WARMUP_RNG);\r
+\r
+    cv::Mat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::absdiff(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, AbsDiff, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// AbsDiffScalar\r
+\r
+GPU_PERF_TEST(AbsDiffScalar, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Scalar src2 = cv::Scalar::all(123);\r
+    \r
+    declare.in(src1, WARMUP_RNG);\r
+\r
+    cv::Mat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::absdiff(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, AbsDiffScalar, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values(CV_8UC1, CV_16UC1, CV_32SC1)));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Phase\r
+\r
+GPU_PERF_TEST(Phase, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Mat src2(size, type);\r
+        \r
+    declare.in(src1, src2, WARMUP_RNG);\r
+\r
+    cv::Mat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::phase(src1, src2, dst, true);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Phase, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values<perf::MatType>(CV_32FC1) ));\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+// Magnitude\r
+\r
+GPU_PERF_TEST(Magnitude, cv::gpu::DeviceInfo, cv::Size, perf::MatType)\r
+{\r
+    cv::Size size = GET_PARAM(1);\r
+    int type = GET_PARAM(2);\r
+\r
+    cv::Mat src1(size, type);\r
+    cv::Mat src2(size, type);\r
+        \r
+    declare.in(src1, src2, WARMUP_RNG);\r
+\r
+    cv::Mat dst(size, type);\r
+\r
+    TEST_CYCLE()\r
+    {\r
+        cv::magnitude(src1, src2, dst);\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Arithm, Magnitude, testing::Combine(\r
+                        ALL_DEVICES,\r
+                        GPU_TYPICAL_MAT_SIZES,\r
+                        testing::Values<perf::MatType>(CV_32FC1) ));\r
+\r
+\r
+\r
+//////////////////////////////////////////////////////////////////////\r
 // MeanStdDev\r
 \r
 GPU_PERF_TEST(MeanStdDev, cv::gpu::DeviceInfo, cv::Size)\r