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

Tensor-level matrix product update and overwrite operations. More...

#include <uni20/common/trace.hpp>
#include <uni20/linalg/matrix_product_shape.hpp>
#include <uni20/linalg/ops/gemm.hpp>
#include <uni20/mdspan/mdspan.hpp>
#include <uni20/tensor/output.hpp>
#include <concepts>
#include <memory>
#include <type_traits>
#include <utility>
Include dependency graph for ops/matrix_product.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  uni20
 
namespace  uni20::linalg
 

Functions

template<MutableRankedTensorView< 2 > Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B, class Alpha >
requires detail::CompatibleMatrixProductTensors<Output, A, B> && OperationScalar<Alpha, tensor_element_t<Output>>
void uni20::linalg::add_product (Output &&output, A const &a, B const &b, Alpha const &alpha, std::optional< Precision > p={})
 Apply add_product using the storage-selected backend.
 
template<MutableRankedTensorView< 2 > Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B>
requires detail::CompatibleMatrixProductTensors<Output, A, B>
void uni20::linalg::add_product (Output &&output, A const &a, B const &b, std::optional< Precision > p={})
 Apply unit-coefficient add_product using storage-selected backends.
 
template<KernelBackendSelector Selector, MutableRankedTensorView< 2 > Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B, class Alpha >
requires detail::CompatibleMatrixProductTensors<Output, A, B> && OperationScalar<Alpha, tensor_element_t<Output>>
void uni20::linalg::add_product (Selector &&selector, Output &&output, A const &a, B const &b, Alpha const &alpha, std::optional< Precision > requested={})
 Accumulate alpha * a * b into an existing fixed-shape output.
 
template<KernelBackendSelector Selector, MutableRankedTensorView< 2 > Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B>
requires detail::CompatibleMatrixProductTensors<Output, A, B>
void uni20::linalg::add_product (Selector &&selector, Output &&output, A const &a, B const &b, std::optional< Precision > p={})
 Apply add_product with an exact unit coefficient and optional precision.
 
template<MutableRankedTensorView< 2 > Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B, class Alpha >
requires detail::CompatibleMatrixProductTensors<Output, A, B> && OperationScalar<Alpha, tensor_element_t<Output>>
void uni20::linalg::assign_product (Output &&output, A const &a, B const &b, Alpha const &alpha, std::optional< Precision > p={})
 Apply assign_product using the storage-selected backend.
 
template<MutableRankedTensorView< 2 > Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B>
requires detail::CompatibleMatrixProductTensors<Output, A, B>
void uni20::linalg::assign_product (Output &&output, A const &a, B const &b, std::optional< Precision > p={})
 Apply unit-coefficient assign_product using storage-selected backends.
 
template<KernelBackendSelector Selector, MutableRankedTensorView< 2 > Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B, class Alpha >
requires detail::CompatibleMatrixProductTensors<Output, A, B> && OperationScalar<Alpha, tensor_element_t<Output>>
void uni20::linalg::assign_product (Selector &&selector, Output &&output, A const &a, B const &b, Alpha const &alpha, std::optional< Precision > requested={})
 Overwrite a resizable or already-compatible output with alpha * a * b.
 
template<KernelBackendSelector Selector, MutableRankedTensorView< 2 > Output, RankedTensorView< 2 > A, RankedTensorView< 2 > B>
requires detail::CompatibleMatrixProductTensors<Output, A, B>
void uni20::linalg::assign_product (Selector &&selector, Output &&output, A const &a, B const &b, std::optional< Precision > p={})
 Apply assign_product with an exact unit coefficient and optional precision.
 

Detailed Description

Tensor-level matrix product update and overwrite operations.