|
Uni20
Asynchronous tensor and runtime library.
|
Async Tensor wrappers for matrix-product overwrite and update operations. More...
#include <uni20/async/async.hpp>#include <uni20/async/awaiters.hpp>#include <uni20/async/debug_scheduler.hpp>#include <uni20/common/trace.hpp>#include <uni20/linalg/async/concepts.hpp>#include <uni20/linalg/async/detail/output.hpp>#include <uni20/linalg/async/dispatch.hpp>#include <uni20/linalg/ops/matrix_product.hpp>#include <uni20/tensor/output.hpp>#include <concepts>#include <memory>#include <tuple>#include <type_traits>#include <utility>Go to the source code of this file.
Namespaces | |
| namespace | uni20 |
| namespace | uni20::linalg |
Functions | |
| template<uni20::AsyncTensorOutput Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B> requires detail::CompatibleMatrixProductTensors<Output, A, B> | |
| void | uni20::linalg::add_product (async::Async< Output > &output, async::Async< A > const &a, async::Async< B > const &b, std::optional< Precision > p={}) |
| Schedule a unit-coefficient accumulation using storage-selected backends. | |
| template<uni20::MutableRankedTensorView< 2 > OutputTensor, uni20::RankedTensorView< 2 > LhsTensor, uni20::RankedTensorView< 2 > RhsTensor, class Alpha = uni20::tensor_element_t<OutputTensor>> requires uni20::AsyncTensorOutput<OutputTensor> && detail::CompatibleMatrixProductTensors<OutputTensor, LhsTensor, RhsTensor> && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::add_product (async::Async< OutputTensor > &output, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, Alpha &&alpha, std::optional< Precision > p={}) |
Schedule output += alpha * lhs * rhs using the static Tensor selector. | |
| template<class BackendSelector , uni20::MutableRankedTensorView< 2 > OutputTensor, uni20::RankedTensorView< 2 > LhsTensor, uni20::RankedTensorView< 2 > RhsTensor, class Alpha = uni20::tensor_element_t<OutputTensor>> requires uni20::AsyncTensorOutput<OutputTensor> && detail::CompatibleMatrixProductTensors<OutputTensor, LhsTensor, RhsTensor> && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::add_product (BackendSelector selector, async::Async< OutputTensor > &output, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, Alpha &&alpha, std::optional< Precision > p={}) |
Schedule output += alpha * lhs * rhs with an explicit backend selector. | |
| template<KernelBackendSelector Selector, uni20::AsyncTensorOutput Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B> requires detail::CompatibleMatrixProductTensors<Output, A, B> | |
| void | uni20::linalg::add_product (Selector selector, async::Async< Output > &output, async::Async< A > const &a, async::Async< B > const &b, std::optional< Precision > p={}) |
| Schedule a unit-coefficient accumulation at inferred or explicit precision. | |
| template<uni20::AsyncTensorOutput Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B> requires detail::CompatibleMatrixProductTensors<Output, A, B> | |
| void | uni20::linalg::assign_product (async::Async< Output > &output, async::Async< A > const &a, async::Async< B > const &b, std::optional< Precision > p={}) |
| Schedule a unit-coefficient product using storage-selected backends. | |
| template<uni20::MutableRankedTensorView< 2 > OutputTensor, uni20::RankedTensorView< 2 > LhsTensor, uni20::RankedTensorView< 2 > RhsTensor, class Alpha = uni20::tensor_element_t<OutputTensor>> requires uni20::AsyncTensorOutput<OutputTensor> && detail::CompatibleMatrixProductTensors<OutputTensor, LhsTensor, RhsTensor> && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::assign_product (async::Async< OutputTensor > &output, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, Alpha &&alpha, std::optional< Precision > p={}) |
Schedule output = alpha * lhs * rhs using the static Tensor selector. | |
| template<class BackendSelector , uni20::MutableRankedTensorView< 2 > OutputTensor, uni20::RankedTensorView< 2 > LhsTensor, uni20::RankedTensorView< 2 > RhsTensor, class Alpha = uni20::tensor_element_t<OutputTensor>> requires uni20::AsyncTensorOutput<OutputTensor> && detail::CompatibleMatrixProductTensors<OutputTensor, LhsTensor, RhsTensor> && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::assign_product (BackendSelector selector, async::Async< OutputTensor > &output, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, Alpha &&alpha, std::optional< Precision > p={}) |
Schedule output = alpha * lhs * rhs with an explicit backend selector. | |
| template<KernelBackendSelector Selector, uni20::AsyncTensorOutput Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B> requires detail::CompatibleMatrixProductTensors<Output, A, B> | |
| void | uni20::linalg::assign_product (Selector selector, async::Async< Output > &output, async::Async< A > const &a, async::Async< B > const &b, std::optional< Precision > p={}) |
| Schedule a unit-coefficient product at inferred or explicit precision. | |
| template<uni20::MutableRankedTensorView< 2 > OutputTensor, uni20::RankedTensorView< 2 > LhsTensor, uni20::RankedTensorView< 2 > RhsTensor, class Alpha , class Beta > requires uni20::AsyncTensorOutput<OutputTensor> && detail::CompatibleMatrixProductTensors<OutputTensor, LhsTensor, RhsTensor> && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> && AsyncOperationScalar<Beta, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::gemm (async::Async< OutputTensor > &output, Alpha &&alpha, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, Beta &&beta, std::optional< Precision > p={}) |
| Schedule fixed-output GEMM using the static Tensor selector. | |
| template<class BackendSelector , uni20::MutableRankedTensorView< 2 > OutputTensor, uni20::RankedTensorView< 2 > LhsTensor, uni20::RankedTensorView< 2 > RhsTensor, class Alpha , class Beta > requires uni20::AsyncTensorOutput<OutputTensor> && detail::CompatibleMatrixProductTensors<OutputTensor, LhsTensor, RhsTensor> && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> && AsyncOperationScalar<Beta, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::gemm (BackendSelector selector, async::Async< OutputTensor > &output, Alpha &&alpha, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, Beta &&beta, std::optional< Precision > p={}) |
| Schedule fixed-output GEMM with an explicit backend selector. | |
Async Tensor wrappers for matrix-product overwrite and update operations.