mirror of
https://github.com/Ascend/ascend-opencv.git
synced 2025-10-07 01:03:49 +08:00
debug
This commit is contained in:
@@ -145,8 +145,9 @@ namespace cv
|
||||
{
|
||||
if (this != &m)
|
||||
{
|
||||
|
||||
if (refcount)
|
||||
CV_XADD(refcount, -1);
|
||||
release();
|
||||
flags = m.flags;
|
||||
rows = m.rows;
|
||||
cols = m.cols;
|
||||
|
@@ -200,7 +200,6 @@ namespace cv
|
||||
opDesc.AddTensorAttr("transpose_x2", OP_BOOL, false);
|
||||
compileAndRunop(opDesc, inputBuffers_, outputBuffers_, this->acl_context);
|
||||
|
||||
newMat.data = aclGetDataBufferAddr(outputBuffers_[0]);
|
||||
*this = newMat;
|
||||
|
||||
for (size_t i = 0; i < inputBuffers_.size(); i++)
|
||||
|
@@ -31,8 +31,6 @@ namespace cv
|
||||
opDesc.AddTensorAttr("transpose_x2", OP_BOOL, false);
|
||||
compileAndRunop(opDesc, inputBuffers_, outputBuffers_, dest.acl_context);
|
||||
|
||||
dest.data = aclGetDataBufferAddr(outputBuffers_[0]);
|
||||
|
||||
for (size_t i = 0; i < inputBuffers_.size(); i++)
|
||||
AclSafeCall(aclDestroyDataBuffer(inputBuffers_[i]));
|
||||
for (size_t i = 0; i < outputBuffers_.size(); i++)
|
||||
|
@@ -8,7 +8,7 @@ namespace cv
|
||||
{
|
||||
aclMat dest(a.rows, a.cols, a.type(), a.acl_context);
|
||||
OneInAndOneOut(a, dest, "Abs");
|
||||
return a;
|
||||
return dest;
|
||||
}
|
||||
|
||||
static void *power_data(double power, aclDataType type, size_t powersize)
|
||||
|
@@ -204,7 +204,7 @@ namespace opencv_test
|
||||
test.Test_operator_mul_perf(acl_context_0);
|
||||
}
|
||||
|
||||
TEST(Mathfuncs, abs)
|
||||
TEST(Mathfunction, abs)
|
||||
{
|
||||
PERF_TEST test;
|
||||
test.Test_Abs(acl_context_0);
|
||||
@@ -215,7 +215,6 @@ namespace opencv_test
|
||||
PERF_TEST test;
|
||||
test.Test_Pow(acl_context_0);
|
||||
}
|
||||
|
||||
TEST(Mathfunction, sqrt)
|
||||
{
|
||||
PERF_TEST test;
|
||||
@@ -264,18 +263,18 @@ namespace opencv_test
|
||||
test.Test_MatMul(acl_context_0);
|
||||
}
|
||||
|
||||
TEST(Matrices, merge)
|
||||
{
|
||||
PERF_TEST test;
|
||||
test.Test_Merge(acl_context_0);
|
||||
}
|
||||
|
||||
TEST(Gemm, Convolution)
|
||||
{
|
||||
PERF_TEST test;
|
||||
test.Test_Convolution(acl_context_0);
|
||||
}
|
||||
|
||||
TEST(Matrices, merge)
|
||||
{
|
||||
PERF_TEST test;
|
||||
test.Test_Merge(acl_context_0);
|
||||
}
|
||||
|
||||
TEST(Matrices, split)
|
||||
{
|
||||
PERF_TEST test;
|
||||
|
@@ -57,7 +57,7 @@ void PERF_TEST::Test_operator_sub_perf(aclCxt *acl_context)
|
||||
double begin, end, time, acltime;
|
||||
Common_Test test;
|
||||
|
||||
vector<int> type{CV_8UC1, CV_32FC1, CV_32SC1, CV_64FC1};
|
||||
vector<int> type{CV_32FC1, CV_32SC1, CV_64FC1};
|
||||
for (size_t i = 0; i < type.size(); ++i)
|
||||
{
|
||||
test.PrintLog("Perf test : Function: operator-=()", type[i]);
|
||||
@@ -68,8 +68,8 @@ void PERF_TEST::Test_operator_sub_perf(aclCxt *acl_context)
|
||||
Mat mat_dest(val, val, type[i]);
|
||||
Mat mat_dest1(val, val, type[i]);
|
||||
|
||||
test.SetDataRange(mat_src, 1);
|
||||
test.SetDataRange(mat_dest, 1);
|
||||
test.SetDataRange(mat_src, 4);
|
||||
test.SetDataRange(mat_dest, 32);
|
||||
|
||||
aclMat aclmat_src(val, val, type[i], mat_src.data, acl_context);
|
||||
aclMat aclmat_dest(val, val, type[i], mat_dest.data, acl_context);
|
||||
@@ -150,7 +150,7 @@ void PERF_TEST::Test_operator_div_perf(aclCxt *acl_context)
|
||||
void PERF_TEST::Test_operator_mul_perf(aclCxt *acl_context)
|
||||
{
|
||||
int val, type;
|
||||
int valmax = 8192;
|
||||
int valmax = 4096;
|
||||
double begin, end, time, acltime;
|
||||
Common_Test test;
|
||||
|
||||
|
@@ -201,35 +201,35 @@ bool Common_Test::SetDataRange(Mat &src, int dataRange)
|
||||
for (int i = 0; i < src.rows * src.cols * src.channels(); i += src.channels())
|
||||
{
|
||||
for (int j = 0; j < src.channels(); ++j)
|
||||
(src.data)[i+j] = RandDom_(dataRange);
|
||||
(src.data)[i+j] = RandDom_(dataRange) + 1;
|
||||
}
|
||||
return true;
|
||||
case CV_16U:
|
||||
for (int i = 0; i < src.rows * src.cols * src.channels(); i += src.channels())
|
||||
{
|
||||
for (int j = 0; j < src.channels(); ++j)
|
||||
((unsigned short *)src.data)[i+j] = RandDom_(dataRange);
|
||||
((unsigned short *)src.data)[i+j] = RandDom_(dataRange) + 1;
|
||||
}
|
||||
return true;
|
||||
case CV_32S:
|
||||
for (int i = 0; i < src.rows * src.cols * src.channels(); i += src.channels())
|
||||
{
|
||||
for (int j = 0; j < src.channels(); ++j)
|
||||
((int *)src.data)[i+j] = RandDom_(dataRange);
|
||||
((int *)src.data)[i+j] = RandDom_(dataRange) + 1;
|
||||
}
|
||||
return true;
|
||||
case CV_32F:
|
||||
for (int i = 0; i < src.rows * src.cols * src.channels(); i += src.channels())
|
||||
{
|
||||
for (int j = 0; j < src.channels(); ++j)
|
||||
((float *)src.data)[i+j] = RandDom_(dataRange) / 1.0;
|
||||
((float *)src.data)[i+j] = RandDom_(dataRange) / 1.0 + 1;
|
||||
}
|
||||
return true;
|
||||
case CV_64F:
|
||||
for (int i = 0; i < src.rows * src.cols * src.channels(); i += src.channels())
|
||||
{
|
||||
for (int j = 0; j < src.channels(); ++j)
|
||||
((double *)src.data)[i+j] = RandDom_(dataRange) / 1.0;
|
||||
((double *)src.data)[i+j] = RandDom_(dataRange) / 1.0 + 1;
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
|
@@ -4,7 +4,7 @@
|
||||
void PERF_TEST::Test_MatMul(aclCxt *acl_context)
|
||||
{
|
||||
int val, type;
|
||||
int valmax = 8192;
|
||||
int valmax = 4096;
|
||||
double begin, end, time, acltime;
|
||||
Common_Test test;
|
||||
|
||||
@@ -53,7 +53,7 @@ void PERF_TEST::Test_MatMul(aclCxt *acl_context)
|
||||
void PERF_TEST::Test_Convolution(aclCxt *acl_context)
|
||||
{
|
||||
int val, type;
|
||||
int valmax = 8192;
|
||||
int valmax = 4096;
|
||||
double begin, end, time, acltime;
|
||||
Common_Test test;
|
||||
|
||||
@@ -68,7 +68,7 @@ void PERF_TEST::Test_Convolution(aclCxt *acl_context)
|
||||
aclMat aclmat_src(val, val, type, mat_src.data, acl_context);
|
||||
aclMat aclmat_kernel(3, 3, type, mat_kernel.data, acl_context);
|
||||
aclMat aclmat_dest(val, val, type, mat_dest.data, acl_context);
|
||||
int n = 1;
|
||||
int n = 100;
|
||||
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
@@ -76,7 +76,7 @@ void PERF_TEST::Test_Convolution(aclCxt *acl_context)
|
||||
end = static_cast<double>(getTickCount());
|
||||
time = (end - begin) / getTickFrequency();
|
||||
|
||||
n = 1;
|
||||
n = 100;
|
||||
begin = static_cast<double>(getTickCount());
|
||||
vector<int64_t> strides{1, 1, 1, 1};
|
||||
vector<int64_t> pads{1, 1, 1, 1};
|
||||
@@ -87,8 +87,6 @@ void PERF_TEST::Test_Convolution(aclCxt *acl_context)
|
||||
acltime = (end - begin) / getTickFrequency();
|
||||
|
||||
aclmat_dest.download(mat_dest1);
|
||||
cout << mat_dest << endl;
|
||||
cout << mat_dest1 << endl;
|
||||
/*
|
||||
bool ret = test.Test_Diff(mat_dest, mat_dest1);
|
||||
ASSERT_TRUE(ret);
|
||||
|
@@ -3,89 +3,94 @@
|
||||
|
||||
void PERF_TEST::Test_Abs(aclCxt *acl_context)
|
||||
{
|
||||
int val, type;
|
||||
int val;
|
||||
int valmax = 8192;
|
||||
double begin, end, time, acltime;
|
||||
Common_Test test;
|
||||
|
||||
type = CV_32FC1;
|
||||
|
||||
for (val = 8; val <= valmax; val *= 2)
|
||||
vector<int> type{CV_32FC1, CV_32SC1};
|
||||
for (size_t i = 0; i < type.size(); ++i)
|
||||
{
|
||||
int n = 100;
|
||||
Mat mat_src(val, val, type, Scalar{-2});
|
||||
Mat mat_dest(val, val, type, Scalar{-4});
|
||||
Mat mat_dest1(val, val, type, Scalar{-6});
|
||||
test.PrintLog("Perf test : Function: Abs()", type[i]);
|
||||
for (val = 8; val <= valmax; val *= 2)
|
||||
{
|
||||
int n = 100;
|
||||
Mat mat_src(val, val, type[i], Scalar{-2});
|
||||
Mat mat_dest(val, val, type[i], Scalar{-4});
|
||||
Mat mat_dest1(val, val, type[i], Scalar{-6});
|
||||
|
||||
aclMat aclmat_src(val, val, type, mat_src.data, acl_context);
|
||||
aclMat aclmat_dest(val, val, type, mat_dest.data, acl_context);
|
||||
aclMat aclmat_src(val, val, type[i], mat_src.data, acl_context);
|
||||
aclMat aclmat_dest(val, val, type[i], mat_dest.data, acl_context);
|
||||
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
mat_dest = abs(mat_src);
|
||||
end = static_cast<double>(getTickCount());
|
||||
time = (end - begin) / getTickFrequency();
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
mat_dest = abs(mat_src);
|
||||
end = static_cast<double>(getTickCount());
|
||||
time = (end - begin) / getTickFrequency();
|
||||
|
||||
n = 100;
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
aclmat_dest = abs(aclmat_src);
|
||||
end = static_cast<double>(getTickCount());
|
||||
acltime = (end - begin) / getTickFrequency();
|
||||
n = 100;
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
aclmat_dest = abs(aclmat_src);
|
||||
end = static_cast<double>(getTickCount());
|
||||
acltime = (end - begin) / getTickFrequency();
|
||||
|
||||
aclmat_dest.download(mat_dest1);
|
||||
bool ret = test.Test_Diff(mat_dest, mat_dest1);
|
||||
ASSERT_TRUE(ret);
|
||||
if (val < 128)
|
||||
cout << "Shape: " << val << " x " << val << "\t\t";
|
||||
else
|
||||
cout << "Shape: " << val << " x " << val << "\t";
|
||||
cout << "CpuTimes: " << time << "\tAclTimes: " << acltime << "\tRate: " << time / acltime << endl;
|
||||
aclmat_dest.download(mat_dest1);
|
||||
bool ret = test.Test_Diff(mat_dest, mat_dest1);
|
||||
ASSERT_TRUE(ret);
|
||||
if (val < 128)
|
||||
cout << "Shape: " << val << " x " << val << "\t\t";
|
||||
else
|
||||
cout << "Shape: " << val << " x " << val << "\t";
|
||||
cout << "CpuTimes: " << time << "\tAclTimes: " << acltime << "\tRate: " << time / acltime << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PERF_TEST::Test_Pow(aclCxt *acl_context)
|
||||
{
|
||||
int val, type;
|
||||
int val;
|
||||
int valmax = 8192;
|
||||
double begin, end, time, acltime;
|
||||
Common_Test test;
|
||||
|
||||
type = CV_32FC1;
|
||||
|
||||
for (val = 8; val <= valmax; val *= 2)
|
||||
vector<int> type{CV_32FC1};
|
||||
for (size_t i = 0; i < type.size(); ++i)
|
||||
{
|
||||
int n = 100;
|
||||
int power = test.RandDom_(6);
|
||||
Mat mat_src(val, val, type);
|
||||
Mat mat_dest(val, val, type);
|
||||
Mat mat_dest1(val, val, type);
|
||||
test.PrintLog("Perf test : Function: Pow()", type[i]);
|
||||
for (val = 8; val <= valmax; val *= 2)
|
||||
{
|
||||
int n = 100;
|
||||
int power = test.RandDom_(6);
|
||||
Mat mat_src(val, val, type[i]);
|
||||
Mat mat_dest(val, val, type[i]);
|
||||
Mat mat_dest1(val, val, type[i]);
|
||||
|
||||
test.SetDataRange(mat_src, 32);
|
||||
test.SetDataRange(mat_dest, 32);
|
||||
test.SetDataRange(mat_src, 32);
|
||||
|
||||
aclMat aclmat_src(val, val, type, mat_src.data, acl_context);
|
||||
aclMat aclmat_dest(val, val, type, mat_dest.data, acl_context);
|
||||
aclMat aclmat_src(val, val, type[i], mat_src.data, acl_context);
|
||||
aclMat aclmat_dest(val, val, type[i], mat_dest.data, acl_context);
|
||||
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
pow(mat_src, power, mat_dest);
|
||||
end = static_cast<double>(getTickCount());
|
||||
time = (end - begin) / getTickFrequency();
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
pow(mat_src, power, mat_dest);
|
||||
end = static_cast<double>(getTickCount());
|
||||
time = (end - begin) / getTickFrequency();
|
||||
|
||||
n = 100;
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
pow(aclmat_src, power, aclmat_dest);
|
||||
end = static_cast<double>(getTickCount());
|
||||
acltime = (end - begin) / getTickFrequency();
|
||||
n = 100;
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
pow(aclmat_src, power, aclmat_dest);
|
||||
end = static_cast<double>(getTickCount());
|
||||
acltime = (end - begin) / getTickFrequency();
|
||||
|
||||
aclmat_dest.download(mat_dest1);
|
||||
if (val < 128)
|
||||
cout << "Shape: " << val << " x " << val << "\t\t";
|
||||
else
|
||||
cout << "Shape: " << val << " x " << val << "\t";
|
||||
cout << "CpuTimes: " << time << "\tAclTimes: " << acltime << "\tRate: " << time / acltime << endl;
|
||||
aclmat_dest.download(mat_dest1);
|
||||
if (val < 128)
|
||||
cout << "Shape: " << val << " x " << val << "\t\t";
|
||||
else
|
||||
cout << "Shape: " << val << " x " << val << "\t";
|
||||
cout << "CpuTimes: " << time << "\tAclTimes: " << acltime << "\tRate: " << time / acltime << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,7 +205,7 @@ void PERF_TEST::Test_Divide(aclCxt *acl_context)
|
||||
Mat mat_dest1(val, val, type);
|
||||
|
||||
test.SetDataRange(mat_src1, 32);
|
||||
test.SetDataRange(mat_src2, 2);
|
||||
test.SetDataRange(mat_src2, 4);
|
||||
test.SetDataRange(mat_dest, 32);
|
||||
|
||||
aclMat aclmat_src1(val, val, type, mat_src1.data, acl_context);
|
||||
|
@@ -143,7 +143,7 @@ void PERF_TEST::Test_Transpose(aclCxt *acl_context)
|
||||
void PERF_TEST::Test_Split(aclCxt *acl_context)
|
||||
{
|
||||
int val;
|
||||
int valmax = 8;
|
||||
int valmax = 8192;
|
||||
double begin, end, time, acltime;
|
||||
Common_Test test;
|
||||
|
||||
@@ -155,7 +155,7 @@ void PERF_TEST::Test_Split(aclCxt *acl_context)
|
||||
test.PrintLog("Perf test : Function: split()", srcType[i]);
|
||||
for (val = 8; val <= valmax; val *= 2)
|
||||
{
|
||||
int n = 1;
|
||||
int n = 100;
|
||||
Mat mat_src(val, val, srcType[i]);
|
||||
Mat mat_dest1(val, val, destType[i]);
|
||||
Mat mat_dest2(val, val, destType[i]);
|
||||
@@ -164,9 +164,9 @@ void PERF_TEST::Test_Split(aclCxt *acl_context)
|
||||
test.SetDataRange(mat_src, 32);
|
||||
|
||||
aclMat aclmat_src(val, val, srcType[i], mat_src.data, acl_context);
|
||||
aclMat aclmat_dest1(val, val, destType[i], mat_dest1.data, acl_context);
|
||||
aclMat aclmat_dest2(val, val, destType[i], mat_dest2.data, acl_context);
|
||||
aclMat aclmat_dest3(val, val, destType[i], mat_dest3.data, acl_context);
|
||||
aclMat aclmat_dest1;
|
||||
aclMat aclmat_dest2;
|
||||
aclMat aclmat_dest3;
|
||||
|
||||
vector<Mat> dest;
|
||||
dest.emplace_back(mat_dest1);
|
||||
@@ -184,7 +184,7 @@ void PERF_TEST::Test_Split(aclCxt *acl_context)
|
||||
end = static_cast<double>(getTickCount());
|
||||
time = (end - begin) / getTickFrequency();
|
||||
|
||||
n = 1;
|
||||
n = 100;
|
||||
begin = static_cast<double>(getTickCount());
|
||||
while (n--)
|
||||
split(aclmat_src, acl_dest);
|
||||
@@ -204,6 +204,7 @@ void PERF_TEST::Test_Split(aclCxt *acl_context)
|
||||
else
|
||||
cout << "Shape: " << val << " x " << val << "\t";
|
||||
cout << "CpuTimes: " << time << "\tAclTimes: " << acltime << "\tRate: " << time / acltime << endl;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user