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

Staged host singular value decompositions of bosonic Abelian BlockTensor values. More...

#include <uni20/async/debug_scheduler.hpp>
#include <uni20/common/performance_measurements.hpp>
#include <uni20/core/math.hpp>
#include <uni20/core/scalar_concepts.hpp>
#include <uni20/linalg/elementwise_functions.hpp>
#include <uni20/linalg/ops/svd.hpp>
#include <uni20/linalg/ops/truncated_svd.hpp>
#include <uni20/symmetry/block_tensor.hpp>
#include <uni20/symmetry/block_tensor_concepts.hpp>
#include <uni20/symmetry/block_tensor_linear.hpp>
#include <uni20/tensor/copy.hpp>
#include <uni20/tensor/mdspec_tensor_view.hpp>
#include <uni20/tensor/tensor.hpp>
#include <uni20/tensor/transform.hpp>
#include <algorithm>
#include <array>
#include <cstddef>
#include <cstdint>
#include <functional>
#include <map>
#include <memory>
#include <numeric>
#include <optional>
#include <ranges>
#include <span>
#include <stdexcept>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>
Include dependency graph for block_tensor_svd.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  uni20::BlockSvdDecomposition< Scalar, DomainType, CodomainType, BlockExecutionPolicy, MatrixTensor, SingularValueTensor, AllocationContext >
 Intermediate per-sector block SVD retaining factors and logical basis maps. More...
 
struct  uni20::BlockSvdDecomposition< Scalar, DomainType, CodomainType, BlockExecutionPolicy, MatrixTensor, SingularValueTensor, AllocationContext >::Sector
 Provider result and logical fragment maps for one charge sector. More...
 
struct  uni20::BlockSvdMaterialization< LeftTensor, SingularValues, RightAdjointTensor, TruncationInfo >
 Materialized paired factors and statistics for one SVD selection. More...
 
struct  uni20::BlockSvdMaterializationOptions
 Options controlling one selected block-SVD materialization. More...
 
class  uni20::BlockSvdSelection< Real >
 Arbitrary paired-state selection from a block-SVD spectrum. More...
 
struct  uni20::BlockSvdState< Real >
 One charge-labelled entry in a globally sorted singular spectrum. More...
 
struct  uni20::BlockSvdStateId
 Stable identity of one paired or side-specific block-SVD state. More...
 
class  uni20::BlockSvdVectorSelection
 Selection of singular vectors which need not form paired triplets. More...
 

Namespaces

namespace  uni20
 

Functions

template<ImmediateBlockTensorView Tensor, class Measurements , class Event >
requires uni20::LapackScalar<block_tensor_value_t<Tensor>> && performance::BatchMeasurementPolicy<Measurements, Event>
auto uni20::block_svd (Tensor const &tensor, linalg::SvdOptions options, Measurements &measurements, Event batch_event)
 Factorize an immediate BlockTensorView with performance measurements.
 
template<ImmediateBlockTensorView Tensor, class Measurements , class Event , class Factorizer >
requires uni20::LapackScalar<block_tensor_value_t<Tensor>> && performance::BatchMeasurementPolicy<Measurements, Event>
auto uni20::block_svd (Tensor const &tensor, linalg::SvdOptions options, Measurements &measurements, Event batch_event, Factorizer &&factorizer)
 Factorize an immediate BlockTensorView independently by conserved charge with performance measurements.
 
template<ImmediateBlockTensorView Tensor>
requires uni20::LapackScalar<block_tensor_value_t<Tensor>>
auto uni20::block_svd (Tensor const &tensor, linalg::SvdOptions options={})
 Factorize an immediate BlockTensorView independently by conserved charge.
 
template<uni20::Real Real>
auto uni20::complement_svd_selection (std::span< BlockSvdState< Real > const > spectrum, BlockSvdSelection< Real > const &selection) -> BlockSvdSelection< Real >
 Select every paired state not present in an existing selection.
 
template<uni20::Real Real>
auto uni20::make_svd_selection (std::span< BlockSvdState< Real > const > spectrum, std::span< BlockSvdStateId const > requested) -> BlockSvdSelection< Real >
 Build an arbitrary paired-state selection and its exact statistics.
 
template<class Decomposition , detail::BlockSvdStateSelection Selection>
auto uni20::materialize_left_singular_vectors (Decomposition const &decomposition, Selection const &selection, BlockSvdMaterializationOptions options={})
 Materialize selected left singular vectors, including full null-space vectors.
 
template<class Decomposition , detail::BlockSvdStateSelection Selection>
auto uni20::materialize_right_singular_vectors_adjoint (Decomposition const &decomposition, Selection const &selection, BlockSvdMaterializationOptions options={})
 Materialize selected right singular vectors adjoint, including full null-space vectors.
 
template<class Decomposition >
auto uni20::materialize_svd (Decomposition const &decomposition, BlockSvdSelection< typename Decomposition::real_type > const &selection, BlockSvdMaterializationOptions options={})
 Materialize paired left, singular-value, and right-adjoint factors.
 
template<uni20::Real Real>
auto uni20::select_svd_states (std::span< BlockSvdState< Real > const > spectrum, linalg::SvdTruncationPolicy< Real > const &policy) -> BlockSvdSelection< Real >
 Apply the standard truncation policy to a globally sorted block-SVD spectrum.
 

Detailed Description

Staged host singular value decompositions of bosonic Abelian BlockTensor values.