File: test_vec_half.cpp

package info (click to toggle)
pytorch 2.9.1%2Bdfsg-1~exp2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 180,096 kB
  • sloc: python: 1,473,255; cpp: 942,030; ansic: 79,796; asm: 7,754; javascript: 2,502; java: 1,962; sh: 1,809; makefile: 628; xml: 8
file content (22 lines) | stat: -rw-r--r-- 820 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <gtest/gtest.h>
#include <torch/headeronly/cpu/vec/vec_half.h>
#include <torch/headeronly/util/Half.h>

TEST(TestVecHalf, TestConversion) {
  float f32s[100];
  for (int i = 0; i < 100; i++) {
    f32s[i] = static_cast<float>(i + 0.3);
  }
  for (int i = 0; i < 100; i++) {
#if (defined(CPU_CAPABILITY_AVX2) || defined(CPU_CAPABILITY_AVX512)) && \
    !defined(__APPLE__)
    uint16_t u16 = torch::headeronly::vec::float2half_scalar(f32s[i]);
    float x = torch::headeronly::vec::half2float_scalar(u16);
    EXPECT_EQ(
        u16, torch::headeronly::detail::fp16_ieee_from_fp32_value(f32s[i]))
        << "Test failed for float to uint16 " << f32s[i] << "\n";
    EXPECT_EQ(x, torch::headeronly::detail::fp16_ieee_to_fp32_value(u16))
        << "Test failed for uint16 to float " << u16 << "\n";
#endif
  }
}