Commit eccf2fa4 authored by Tomoaki Teshima's avatar Tomoaki Teshima

follow other interface

  * remove useHW option
  * update test
parent b2ad7cd9
...@@ -533,7 +533,7 @@ CV_16S to represent the bit depth. If the input array is neither of them, it'll ...@@ -533,7 +533,7 @@ CV_16S to represent the bit depth. If the input array is neither of them, it'll
@param dst output array. @param dst output array.
@param useHW if possible use HW SIMD instruction to convert @param useHW if possible use HW SIMD instruction to convert
*/ */
CV_EXPORTS_W void convertFp16(InputArray src, OutputArray dst, bool useHW = true); CV_EXPORTS_W void convertFp16(InputArray src, OutputArray dst);
/** @brief Performs a look-up table transform of an array. /** @brief Performs a look-up table transform of an array.
......
...@@ -5117,9 +5117,10 @@ void cv::convertScaleAbs( InputArray _src, OutputArray _dst, double alpha, doubl ...@@ -5117,9 +5117,10 @@ void cv::convertScaleAbs( InputArray _src, OutputArray _dst, double alpha, doubl
} }
} }
void cv::convertFp16( InputArray _src, OutputArray _dst, bool useHW ) void cv::convertFp16( InputArray _src, OutputArray _dst)
{ {
if ( checkHardwareSupport(CV_CPU_FP16) == false) bool useHW = true;
if ( checkHardwareSupport(CV_CPU_FP16) == false )
{ {
useHW = false; useHW = false;
} }
......
...@@ -742,27 +742,29 @@ struct ConvertScaleFp16Op : public BaseElemWiseOp ...@@ -742,27 +742,29 @@ struct ConvertScaleFp16Op : public BaseElemWiseOp
ConvertScaleFp16Op() : BaseElemWiseOp(1, FIX_BETA+REAL_GAMMA, 1, 1, Scalar::all(0)), nextRange(0) { } ConvertScaleFp16Op() : BaseElemWiseOp(1, FIX_BETA+REAL_GAMMA, 1, 1, Scalar::all(0)), nextRange(0) { }
void op(const vector<Mat>& src, Mat& dst, const Mat&) void op(const vector<Mat>& src, Mat& dst, const Mat&)
{ {
convertFp16(src[0], dst, true); Mat m;
convertFp16(src[0], m);
convertFp16(m, dst);
} }
void refop(const vector<Mat>& src, Mat& dst, const Mat&) void refop(const vector<Mat>& src, Mat& dst, const Mat&)
{ {
convertFp16(src[0], dst, false); cvtest::copy(src[0], dst);
} }
int getRandomType(RNG&) int getRandomType(RNG&)
{ {
// 0: FP32 -> FP16 // 0: FP32 -> FP16 -> FP32
// 1: FP16 -> FP32 // 1: FP16 -> FP32 -> FP16
int srctype = (nextRange & 1) == 0 ? CV_32F : CV_16S; int srctype = (nextRange & 1) == 0 ? CV_32F : CV_16S;
return srctype; return srctype;
} }
void getValueRange(int, double& minval, double& maxval) void getValueRange(int, double& minval, double& maxval)
{ {
// 0: FP32 -> FP16 // 0: FP32 -> FP16 -> FP32
// 1: FP16 -> FP32 // 1: FP16 -> FP32 -> FP16
if( (nextRange & 1) == 0 ) if( (nextRange & 1) == 0 )
{ {
// largest integer number that fp16 can express // largest integer number that fp16 can express exactly
maxval = 65504.f; maxval = 2048.f;
minval = -maxval; minval = -maxval;
} }
else else
......
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