|
Uni20
Asynchronous tensor and runtime library.
|
Fixed-output pairwise Tensor contraction front end. More...
#include <uni20/common/trace.hpp>#include <uni20/linalg/backends/cpu/contract.hpp>#include <uni20/linalg/backends/direct_gemm/contract.hpp>#include <uni20/linalg/backends/looped_gemm/contract.hpp>#include <uni20/linalg/contraction_axes.hpp>#include <uni20/linalg/dispatch.hpp>#include <uni20/linalg/operation_tags.hpp>#include <uni20/tensor/concepts.hpp>#include <uni20/tensor/output.hpp>#include <array>#include <concepts>#include <cstddef>#include <memory>#include <tuple>#include <type_traits>#include <utility>Go to the source code of this file.
Classes | |
| struct | uni20::linalg::backend_selector_default< contract_op< LhsRank, RhsRank, ContractedRank >, StoragePolicy > |
| Install GEMM contraction strategies around a storage execution selector. More... | |
Namespaces | |
| namespace | uni20 |
| namespace | uni20::linalg |
Functions | |
| template<class BackendSelector , class OutputTensor , class LhsTensor , class RhsTensor , std::size_t LhsRank, std::size_t RhsRank, std::size_t ContractedRank> requires detail::CompatibleContractionTensors<OutputTensor, LhsTensor, RhsTensor> && uni20::MutableRankedTensorView<OutputTensor, ContractionAxes<LhsRank, RhsRank, ContractedRank>::output_rank> && uni20::RankedTensorView<LhsTensor, LhsRank> && uni20::RankedTensorView<RhsTensor, RhsRank> | |
| void | uni20::linalg::contract (BackendSelector &&selector, OutputTensor &&output, uni20::tensor_element_t< OutputTensor > alpha, LhsTensor const &lhs, RhsTensor const &rhs, ContractionAxes< LhsRank, RhsRank, ContractedRank > axes, uni20::tensor_element_t< OutputTensor > beta) |
| Contract two tensors into an existing fixed-storage output. | |
| template<class BackendSelector , class OutputTensor , class LhsTensor , class RhsTensor , std::size_t ContractedRank> requires detail::CompatibleContractionTensors<OutputTensor, LhsTensor, RhsTensor> && (ContractedRank <= uni20::tensor_mdspec_t<LhsTensor>::rank()) && (ContractedRank <= uni20::tensor_mdspec_t<RhsTensor>::rank()) && (uni20::tensor_mdspec_t<OutputTensor>::rank() == uni20::tensor_mdspec_t<LhsTensor>::rank() + uni20::tensor_mdspec_t<RhsTensor>::rank() - 2 * ContractedRank) | |
| void | uni20::linalg::contract (BackendSelector &&selector, OutputTensor &&output, uni20::tensor_element_t< OutputTensor > alpha, LhsTensor const &lhs, RhsTensor const &rhs, std::array< std::pair< std::size_t, std::size_t >, ContractedRank > requested_axes, uni20::tensor_element_t< OutputTensor > beta) |
| Contract two tensors using an explicit selector and raw axis pairs. | |
| template<class OutputTensor , class LhsTensor , class RhsTensor , std::size_t LhsRank, std::size_t RhsRank, std::size_t ContractedRank> requires detail::CompatibleContractionTensors<OutputTensor, LhsTensor, RhsTensor> && uni20::MutableRankedTensorView<OutputTensor, ContractionAxes<LhsRank, RhsRank, ContractedRank>::output_rank> && uni20::RankedTensorView<LhsTensor, LhsRank> && uni20::RankedTensorView<RhsTensor, RhsRank> | |
| void | uni20::linalg::contract (OutputTensor &&output, uni20::tensor_element_t< OutputTensor > alpha, LhsTensor const &lhs, RhsTensor const &rhs, ContractionAxes< LhsRank, RhsRank, ContractedRank > axes, uni20::tensor_element_t< OutputTensor > beta) |
| Contract two tensors using their default backend selector. | |
| template<class OutputTensor , class LhsTensor , class RhsTensor , std::size_t ContractedRank> requires detail::CompatibleContractionTensors<OutputTensor, LhsTensor, RhsTensor> && (ContractedRank <= uni20::tensor_mdspec_t<LhsTensor>::rank()) && (ContractedRank <= uni20::tensor_mdspec_t<RhsTensor>::rank()) && (uni20::tensor_mdspec_t<OutputTensor>::rank() == uni20::tensor_mdspec_t<LhsTensor>::rank() + uni20::tensor_mdspec_t<RhsTensor>::rank() - 2 * ContractedRank) | |
| void | uni20::linalg::contract (OutputTensor &&output, uni20::tensor_element_t< OutputTensor > alpha, LhsTensor const &lhs, RhsTensor const &rhs, std::array< std::pair< std::size_t, std::size_t >, ContractedRank > requested_axes, uni20::tensor_element_t< OutputTensor > beta) |
| Contract two tensors using storage policy and raw axis pairs. | |
Fixed-output pairwise Tensor contraction front end.