|
Uni20
Asynchronous tensor and runtime library.
|
Async Tensor wrapper for fixed-output pairwise contraction. 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/contract.hpp>#include <array>#include <cstddef>#include <memory>#include <tuple>#include <utility>Go to the source code of this file.
Namespaces | |
| namespace | uni20 |
| namespace | uni20::linalg |
Functions | |
| template<uni20::AsyncTensorOutput OutputTensor, uni20::TensorView LhsTensor, uni20::TensorView RhsTensor, class Alpha , class Beta , 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> && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> && AsyncOperationScalar<Beta, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::contract (async::Async< OutputTensor > &output, Alpha &&alpha, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, ContractionAxes< LhsRank, RhsRank, ContractedRank > axes, Beta &&beta) |
| Schedule a fixed-output pairwise contraction using static Tensor policy. | |
| template<uni20::AsyncTensorOutput OutputTensor, uni20::TensorView LhsTensor, uni20::TensorView RhsTensor, class Alpha , class Beta , 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) && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> && AsyncOperationScalar<Beta, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::contract (async::Async< OutputTensor > &output, Alpha &&alpha, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, std::array< std::pair< std::size_t, std::size_t >, ContractedRank > requested_axes, Beta &&beta) |
| Schedule a fixed-output pairwise contraction from raw axis pairs using static Tensor policy. | |
| template<KernelBackendSelector BackendSelector, uni20::AsyncTensorOutput OutputTensor, uni20::TensorView LhsTensor, uni20::TensorView RhsTensor, class Alpha , class Beta , 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> && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> && AsyncOperationScalar<Beta, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::contract (BackendSelector selector, async::Async< OutputTensor > &output, Alpha &&alpha, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, ContractionAxes< LhsRank, RhsRank, ContractedRank > axes, Beta &&beta) |
| Schedule a fixed-output pairwise contraction through an explicit selector. | |
| template<KernelBackendSelector BackendSelector, uni20::AsyncTensorOutput OutputTensor, uni20::TensorView LhsTensor, uni20::TensorView RhsTensor, class Alpha , class Beta , 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) && AsyncOperationScalar<Alpha, uni20::tensor_element_t<OutputTensor>> && AsyncOperationScalar<Beta, uni20::tensor_element_t<OutputTensor>> | |
| void | uni20::linalg::contract (BackendSelector selector, async::Async< OutputTensor > &output, Alpha &&alpha, async::Async< LhsTensor > const &lhs, async::Async< RhsTensor > const &rhs, std::array< std::pair< std::size_t, std::size_t >, ContractedRank > requested_axes, Beta &&beta) |
| Schedule a fixed-output pairwise contraction from raw axis pairs through an explicit selector. | |
Async Tensor wrapper for fixed-output pairwise contraction.