Я занимаюсь исследованием разложения Холецкого, которое требует некоторого понимания того, как работает torch.cholesky
. Через некоторое время поиска и поиска в ATen я застрял в TensorMethods.h, который интересно имеет следующий код:
inline Tensor Tensor::cholesky(bool upper) const {
#ifdef USE_STATIC_DISPATCH
return TypeDefault::cholesky(const_cast<Tensor&>(*this), upper);
#else
static c10::OperatorHandle op = c10::Dispatcher::singleton().findSchema({"aten::cholesky", ""}).value();
return c10::Dispatcher::singleton().callUnboxed<Tensor, const Tensor &, bool>(
op, impl::dispatchTypeId(at::detail::multi_dispatch_tensor_type_set(*this)), const_cast<Tensor&>(*this), upper);
#endif
}
Это подняло вопрос о том, как torch находит свои методы. Спасибо!