bitwise_binary_op Class — pytorch Architecture
Architecture documentation for the bitwise_binary_op class in vec_base.h from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/cpu/vec/vec_base.h lines 1011–1037
template <class T, typename Op>
static inline Vectorized<T> bitwise_binary_op(
const Vectorized<T>& a,
const Vectorized<T>& b,
Op op) {
int_vector buffer;
#if defined(CPU_CAPABILITY_AVX2)
int_vector a_buffer =
_mm256_load_si256(reinterpret_cast<const int_vector*>((const T*)a));
int_vector b_buffer =
_mm256_load_si256(reinterpret_cast<const int_vector*>((const T*)b));
#elif defined(CPU_CAPABILITY_AVX512)
int_vector a_buffer =
_mm512_load_si512(reinterpret_cast<const int_vector*>((const T*)a));
int_vector b_buffer =
_mm512_load_si512(reinterpret_cast<const int_vector*>((const T*)b));
#endif
buffer = op(a_buffer, b_buffer);
__at_align__ T results[Vectorized<T>::size()];
#if defined(CPU_CAPABILITY_AVX2)
_mm256_store_si256(reinterpret_cast<int_vector*>(results), buffer);
#elif defined(CPU_CAPABILITY_AVX512)
_mm512_store_si512(reinterpret_cast<int_vector*>(results), buffer);
#endif
return Vectorized<T>::loadu(results);
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free