@ -48,7 +48,7 @@
///////////// Lut ////////////////////////
PERFTEST ( lut )
{
Mat src , lut , dst ;
Mat src , lut , dst , ocl_dst ;
ocl : : oclMat d_src , d_lut , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_8UC3 } ;
@ -77,11 +77,6 @@ PERFTEST(lut)
ocl : : LUT ( d_src , d_lut , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 0 ) ) ;
GPU_ON ;
ocl : : LUT ( d_src , d_lut , d_dst ) ;
GPU_OFF ;
@ -90,9 +85,10 @@ PERFTEST(lut)
d_src . upload ( src ) ;
d_lut . upload ( lut ) ;
ocl : : LUT ( d_src , d_lut , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 0 ) ;
}
}
@ -101,7 +97,7 @@ PERFTEST(lut)
///////////// Exp ////////////////////////
PERFTEST ( Exp )
{
Mat src , dst ;
Mat src , dst , ocl_dst ;
ocl : : oclMat d_src , d_dst ;
for ( int size = Min_Size ; size < = Max_Size ; size * = Multiple )
@ -121,11 +117,6 @@ PERFTEST(Exp)
ocl : : exp ( d_src , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 2 ) ) ;
GPU_ON ;
ocl : : exp ( d_src , d_dst ) ;
GPU_OFF ;
@ -133,15 +124,17 @@ PERFTEST(Exp)
GPU_FULL_ON ;
d_src . upload ( src ) ;
ocl : : exp ( d_src , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 2 ) ;
}
}
///////////// LOG ////////////////////////
PERFTEST ( Log )
{
Mat src , dst ;
Mat src , dst , ocl_dst ;
ocl : : oclMat d_src , d_dst ;
for ( int size = Min_Size ; size < = Max_Size ; size * = Multiple )
@ -161,11 +154,6 @@ PERFTEST(Log)
ocl : : log ( d_src , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 1 ) ) ;
GPU_ON ;
ocl : : log ( d_src , d_dst ) ;
GPU_OFF ;
@ -173,15 +161,17 @@ PERFTEST(Log)
GPU_FULL_ON ;
d_src . upload ( src ) ;
ocl : : log ( d_src , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 1 ) ;
}
}
///////////// Add ////////////////////////
PERFTEST ( Add )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_32FC1 } ;
@ -201,6 +191,7 @@ PERFTEST(Add)
CPU_ON ;
add ( src1 , src2 , dst ) ;
CPU_OFF ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
@ -208,11 +199,6 @@ PERFTEST(Add)
ocl : : add ( d_src1 , d_src2 , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 0.0 ) ) ;
GPU_ON ;
ocl : : add ( d_src1 , d_src2 , d_dst ) ;
GPU_OFF ;
@ -221,8 +207,10 @@ PERFTEST(Add)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : add ( d_src1 , d_src2 , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 0.0 ) ;
}
}
@ -231,7 +219,7 @@ PERFTEST(Add)
///////////// Mul ////////////////////////
PERFTEST ( Mul )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_8UC4 } ;
@ -260,11 +248,6 @@ PERFTEST(Mul)
ocl : : multiply ( d_src1 , d_src2 , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 0.0 ) ) ;
GPU_ON ;
ocl : : multiply ( d_src1 , d_src2 , d_dst ) ;
GPU_OFF ;
@ -273,8 +256,10 @@ PERFTEST(Mul)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : multiply ( d_src1 , d_src2 , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 0.0 ) ;
}
}
@ -283,7 +268,7 @@ PERFTEST(Mul)
///////////// Div ////////////////////////
PERFTEST ( Div )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_8UC4 } ;
std : : string type_name [ ] = { " CV_8UC1 " , " CV_8UC4 " } ;
@ -304,6 +289,7 @@ PERFTEST(Div)
CPU_ON ;
divide ( src1 , src2 , dst ) ;
CPU_OFF ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
@ -311,11 +297,6 @@ PERFTEST(Div)
ocl : : divide ( d_src1 , d_src2 , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 1 ) ) ;
GPU_ON ;
ocl : : divide ( d_src1 , d_src2 , d_dst ) ;
GPU_OFF ;
@ -324,8 +305,10 @@ PERFTEST(Div)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : divide ( d_src1 , d_src2 , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 1 ) ;
}
}
@ -334,7 +317,7 @@ PERFTEST(Div)
///////////// Absdiff ////////////////////////
PERFTEST ( Absdiff )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_8UC4 } ;
@ -355,6 +338,7 @@ PERFTEST(Absdiff)
CPU_ON ;
absdiff ( src1 , src2 , dst ) ;
CPU_OFF ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
@ -362,11 +346,6 @@ PERFTEST(Absdiff)
ocl : : absdiff ( d_src1 , d_src2 , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 0.0 ) ) ;
GPU_ON ;
ocl : : absdiff ( d_src1 , d_src2 , d_dst ) ;
GPU_OFF ;
@ -375,8 +354,10 @@ PERFTEST(Absdiff)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : absdiff ( d_src1 , d_src2 , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 0.0 ) ;
}
}
@ -385,7 +366,7 @@ PERFTEST(Absdiff)
///////////// CartToPolar ////////////////////////
PERFTEST ( CartToPolar )
{
Mat src1 , src2 , dst , dst1 ;
Mat src1 , src2 , dst , dst1 , ocl_dst , ocl_dst1 ;
ocl : : oclMat d_src1 , d_src2 , d_dst , d_dst1 ;
int all_type [ ] = { CV_32FC1 } ;
@ -408,6 +389,7 @@ PERFTEST(CartToPolar)
CPU_ON ;
cartToPolar ( src1 , src2 , dst , dst1 , 1 ) ;
CPU_OFF ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
@ -415,14 +397,6 @@ PERFTEST(CartToPolar)
ocl : : cartToPolar ( d_src1 , d_src2 , d_dst , d_dst1 , 1 ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
cv : : Mat ocl_mat_dst1 ;
d_dst1 . download ( ocl_mat_dst1 ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst1 , dst1 , 0.5 ) & & ExpectedMatNear ( ocl_mat_dst , dst , 0.5 ) ) ;
GPU_ON ;
ocl : : cartToPolar ( d_src1 , d_src2 , d_dst , d_dst1 , 1 ) ;
GPU_OFF ;
@ -431,9 +405,15 @@ PERFTEST(CartToPolar)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : cartToPolar ( d_src1 , d_src2 , d_dst , d_dst1 , 1 ) ;
d_dst . download ( dst ) ;
d_dst1 . download ( dst1 ) ;
d_dst . download ( ocl_ dst) ;
d_dst1 . download ( ocl_ dst1) ;
GPU_FULL_OFF ;
double diff1 = checkNorm ( ocl_dst1 , dst1 ) ;
double diff2 = checkNorm ( ocl_dst , dst ) ;
double max_diff = max ( diff1 , diff2 ) ;
TestSystem : : instance ( ) . setAccurate ( max_diff < = .5 ? 1 : 0 , max_diff ) ;
}
}
@ -442,7 +422,7 @@ PERFTEST(CartToPolar)
///////////// PolarToCart ////////////////////////
PERFTEST ( PolarToCart )
{
Mat src1 , src2 , dst , dst1 ;
Mat src1 , src2 , dst , dst1 , ocl_dst , ocl_dst1 ;
ocl : : oclMat d_src1 , d_src2 , d_dst , d_dst1 ;
int all_type [ ] = { CV_32FC1 } ;
@ -472,14 +452,6 @@ PERFTEST(PolarToCart)
ocl : : polarToCart ( d_src1 , d_src2 , d_dst , d_dst1 , 1 ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
cv : : Mat ocl_mat_dst1 ;
d_dst1 . download ( ocl_mat_dst1 ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst1 , dst1 , 0.5 ) & & ExpectedMatNear ( ocl_mat_dst , dst , 0.5 ) ) ;
GPU_ON ;
ocl : : polarToCart ( d_src1 , d_src2 , d_dst , d_dst1 , 1 ) ;
GPU_OFF ;
@ -488,9 +460,15 @@ PERFTEST(PolarToCart)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : polarToCart ( d_src1 , d_src2 , d_dst , d_dst1 , 1 ) ;
d_dst . download ( dst ) ;
d_dst1 . download ( dst1 ) ;
d_dst . download ( ocl_ dst) ;
d_dst1 . download ( ocl_ dst1) ;
GPU_FULL_OFF ;
double diff1 = checkNorm ( ocl_dst1 , dst1 ) ;
double diff2 = checkNorm ( ocl_dst , dst ) ;
double max_diff = max ( diff1 , diff2 ) ;
TestSystem : : instance ( ) . setAccurate ( max_diff < = .5 ? 1 : 0 , max_diff ) ;
}
}
@ -499,7 +477,7 @@ PERFTEST(PolarToCart)
///////////// Magnitude ////////////////////////
PERFTEST ( magnitude )
{
Mat x , y , mag ;
Mat x , y , mag , ocl_mag ;
ocl : : oclMat d_x , d_y , d_mag ;
int all_type [ ] = { CV_32FC1 } ;
@ -526,11 +504,6 @@ PERFTEST(magnitude)
ocl : : magnitude ( d_x , d_y , d_mag ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_mag . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , mag , 1e-5 ) ) ;
GPU_ON ;
ocl : : magnitude ( d_x , d_y , d_mag ) ;
GPU_OFF ;
@ -539,8 +512,10 @@ PERFTEST(magnitude)
d_x . upload ( x ) ;
d_y . upload ( y ) ;
ocl : : magnitude ( d_x , d_y , d_mag ) ;
d_mag . download ( mag ) ;
d_mag . download ( ocl_ mag) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_mag , mag , 1e-5 ) ;
}
}
@ -549,7 +524,7 @@ PERFTEST(magnitude)
///////////// Transpose ////////////////////////
PERFTEST ( Transpose )
{
Mat src , dst ;
Mat src , dst , ocl_dst ;
ocl : : oclMat d_src , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_8UC4 } ;
@ -575,11 +550,6 @@ PERFTEST(Transpose)
ocl : : transpose ( d_src , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 1e-5 ) ) ;
GPU_ON ;
ocl : : transpose ( d_src , d_dst ) ;
GPU_OFF ;
@ -587,8 +557,10 @@ PERFTEST(Transpose)
GPU_FULL_ON ;
d_src . upload ( src ) ;
ocl : : transpose ( d_src , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 1e-5 ) ;
}
}
@ -597,7 +569,7 @@ PERFTEST(Transpose)
///////////// Flip ////////////////////////
PERFTEST ( Flip )
{
Mat src , dst ;
Mat src , dst , ocl_dst ;
ocl : : oclMat d_src , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_8UC4 } ;
@ -623,11 +595,6 @@ PERFTEST(Flip)
ocl : : flip ( d_src , d_dst , 0 ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 1e-5 ) ) ;
GPU_ON ;
ocl : : flip ( d_src , d_dst , 0 ) ;
GPU_OFF ;
@ -635,8 +602,10 @@ PERFTEST(Flip)
GPU_FULL_ON ;
d_src . upload ( src ) ;
ocl : : flip ( d_src , d_dst , 0 ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 1e-5 ) ;
}
}
@ -671,7 +640,10 @@ PERFTEST(minMax)
ocl : : minMax ( d_src , & min_val_ , & max_val_ ) ;
WARMUP_OFF ;
TestSystem : : instance ( ) . setAccurate ( EeceptDoubleEQ < double > ( max_val_ , max_val ) & & EeceptDoubleEQ < double > ( min_val_ , min_val ) ) ;
if ( EeceptDoubleEQ < double > ( max_val_ , max_val ) & & EeceptDoubleEQ < double > ( min_val_ , min_val ) )
TestSystem : : instance ( ) . setAccurate ( 1 , max ( fabs ( max_val_ - max_val ) , fabs ( min_val_ - min_val ) ) ) ;
else
TestSystem : : instance ( ) . setAccurate ( 0 , max ( fabs ( max_val_ - max_val ) , fabs ( min_val_ - min_val ) ) ) ;
GPU_ON ;
ocl : : minMax ( d_src , & min_val , & max_val ) ;
@ -724,8 +696,6 @@ PERFTEST(minMaxLoc)
minlocVal_ = src . at < unsigned char > ( min_loc_ ) ;
maxlocVal = src . at < unsigned char > ( max_loc ) ;
maxlocVal_ = src . at < unsigned char > ( max_loc_ ) ;
error0 = : : abs ( src . at < unsigned char > ( min_loc_ ) - src . at < unsigned char > ( min_loc ) ) ;
error1 = : : abs ( src . at < unsigned char > ( max_loc_ ) - src . at < unsigned char > ( max_loc ) ) ;
}
if ( src . depth ( ) = = 1 )
{
@ -733,8 +703,6 @@ PERFTEST(minMaxLoc)
minlocVal_ = src . at < signed char > ( min_loc_ ) ;
maxlocVal = src . at < signed char > ( max_loc ) ;
maxlocVal_ = src . at < signed char > ( max_loc_ ) ;
error0 = : : abs ( src . at < signed char > ( min_loc_ ) - src . at < signed char > ( min_loc ) ) ;
error1 = : : abs ( src . at < signed char > ( max_loc_ ) - src . at < signed char > ( max_loc ) ) ;
}
if ( src . depth ( ) = = 2 )
{
@ -742,8 +710,6 @@ PERFTEST(minMaxLoc)
minlocVal_ = src . at < unsigned short > ( min_loc_ ) ;
maxlocVal = src . at < unsigned short > ( max_loc ) ;
maxlocVal_ = src . at < unsigned short > ( max_loc_ ) ;
error0 = : : abs ( src . at < unsigned short > ( min_loc_ ) - src . at < unsigned short > ( min_loc ) ) ;
error1 = : : abs ( src . at < unsigned short > ( max_loc_ ) - src . at < unsigned short > ( max_loc ) ) ;
}
if ( src . depth ( ) = = 3 )
{
@ -751,8 +717,6 @@ PERFTEST(minMaxLoc)
minlocVal_ = src . at < signed short > ( min_loc_ ) ;
maxlocVal = src . at < signed short > ( max_loc ) ;
maxlocVal_ = src . at < signed short > ( max_loc_ ) ;
error0 = : : abs ( src . at < signed short > ( min_loc_ ) - src . at < signed short > ( min_loc ) ) ;
error1 = : : abs ( src . at < signed short > ( max_loc_ ) - src . at < signed short > ( max_loc ) ) ;
}
if ( src . depth ( ) = = 4 )
{
@ -760,8 +724,6 @@ PERFTEST(minMaxLoc)
minlocVal_ = src . at < int > ( min_loc_ ) ;
maxlocVal = src . at < int > ( max_loc ) ;
maxlocVal_ = src . at < int > ( max_loc_ ) ;
error0 = : : abs ( src . at < int > ( min_loc_ ) - src . at < int > ( min_loc ) ) ;
error1 = : : abs ( src . at < int > ( max_loc_ ) - src . at < int > ( max_loc ) ) ;
}
if ( src . depth ( ) = = 5 )
{
@ -769,8 +731,6 @@ PERFTEST(minMaxLoc)
minlocVal_ = src . at < float > ( min_loc_ ) ;
maxlocVal = src . at < float > ( max_loc ) ;
maxlocVal_ = src . at < float > ( max_loc_ ) ;
error0 = : : abs ( src . at < float > ( min_loc_ ) - src . at < float > ( min_loc ) ) ;
error1 = : : abs ( src . at < float > ( max_loc_ ) - src . at < float > ( max_loc ) ) ;
}
if ( src . depth ( ) = = 6 )
{
@ -778,16 +738,16 @@ PERFTEST(minMaxLoc)
minlocVal_ = src . at < double > ( min_loc_ ) ;
maxlocVal = src . at < double > ( max_loc ) ;
maxlocVal_ = src . at < double > ( max_loc_ ) ;
error0 = : : abs ( src . at < double > ( min_loc_ ) - src . at < double > ( min_loc ) ) ;
error1 = : : abs ( src . at < double > ( max_loc_ ) - src . at < double > ( max_loc ) ) ;
}
TestSystem : : instance ( ) . setAccurate ( EeceptDoubleEQ < double > ( error1 , 0.0 )
& & EeceptDoubleEQ < double > ( error0 , 0.0 )
& & EeceptDoubleEQ < double > ( maxlocVal_ , maxlocVal )
error0 = : : abs ( minlocVal_ - minlocVal ) ;
error1 = : : abs ( maxlocVal_ - maxlocVal ) ;
if ( EeceptDoubleEQ < double > ( maxlocVal_ , maxlocVal )
& & EeceptDoubleEQ < double > ( minlocVal_ , minlocVal )
& & EeceptDoubleEQ < double > ( max_val_ , max_val )
& & EeceptDoubleEQ < double > ( min_val_ , min_val ) ) ;
& & EeceptDoubleEQ < double > ( min_val_ , min_val ) )
TestSystem : : instance ( ) . setAccurate ( 1 , 0. ) ;
else
TestSystem : : instance ( ) . setAccurate ( 0 , max ( error0 , error1 ) ) ;
GPU_ON ;
ocl : : minMaxLoc ( d_src , & min_val , & max_val , & min_loc , & max_loc ) ;
@ -831,11 +791,13 @@ PERFTEST(Sum)
gpures = ocl : : sum ( d_src ) ;
WARMUP_OFF ;
TestSystem : : instance ( ) . setAccurate ( ExceptDoubleNear ( cpures [ 3 ] , gpures [ 3 ] , 0.1 )
& & ExceptDoubleNear ( cpures [ 2 ] , gpures [ 2 ] , 0.1 )
& & ExceptDoubleNear ( cpures [ 1 ] , gpures [ 1 ] , 0.1 )
& & ExceptDoubleNear ( cpures [ 0 ] , gpures [ 0 ] , 0.1 ) ) ;
vector < double > diffs ( 4 ) ;
diffs [ 3 ] = fabs ( cpures [ 3 ] - gpures [ 3 ] ) ;
diffs [ 2 ] = fabs ( cpures [ 2 ] - gpures [ 2 ] ) ;
diffs [ 1 ] = fabs ( cpures [ 1 ] - gpures [ 1 ] ) ;
diffs [ 0 ] = fabs ( cpures [ 0 ] - gpures [ 0 ] ) ;
double max_diff = * max_element ( diffs . begin ( ) , diffs . end ( ) ) ;
TestSystem : : instance ( ) . setAccurate ( max_diff < 0.1 ? 1 : 0 , max_diff ) ;
GPU_ON ;
gpures = ocl : : sum ( d_src ) ;
@ -879,7 +841,11 @@ PERFTEST(countNonZero)
gpures = ocl : : countNonZero ( d_src ) ;
WARMUP_OFF ;
TestSystem : : instance ( ) . setAccurate ( ( EeceptDoubleEQ < double > ( ( double ) cpures , ( double ) gpures ) ) ) ;
int diff = abs ( cpures - gpures ) ;
if ( diff = = 0 )
TestSystem : : instance ( ) . setAccurate ( 1 , 0 ) ;
else
TestSystem : : instance ( ) . setAccurate ( 0 , diff ) ;
GPU_ON ;
ocl : : countNonZero ( d_src ) ;
@ -897,7 +863,7 @@ PERFTEST(countNonZero)
///////////// Phase ////////////////////////
PERFTEST ( Phase )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
int all_type [ ] = { CV_32FC1 } ;
@ -913,12 +879,12 @@ PERFTEST(Phase)
gen ( src2 , size , size , all_type [ j ] , 0 , 256 ) ;
gen ( dst , size , size , all_type [ j ] , 0 , 256 ) ;
phase ( src1 , src2 , dst , 1 ) ;
CPU_ON ;
phase ( src1 , src2 , dst , 1 ) ;
CPU_OFF ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
@ -926,11 +892,6 @@ PERFTEST(Phase)
ocl : : phase ( d_src1 , d_src2 , d_dst , 1 ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 1e-2 ) ) ;
GPU_ON ;
ocl : : phase ( d_src1 , d_src2 , d_dst , 1 ) ;
GPU_OFF ;
@ -939,8 +900,10 @@ PERFTEST(Phase)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : phase ( d_src1 , d_src2 , d_dst , 1 ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 1e-2 ) ;
}
}
@ -949,7 +912,7 @@ PERFTEST(Phase)
///////////// bitwise_and////////////////////////
PERFTEST ( bitwise_and )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_32SC1 } ;
@ -965,7 +928,6 @@ PERFTEST(bitwise_and)
gen ( src2 , size , size , all_type [ j ] , 0 , 256 ) ;
gen ( dst , size , size , all_type [ j ] , 0 , 256 ) ;
bitwise_and ( src1 , src2 , dst ) ;
CPU_ON ;
@ -978,11 +940,6 @@ PERFTEST(bitwise_and)
ocl : : bitwise_and ( d_src1 , d_src2 , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 0.0 ) ) ;
GPU_ON ;
ocl : : bitwise_and ( d_src1 , d_src2 , d_dst ) ;
GPU_OFF ;
@ -991,8 +948,10 @@ PERFTEST(bitwise_and)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : bitwise_and ( d_src1 , d_src2 , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 0.0 ) ;
}
}
@ -1001,7 +960,7 @@ PERFTEST(bitwise_and)
///////////// bitwise_not////////////////////////
PERFTEST ( bitwise_not )
{
Mat src1 , dst ;
Mat src1 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_dst ;
int all_type [ ] = { CV_8UC1 , CV_32SC1 } ;
@ -1016,7 +975,6 @@ PERFTEST(bitwise_not)
gen ( src1 , size , size , all_type [ j ] , 0 , 256 ) ;
gen ( dst , size , size , all_type [ j ] , 0 , 256 ) ;
bitwise_not ( src1 , dst ) ;
CPU_ON ;
@ -1028,11 +986,6 @@ PERFTEST(bitwise_not)
ocl : : bitwise_not ( d_src1 , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 0.0 ) ) ;
GPU_ON ;
ocl : : bitwise_not ( d_src1 , d_dst ) ;
GPU_OFF ;
@ -1040,8 +993,10 @@ PERFTEST(bitwise_not)
GPU_FULL_ON ;
d_src1 . upload ( src1 ) ;
ocl : : bitwise_not ( d_src1 , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 0.0 ) ;
}
}
@ -1050,7 +1005,7 @@ PERFTEST(bitwise_not)
///////////// compare////////////////////////
PERFTEST ( compare )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
int CMP_EQ = 0 ;
@ -1067,12 +1022,12 @@ PERFTEST(compare)
gen ( src2 , size , size , all_type [ j ] , 0 , 256 ) ;
gen ( dst , size , size , all_type [ j ] , 0 , 256 ) ;
compare ( src1 , src2 , dst , CMP_EQ ) ;
CPU_ON ;
compare ( src1 , src2 , dst , CMP_EQ ) ;
CPU_OFF ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
@ -1080,11 +1035,6 @@ PERFTEST(compare)
ocl : : compare ( d_src1 , d_src2 , d_dst , CMP_EQ ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 0.0 ) ) ;
GPU_ON ;
ocl : : compare ( d_src1 , d_src2 , d_dst , CMP_EQ ) ;
GPU_OFF ;
@ -1093,8 +1043,10 @@ PERFTEST(compare)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : compare ( d_src1 , d_src2 , d_dst , CMP_EQ ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 0.0 ) ;
}
}
@ -1103,7 +1055,7 @@ PERFTEST(compare)
///////////// pow ////////////////////////
PERFTEST ( pow )
{
Mat src , dst ;
Mat src , dst , ocl_dst ;
ocl : : oclMat d_src , d_dst ;
int all_type [ ] = { CV_32FC1 } ;
@ -1129,11 +1081,6 @@ PERFTEST(pow)
ocl : : pow ( d_src , - 2.0 , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 1.0 ) ) ;
GPU_ON ;
ocl : : pow ( d_src , - 2.0 , d_dst ) ;
GPU_OFF ;
@ -1141,8 +1088,10 @@ PERFTEST(pow)
GPU_FULL_ON ;
d_src . upload ( src ) ;
ocl : : pow ( d_src , - 2.0 , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 1.0 ) ;
}
}
@ -1151,7 +1100,7 @@ PERFTEST(pow)
///////////// MagnitudeSqr////////////////////////
PERFTEST ( MagnitudeSqr )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
int all_type [ ] = { CV_32FC1 } ;
@ -1167,53 +1116,36 @@ PERFTEST(MagnitudeSqr)
gen ( src2 , size , size , all_type [ t ] , 0 , 256 ) ;
gen ( dst , size , size , all_type [ t ] , 0 , 256 ) ;
CPU_ON ;
for ( int i = 0 ; i < src1 . rows ; + + i )
for ( int j = 0 ; j < src1 . cols ; + + j )
{
float val1 = src1 . at < float > ( i , j ) ;
float val2 = src2 . at < float > ( i , j ) ;
( ( float * ) ( dst . data ) ) [ i * dst . step / 4 + j ] = val1 * val1 + val2 * val2 ;
}
CPU_OFF ;
CPU_ON ;
for ( int i = 0 ; i < src1 . rows ; + + i )
for ( int j = 0 ; j < src1 . cols ; + + j )
{
float val1 = src1 . at < float > ( i , j ) ;
float val2 = src2 . at < float > ( i , j ) ;
( ( float * ) ( dst . data ) ) [ i * dst . step / 4 + j ] = val1 * val1 + val2 * val2 ;
}
CPU_OFF ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
WARMUP_ON ;
ocl : : magnitudeSqr ( d_src1 , d_src2 , d_dst ) ;
WARMUP_OFF ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
WARMUP_ON ;
ocl : : magnitudeSqr ( d_src1 , d_src2 , d_dst ) ;
WARMUP_OFF ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 1.0 ) ) ;
GPU_ON ;
ocl : : magnitudeSqr ( d_src1 , d_src2 , d_dst ) ;
GPU_OFF ;
GPU_ON ;
ocl : : magnitudeSqr ( d_src1 , d_src2 , d_dst ) ;
GPU_OFF ;
GPU_FULL_ON ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : magnitudeSqr ( d_src1 , d_src2 , d_dst ) ;
d_dst . download ( ocl_dst ) ;
GPU_FULL_OFF ;
GPU_FULL_ON ;
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : magnitudeSqr ( d_src1 , d_src2 , d_dst ) ;
d_dst . download ( dst ) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 1.0 ) ;
}
}
@ -1222,7 +1154,7 @@ PERFTEST(MagnitudeSqr)
///////////// AddWeighted////////////////////////
PERFTEST ( AddWeighted )
{
Mat src1 , src2 , dst ;
Mat src1 , src2 , dst , ocl_dst ;
ocl : : oclMat d_src1 , d_src2 , d_dst ;
double alpha = 2.0 , beta = 1.0 , gama = 3.0 ;
@ -1252,11 +1184,6 @@ PERFTEST(AddWeighted)
ocl : : addWeighted ( d_src1 , alpha , d_src2 , beta , gama , d_dst ) ;
WARMUP_OFF ;
cv : : Mat ocl_mat_dst ;
d_dst . download ( ocl_mat_dst ) ;
TestSystem : : instance ( ) . setAccurate ( ExpectedMatNear ( ocl_mat_dst , dst , 1e-5 ) ) ;
GPU_ON ;
ocl : : addWeighted ( d_src1 , alpha , d_src2 , beta , gama , d_dst ) ;
GPU_OFF ;
@ -1265,8 +1192,10 @@ PERFTEST(AddWeighted)
d_src1 . upload ( src1 ) ;
d_src2 . upload ( src2 ) ;
ocl : : addWeighted ( d_src1 , alpha , d_src2 , beta , gama , d_dst ) ;
d_dst . download ( dst ) ;
d_dst . download ( ocl_ dst) ;
GPU_FULL_OFF ;
TestSystem : : instance ( ) . ExpectedMatNear ( ocl_dst , dst , 1e-5 ) ;
}
}