diff options
Diffstat (limited to 'reference_model')
-rw-r--r-- | reference_model/src/generate/generate_utils.cc | 5 | ||||
-rw-r--r-- | reference_model/src/verify/verify_abs_error.cc | 2 | ||||
-rw-r--r-- | reference_model/src/verify/verify_ulp.cc | 9 | ||||
-rw-r--r-- | reference_model/src/verify/verify_utils.cc | 13 |
4 files changed, 15 insertions, 14 deletions
diff --git a/reference_model/src/generate/generate_utils.cc b/reference_model/src/generate/generate_utils.cc index 5546269..d2168c9 100644 --- a/reference_model/src/generate/generate_utils.cc +++ b/reference_model/src/generate/generate_utils.cc @@ -43,11 +43,14 @@ NLOHMANN_JSON_SERIALIZE_ENUM(Op, { Op::Op_ARGMAX, "ARGMAX" }, { Op::Op_AVG_POOL2D, "AVG_POOL2D" }, { Op::Op_CEIL, "CEIL" }, + { Op::Op_CLAMP, "CLAMP" }, { Op::Op_CONV2D, "CONV2D" }, + { Op::Op_ERF, "ERF" }, { Op::Op_EXP, "EXP" }, { Op::Op_FLOOR, "FLOOR" }, { Op::Op_FULLY_CONNECTED, "FULLY_CONNECTED" }, { Op::Op_IDENTITY, "IDENTITY" }, + { Op::Op_LOG, "LOG" }, { Op::Op_MATMUL, "MATMUL" }, { Op::Op_MAXIMUM, "MAXIMUM" }, { Op::Op_MAX_POOL2D, "MAX_POOL2D" }, @@ -61,7 +64,9 @@ NLOHMANN_JSON_SERIALIZE_ENUM(Op, { Op::Op_REDUCE_MAX, "REDUCE_MAX" }, { Op::Op_REDUCE_MIN, "REDUCE_MIN" }, { Op::Op_REDUCE_SUM, "REDUCE_SUM" }, + { Op::Op_SIGMOID, "SIGMOID" }, { Op::Op_SUB, "SUB" }, + { Op::Op_TANH, "TANH" }, }) } // namespace tosa diff --git a/reference_model/src/verify/verify_abs_error.cc b/reference_model/src/verify/verify_abs_error.cc index 1afa7fd..b43da08 100644 --- a/reference_model/src/verify/verify_abs_error.cc +++ b/reference_model/src/verify/verify_abs_error.cc @@ -32,7 +32,7 @@ bool validateData(const double* ref, const double* bnd, const float* imp, const for (size_t i = 0; i < T; ++i) { - double errBound = ref[i] * exp2(-AccPrecision<float>::normal_frac) * bnd[i]; + double errBound = std::abs(ref[i]) * exp2(-AccPrecision<float>::normal_frac) * bnd[i]; bool valid = tosaCheckFloatBound(imp[i], ref[i], errBound); if (!valid) { diff --git a/reference_model/src/verify/verify_ulp.cc b/reference_model/src/verify/verify_ulp.cc index b333810..6e78b96 100644 --- a/reference_model/src/verify/verify_ulp.cc +++ b/reference_model/src/verify/verify_ulp.cc @@ -30,15 +30,8 @@ bool tosaCheckULP(float testValue, double referenceValue, double ulpNum) double errorBound = 0.0; if (std::isfinite(referenceValue) && std::abs(referenceValue) != 0.0) { - // Make the sign of the reference value positive - // and adjust the test value appropriately. - if (referenceValue < 0) - { - referenceValue = -referenceValue; - testValue = -testValue; - } // Find the exponent of the reference value. - int32_t referenceExponent = ilog2(referenceValue); + int32_t referenceExponent = ilog2(std::abs(referenceValue)); // Work out the values magnitude - by raising 2 to the power of the // exponent and taking the normalized minimum for denormal values diff --git a/reference_model/src/verify/verify_utils.cc b/reference_model/src/verify/verify_utils.cc index 414f7d7..9aa6ba2 100644 --- a/reference_model/src/verify/verify_utils.cc +++ b/reference_model/src/verify/verify_utils.cc @@ -170,7 +170,11 @@ DType mapToDType(tosa_datatype_t dataType) // Like const_exp2 but for use during runtime double exp2(int32_t n) { - TOSA_REF_REQUIRE(-1022 <= n && n <= 1023, " Invalid exponent value (%d) in exp2", n); + if (n < -1075) + { + return 0.0; // smaller than smallest denormal + } + TOSA_REF_REQUIRE(n <= 1023, " Invalid exponent value (%d) in exp2", n); return const_exp2(n); } @@ -212,6 +216,9 @@ bool tosaCheckFloatBound(float testValue, double referenceValue, double errorBou return false; } + // Check the errorBound + TOSA_REF_REQUIRE(errorBound >= 0.f, " Invalid error bound (%g)", errorBound); + // Make the sign of the reference value positive // and adjust the test value appropriately. if (referenceValue < 0) @@ -219,10 +226,6 @@ bool tosaCheckFloatBound(float testValue, double referenceValue, double errorBou referenceValue = -referenceValue; testValue = -testValue; } - if (errorBound < 0) - { - errorBound = -errorBound; - } // At this point we are ready to calculate the ULP bounds for the reference value. double referenceMin, referenceMax; |