Home / Class/ test_convert_to Class — pytorch Architecture

test_convert_to Class — pytorch Architecture

Architecture documentation for the test_convert_to class in vec_test_all_types.cpp from the pytorch codebase.

Entity Profile

Source Code

aten/src/ATen/test/vec_test_all_types.cpp lines 2200–2241

    template <typename vec, typename dst_t>
    void test_convert_to(const char* dst_t_name) {
      using src_t = ValueType<vec>;
      constexpr auto N = vec::size();
      CACHE_ALIGN src_t x[N];
      CACHE_ALIGN dst_t y[N];
      CACHE_ALIGN dst_t ref[N];
      auto seed = TestSeed();
      auto low = std::is_signed_v<dst_t> ? src_t(-100) : src_t(0);
      ValueGen<src_t> generator(low, src_t(100), seed);
      for (const auto i : c10::irange(N)) {
        x[i] = generator.get();
      }
      for (const auto i : c10::irange(N)) {
        ref[i] = static_cast<dst_t>(x[i]);
      }
      auto x_vec = vec::loadu(x);
      auto y_vec = at::vec::convert<dst_t>(x_vec);
      constexpr int num_dst_elements =
        std::min(N, at::vec::Vectorized<dst_t>::size());
      y_vec.store(y, num_dst_elements);
      for (const auto i : c10::irange(num_dst_elements)) {
        if (check_both_nan(y[i], ref[i])) {
          continue;
        }
        ASSERT_EQ(y[i], ref[i])
          << "Failure Details:nTest Seed to reproduce: " << seed
          << " x[" << i << "]=" << x[i] << " dst_t=" << dst_t_name;
      }
      constexpr int dst_n = N / num_dst_elements;
      auto y_vec_n = at::vec::convert<dst_t, dst_n, src_t, 1>(
          at::vec::VectorizedN<src_t, 1>(x_vec));
      y_vec_n.store(y, N);
      for (const auto i : c10::irange(N)) {
        if (check_both_nan(y[i], ref[i])) {
          continue;
        }
        ASSERT_EQ(y[i], ref[i])
          << "Failure Details:nTest Seed to reproduce: " << seed
          << " x[" << i << "]=" << x[i] << " dst_t=" << dst_t_name;
      }
    }

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free