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

Dispatchable sparse R/A/B/C block contraction. More...

#include <uni20/linalg/backend_selector.hpp>
#include <uni20/linalg/dispatch.hpp>
#include <uni20/symmetry/block_tensor_concepts.hpp>
#include <uni20/tensor_network/backends/right_first_rabc.hpp>
#include <uni20/tensor_network/rabc_contraction_plan.hpp>
#include <uni20/tensor_network/rabc_operation.hpp>
#include <concepts>
#include <memory>
#include <stdexcept>
#include <type_traits>
#include <utility>
Include dependency graph for rabc_contraction.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  uni20::linalg::backend_selector_default< tensor_network::rabc_contract_op, StoragePolicy >
 Install the storage-domain right-first R/A/B/C strategy around a block storage selector. More...
 

Namespaces

namespace  uni20
 
namespace  uni20::linalg
 
namespace  uni20::tensor_network
 

Functions

template<class IntermediateStorage , class ContractionSelector , detail::WritableRabcTensor Output, RabcPlan Plan, detail::ReadableRabcTensor A, detail::ReadableRabcTensor B, detail::ReadableRabcTensor C>
requires detail::CompatibleRabcOperands<Output, Plan, A, B, C>
auto uni20::tensor_network::prepare_rabc_contract (linalg::backend_list< RightFirstRabcBackend< IntermediateStorage, ContractionSelector > > selector, Output const &output, Plan plan, A const &a, B const &b, C const &c)
 Prepare the single right-first backend selected for fixed R/A/B/C operands.
 
template<detail::WritableRabcTensor Output, RabcPlan Plan, detail::ReadableRabcTensor A, detail::ReadableRabcTensor B, detail::ReadableRabcTensor C>
requires detail::CompatibleRabcOperands<Output, Plan, A, B, C>
auto uni20::tensor_network::prepare_rabc_contract (Output const &output, Plan plan, A const &a, B const &b, C const &c)
 Select and prepare the R/A/B/C backend for one fixed block structure.
 
template<linalg::KernelBackendSelector BackendSelector, MutableBlockTensorView Output, RabcPlan Plan, BlockTensorView A, BlockTensorView B, BlockTensorView C>
void uni20::tensor_network::rabc_contract (BackendSelector &&selector, Output &output, Plan const &plan, A const &a, B const &b, C const &c)
 Execute a fixed-output sparse R/A/B/C contraction with an explicit backend selector.
 
template<MutableBlockTensorView Output, RabcPlan Plan, BlockTensorView A, BlockTensorView B, BlockTensorView C>
void uni20::tensor_network::rabc_contract (Output &output, Plan const &plan, A const &a, B const &b, C const &c)
 Execute a sparse R/A/B/C contraction using the output storage policy.
 

Detailed Description

Dispatchable sparse R/A/B/C block contraction.