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;
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free