div_floor_floating_vec Class — pytorch Architecture
Architecture documentation for the div_floor_floating_vec class in BinaryOpsKernel.cpp from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/cpu/BinaryOpsKernel.cpp lines 254–275
template <typename scalar_t>
inline Vectorized<scalar_t> div_floor_floating_vec(
const Vectorized<scalar_t>& a,
const Vectorized<scalar_t>& b) {
using vec_t = Vectorized<scalar_t>;
const auto basic_div = a / b;
vec_t inf(std::numeric_limits<scalar_t>::infinity());
auto mod = a.fmod(b);
// Fixup for a case that isn't properly handled by Sleef_fmod
auto floor = vec_t::blendv(a - mod, a, (basic_div.abs() == inf) & (a.abs() != inf));
auto div = floor / b;
const auto zero = vec_t(0);
auto mask = (mod != zero) & ((b < zero) ^ (mod < zero));
const auto one = vec_t(1);
div = vec_t::blendv(div, div - one, mask);
auto floordiv = div.floor();
mask = (div - floordiv) > vec_t(0.5);
floordiv = vec_t::blendv(floordiv, floordiv + one, mask);
floordiv = vec_t::blendv(floordiv, zero.copysign(basic_div), div == zero);
floordiv = vec_t::blendv(floordiv, basic_div, b == zero);
return floordiv;
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free