Commit 74d97e51 authored by Rostyslav Geyyer's avatar Rostyslav Geyyer
Browse files

Update fp8 test

parent 4bdfaa30
...@@ -12,10 +12,10 @@ using ck::type_convert; ...@@ -12,10 +12,10 @@ using ck::type_convert;
TEST(FP8, NumericLimits) TEST(FP8, NumericLimits)
{ {
EXPECT_EQ(ck::NumericLimits<f8_t>::Min(), 0x08); EXPECT_EQ(ck::NumericLimits<f8_t>::Min().data, 0x08);
EXPECT_EQ(ck::NumericLimits<f8_t>::Max(), 0x77); EXPECT_EQ(ck::NumericLimits<f8_t>::Max().data, 0x77);
EXPECT_EQ(ck::NumericLimits<f8_t>::Lowest(), 0xF7); EXPECT_EQ(ck::NumericLimits<f8_t>::Lowest().data, 0xF7);
EXPECT_EQ(ck::NumericLimits<f8_t>::QuietNaN(), 0x80); EXPECT_EQ(ck::NumericLimits<f8_t>::QuietNaN().data, 0x80);
} }
TEST(FP8, ConvertFP32Nearest) TEST(FP8, ConvertFP32Nearest)
...@@ -35,7 +35,7 @@ TEST(FP8, ConvertFP32Nearest) ...@@ -35,7 +35,7 @@ TEST(FP8, ConvertFP32Nearest)
type_convert<float>(type_convert<f8_t>(std::numeric_limits<float>::max())), type_convert<float>(type_convert<f8_t>(std::numeric_limits<float>::max())),
abs_tol); abs_tol);
// convert inf float to f8_t and check if it is qNan // convert inf float to f8_t and check if it is qNan
ASSERT_NEAR(0x80, type_convert<f8_t>(std::numeric_limits<float>::infinity()), abs_tol); ASSERT_NEAR(0x80, type_convert<f8_t>(std::numeric_limits<float>::infinity()).data, abs_tol);
// positive float value to fp8 and back, check if holds // positive float value to fp8 and back, check if holds
float pos_float = 0.0078125f; float pos_float = 0.0078125f;
ASSERT_NEAR(pos_float, type_convert<float>(type_convert<f8_t>(pos_float)), abs_tol); ASSERT_NEAR(pos_float, type_convert<float>(type_convert<f8_t>(pos_float)), abs_tol);
...@@ -61,7 +61,7 @@ TEST(FP8, ConvertFP32Stochastic) ...@@ -61,7 +61,7 @@ TEST(FP8, ConvertFP32Stochastic)
type_convert<float>(f8_convert_sr<f8_t>(std::numeric_limits<float>::max())), type_convert<float>(f8_convert_sr<f8_t>(std::numeric_limits<float>::max())),
abs_tol); abs_tol);
// convert inf float to f8_t and check if it is qNan // convert inf float to f8_t and check if it is qNan
ASSERT_NEAR(0x80, f8_convert_sr<f8_t>(std::numeric_limits<float>::infinity()), abs_tol); ASSERT_NEAR(0x80, f8_convert_sr<f8_t>(std::numeric_limits<float>::infinity()).data, abs_tol);
// positive float value to fp8 and back, check if holds // positive float value to fp8 and back, check if holds
float pos_float = 0.0078125f; float pos_float = 0.0078125f;
ASSERT_NEAR(pos_float, type_convert<float>(f8_convert_sr<f8_t>(pos_float)), abs_tol); ASSERT_NEAR(pos_float, type_convert<float>(f8_convert_sr<f8_t>(pos_float)), abs_tol);
...@@ -87,7 +87,7 @@ TEST(FP8, ConvertFP16Nearest) ...@@ -87,7 +87,7 @@ TEST(FP8, ConvertFP16Nearest)
type_convert<half_t>(type_convert<f8_t>(ck::NumericLimits<half_t>::Max())), type_convert<half_t>(type_convert<f8_t>(ck::NumericLimits<half_t>::Max())),
abs_tol); abs_tol);
// convert QuietNaN fp16 to f8_t and check if it is QuietNaN // convert QuietNaN fp16 to f8_t and check if it is QuietNaN
ASSERT_NEAR(0x80, type_convert<f8_t>(ck::NumericLimits<half_t>::QuietNaN()), abs_tol); ASSERT_NEAR(0x80, type_convert<f8_t>(ck::NumericLimits<half_t>::QuietNaN()).data, abs_tol);
// positive fp16 value to fp8 and back, check if holds // positive fp16 value to fp8 and back, check if holds
half_t pos_half = half_t{0.0078125}; half_t pos_half = half_t{0.0078125};
ASSERT_NEAR(pos_half, type_convert<half_t>(type_convert<f8_t>(pos_half)), abs_tol); ASSERT_NEAR(pos_half, type_convert<half_t>(type_convert<f8_t>(pos_half)), abs_tol);
...@@ -113,7 +113,7 @@ TEST(FP8, ConvertFP16Stochastic) ...@@ -113,7 +113,7 @@ TEST(FP8, ConvertFP16Stochastic)
type_convert<half_t>(f8_convert_sr<f8_t>(ck::NumericLimits<half_t>::Max())), type_convert<half_t>(f8_convert_sr<f8_t>(ck::NumericLimits<half_t>::Max())),
abs_tol); abs_tol);
// convert QuietNaN fp16 to f8_t and check if it is QuietNaN // convert QuietNaN fp16 to f8_t and check if it is QuietNaN
ASSERT_NEAR(0x80, f8_convert_sr<f8_t>(ck::NumericLimits<half_t>::QuietNaN()), abs_tol); ASSERT_NEAR(0x80, f8_convert_sr<f8_t>(ck::NumericLimits<half_t>::QuietNaN()).data, abs_tol);
// positive fp16 value to fp8 and back, check if holds // positive fp16 value to fp8 and back, check if holds
half_t pos_half = half_t{0.0078125}; half_t pos_half = half_t{0.0078125};
ASSERT_NEAR(pos_half, type_convert<half_t>(f8_convert_sr<f8_t>(pos_half)), abs_tol); ASSERT_NEAR(pos_half, type_convert<half_t>(f8_convert_sr<f8_t>(pos_half)), abs_tol);
......
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