compare_base_kernel_core Class — pytorch Architecture
Architecture documentation for the compare_base_kernel_core class in TensorCompareKernel.cpp from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/cpu/TensorCompareKernel.cpp lines 32–72
template <typename scalar_t, typename scalar_t_2 = int64_t, typename loop1d_t>
inline void compare_base_kernel_core(
const Tensor& result1,
const Tensor& result2,
const Tensor& self,
int64_t dim,
bool keepdim,
const loop1d_t& loop) {
auto self_sizes = ensure_nonempty_vec(self.sizes().vec());
self_sizes[dim] = 1;
// result1 and result2 may be a empty tensor, if not,
// reshape them as self dims
if (!keepdim) {
if (result1.ndimension() >= dim) {
result1.unsqueeze_(dim);
}
if (result2.ndimension() >= dim) {
result2.unsqueeze_(dim);
}
}
at::native::resize_output(result1, self_sizes);
at::native::resize_output(result2, self_sizes);
auto iter = TensorIteratorConfig()
.check_all_same_dtype(false)
.resize_outputs(false)
.declare_static_shape(self.sizes(), /*squash_dims=*/dim)
.add_output(result1)
.add_output(result2)
.add_const_input(self)
.build();
iter.for_each(loop, /* grain_size */ 1);
if (!keepdim) {
result1.squeeze_(dim);
result2.squeeze_(dim);
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free