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

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>
Include dependency graph for linalg/async/contract.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<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.
 

Detailed Description

Async Tensor wrapper for fixed-output pairwise contraction.