Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Namespaces | Typedefs | Functions
dispatch.hpp File Reference

Operation-tag backend dispatch over tensor-view operands. More...

#include <uni20/common/trace.hpp>
#include <uni20/linalg/backend_selector.hpp>
#include <uni20/linalg/dispatch_diagnostics.hpp>
#include <uni20/linalg/dispatch_error.hpp>
#include <uni20/linalg/dispatch_error_presentation.hpp>
#include <array>
#include <concepts>
#include <optional>
#include <span>
#include <string>
#include <string_view>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
Include dependency graph for dispatch.hpp:

Go to the source code of this file.

Namespaces

namespace  uni20
 
namespace  uni20::linalg
 

Typedefs

template<class BackendSelector , class Op , class... Args>
using uni20::linalg::kernel_type_candidates_t = typename detail::KernelTypeCandidates< detail::normalized_backend_selector_t< BackendSelector >, std::remove_cvref_t< Op >, Args... >::type
 Ordered backend-list type whose entries accept the operation argument types.
 

Functions

template<class BackendSelector , class Op , class... Args>
requires detail::KernelDispatchTypesAccepted<detail::normalized_backend_selector_t<BackendSelector>, Op, Args...>
void uni20::linalg::dispatch_kernel (BackendSelector &&selector, Op op, Args &&... args)
 Normalize a selector and dispatch or report that every eligible backend declined.
 
template<class BackendSelector , class Op , class... Args>
void uni20::linalg::dynamic_dispatch_kernel (BackendSelector &&selector, Op op, Args &&... args)
 Dynamically dispatch an operation, raising even type-level rejection at runtime.
 
template<class BackendSelector , class Op , class... Args>
constexpr auto uni20::linalg::kernel_type_candidates (BackendSelector &&selector, Op const &, Args &&...)
 Filter a backend selector to candidates accepting the call's argument types.
 
template<class BackendSelector , class Op , class... Args>
constexpr KernelTypeAcceptance uni20::linalg::probe_dispatch_kernel (BackendSelector &&, Op const &, Args &&...)
 Probe whether a backend selector can dispatch an operation for the argument types.
 
template<class BackendSelector , class Op , class... Args>
consteval KernelTypeAcceptance uni20::linalg::probe_dispatch_kernel_types ()
 Probe whether a backend selector type can dispatch operation argument types.
 
template<class BackendSelector , class Op , class... Args>
requires detail::KernelDispatchTypesAccepted<detail::normalized_backend_selector_t<BackendSelector>, Op, Args...>
bool uni20::linalg::try_dispatch_kernel (BackendSelector &&selector, Op op, Args &&... args)
 Normalize a selector and try each eligible backend until one performs the operation.
 

Detailed Description

Operation-tag backend dispatch over tensor-view operands.