You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
231 lines
7.3 KiB
231 lines
7.3 KiB
// This file is part of OpenCV project. |
|
// It is subject to the license terms in the LICENSE file found in the top-level directory |
|
// of this distribution and at http://opencv.org/license.html. |
|
|
|
#include "perf_precomp.hpp" |
|
#include "opencv2/cann_interface.hpp" |
|
|
|
namespace opencv_test |
|
{ |
|
namespace |
|
{ |
|
|
|
#define ARITHM_MAT_DEPTH Values(CV_32S, CV_32SC3) |
|
#define TYPICAL_ASCEND_MAT_SIZES \ |
|
Values(::perf::sz1080p, ::perf::sz2K, ::perf::sz2160p, ::perf::sz4320p) |
|
#define DEF_PARAM_TEST(name, ...) \ |
|
typedef ::perf::TestBaseWithParam<testing::tuple<__VA_ARGS__>> name |
|
|
|
DEF_PARAM_TEST(NPU, Size, int); |
|
DEF_PARAM_TEST(CPU, Size, int); |
|
|
|
PERF_TEST_P(NPU, MAT_ADD_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
cv::cann::setDevice(DEVICE_ID); |
|
TEST_CYCLE() { cv::cann::add(mat1, mat2, dst, noArray(), -1); } |
|
cv::cann::resetDevice(); |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, MAT_ADD_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
TEST_CYCLE() { cv::add(mat1, mat2, dst, noArray(), -1); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(NPU, MAT_SUB_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
cv::cann::setDevice(DEVICE_ID); |
|
TEST_CYCLE() { cv::cann::subtract(mat1, mat2, dst, noArray(), -1); } |
|
cv::cann::resetDevice(); |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, MAT_SUB_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
TEST_CYCLE() { cv::subtract(mat1, mat2, dst, noArray(), -1); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(NPU, MAT_MUL_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
cv::cann::setDevice(DEVICE_ID); |
|
TEST_CYCLE() { cv::cann::multiply(mat1, mat2, dst, 1, -1); } |
|
cv::cann::resetDevice(); |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, MAT_MUL_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
TEST_CYCLE() { cv::multiply(mat1, mat2, dst, 1, -1); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(NPU, MAT_DIV_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
cv::cann::setDevice(DEVICE_ID); |
|
TEST_CYCLE() { cv::cann::divide(mat1, mat2, dst, 1, -1); } |
|
cv::cann::resetDevice(); |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, MAT_DIV_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
TEST_CYCLE() { cv::divide(mat1, mat2, dst, 1, -1); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(NPU, MAT_BITWISE_AND_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
cv::cann::setDevice(DEVICE_ID); |
|
TEST_CYCLE() { cv::cann::bitwise_and(mat1, mat2, dst, noArray()); } |
|
cv::cann::resetDevice(); |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, MAT_BITWISE_AND_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
TEST_CYCLE() { cv::bitwise_and(mat1, mat2, dst, noArray()); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(NPU, MAT_BITWISE_OR_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
cv::cann::setDevice(DEVICE_ID); |
|
TEST_CYCLE() { cv::cann::bitwise_or(mat1, mat2, dst, noArray()); } |
|
cv::cann::resetDevice(); |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, MAT_BITWISE_OR_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
TEST_CYCLE() { cv::bitwise_or(mat1, mat2, dst, noArray()); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(NPU, MAT_BITWISE_XOR_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
cv::cann::setDevice(DEVICE_ID); |
|
TEST_CYCLE() { cv::cann::bitwise_xor(mat1, mat2, dst, noArray()); } |
|
cv::cann::resetDevice(); |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, MAT_BITWISE_XOR_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat1(GET_PARAM(0), GET_PARAM(1)); |
|
Mat mat2(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat1, WARMUP_RNG); |
|
declare.in(mat2, WARMUP_RNG); |
|
TEST_CYCLE() { cv::bitwise_xor(mat1, mat2, dst, noArray()); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(NPU, MAT_BITWISE_NOT_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat, WARMUP_RNG); |
|
cv::cann::setDevice(DEVICE_ID); |
|
TEST_CYCLE() { cv::cann::bitwise_not(mat, dst, noArray()); } |
|
cv::cann::resetDevice(); |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, MAT_BITWISE_NOT_MAT, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, ARITHM_MAT_DEPTH)) |
|
{ |
|
Mat mat(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat, WARMUP_RNG); |
|
TEST_CYCLE() { cv::bitwise_not(mat, dst, noArray()); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(NPU, THRESHOLD_ASCENDC, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, Values(CV_8U, CV_16S, CV_32F))) |
|
{ |
|
Mat mat(GET_PARAM(0), GET_PARAM(1)); |
|
AscendMat dst; |
|
AscendMat src; |
|
src.upload(mat); |
|
declare.in(mat, WARMUP_RNG); |
|
TEST_CYCLE_N(10) { cv::cann::threshold(src, dst, 100.0, 255.0, cv::THRESH_BINARY); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
PERF_TEST_P(CPU, THRESHOLD, testing::Combine(TYPICAL_ASCEND_MAT_SIZES, Values(CV_8U, CV_16S, CV_32F))) |
|
{ |
|
Mat mat(GET_PARAM(0), GET_PARAM(1)); |
|
Mat dst; |
|
declare.in(mat, WARMUP_RNG); |
|
TEST_CYCLE_N(10) { cv::threshold(mat, dst, 100.0, 255.0, cv::THRESH_BINARY); } |
|
SANITY_CHECK_NOTHING(); |
|
} |
|
|
|
} // namespace |
|
} // namespace opencv_test
|
|
|