AllowLegacyTypes Class — pytorch Architecture
Architecture documentation for the AllowLegacyTypes class in KernelFunction_impl.h from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/core/boxing/KernelFunction_impl.h lines 228–250
template <bool AllowLegacyTypes, class KernelFunctor>
inline KernelFunction KernelFunction::makeFromUnboxedFunctor(
std::unique_ptr<OperatorKernel> kernelFunctor) {
#ifndef NDEBUG
// This assertion is costly for build time so it's debug-gated.
static_assert(
guts::is_functor<KernelFunctor>::value,
"Tried to call KernelFunction::makeFromUnboxedFunctor<KernelFunctor> but the argument is not a functor.");
#endif
static_assert(
std::is_base_of_v<OperatorKernel, KernelFunctor>,
"Tried to call KernelFunction::makeFromUnboxedFunctor<KernelFunctor>, but the functor doesn't inherit from c10::OperatorKernel. Please have the functor inherit from it.");
auto* unboxed_fn = &impl::wrap_kernel_functor_unboxed<KernelFunctor>::call;
void* void_unboxed_fn = reinterpret_cast<void*>(unboxed_fn);
bool is_symint = fn_has_symint<decltype(unboxed_fn)>::value;
return KernelFunction(
std::move(kernelFunctor),
&impl::make_boxed_from_unboxed_functor<KernelFunctor, AllowLegacyTypes>::
call,
is_symint ? nullptr : void_unboxed_fn,
is_symint ? void_unboxed_fn : nullptr);
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free