quantize_val Class — pytorch Architecture
Architecture documentation for the quantize_val class in AffineQuantizerBase.cpp from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/quantized/AffineQuantizerBase.cpp lines 37–54
template <typename T>
T quantize_val(double scale, int64_t zero_point, float value) {
// Internally, fbgemm::Quantize uses std::nearbyint.
// std::nearbyint results in nearest integer value according to the current
// rounding mode and the default rounding mode is rounds to even in half-way
// cases in most popular processor architectures like x86 and ARM. This is
// typically faster than an alternatives like std::round that rounds half-way
// cases away from zero, and can be consistent with SIMD implementations for
// example in x86 using _mm512_cvtps_epi32 or mm512_round_ps with
// _MM_FROUND_CUR_DIRECTION option that also follow the current rounding mode.
// NOLINTNEXTLINE(bugprone-signed-char-misuse)
auto qvalue = fbgemm::Quantize<typename T::underlying, false /*LEGACY*/>(
value,
static_cast<int32_t>(zero_point),
static_cast<float>(scale),
/*result_precision=*/CHAR_BIT * sizeof(typename T::underlying));
return static_cast<T>(qvalue);
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free