Maestro 0.3.11
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Utils::detail Namespace Reference

Classes

struct  TensorAxis
class  TensorAxisCursor
class  TensorAxisMask
class  TensorAxisOffsets
struct  TensorAxisPattern
class  TensorContractionPlan

Functions

bool TensorAddBytes (size_t &used, size_t count, size_t elementSize, size_t limit)
template<class Pairs>
std::vector< size_t > TensorContractionDimensions (const std::vector< size_t > &da, const std::vector< size_t > &db, const Pairs &pairs, TensorAxisMask &usedA, TensorAxisMask &usedB)
template<class Pairs>
void TensorContractionPatterns (const std::vector< size_t > &da, const std::vector< size_t > &db, const TensorAxisMask &usedA, const TensorAxisMask &usedB, const Pairs &pairs, TensorAxisPattern &fa, TensorAxisPattern &fb, TensorAxisPattern &ka, TensorAxisPattern &kb)
int TensorContractionThreads (size_t jobs, double work, bool allow)
template<class T, class Storage>
void TensorDenseContraction (const Storage &a, const Storage &b, Storage &out, const TensorAxisPattern &fa, const TensorAxisPattern &fb, const TensorAxisPattern &ka, const TensorAxisPattern &kb, bool allow, int gateSize=0)
template<class T, class Input, class Output>
void TensorExecuteContraction (const Input &a, const Input &b, Output &out, const TensorAxisPattern &fa, const TensorAxisPattern &fb, const TensorAxisPattern &ka, const TensorAxisPattern &kb, const TensorAxisOffsets &af, const TensorAxisOffsets &bf, const TensorAxisOffsets &ac, const TensorAxisOffsets &bc, int gateSize, bool allow, T *packing=nullptr)
template<size_t G, bool SmallLeft, class T, class Input, class Output>
void TensorGateContraction (const Input &a, const Input &b, Output &out, size_t count, const TensorAxisOffsets &af, const TensorAxisOffsets &bf, const TensorAxisOffsets &ac, const TensorAxisOffsets &bc, bool allow)
template<size_t G, class T, size_t... X>
T TensorGateProduct (const std::array< T, G > &values, const T *coefficients, std::index_sequence< X... >)
int TensorGateSize (const std::vector< size_t > &da, const std::vector< size_t > &db, size_t pairs)
bool TensorMatrixContiguous (const TensorAxisPattern &rows, const TensorAxisPattern &columns)
template<class Function>
void TensorParallelRanges (size_t jobs, int threads, const Function &function)
template<class T, class Storage>
T TensorScalarContraction (const Storage &a, const Storage &b, const TensorAxisPattern &ka, const TensorAxisPattern &kb, bool allow)
size_t TensorSizeProduct (size_t a, size_t b)
template<class T, class Storage, class Pairs>
bool TensorSmallContraction (const Storage &a, const Storage &b, Storage &out, const std::vector< size_t > &da, const std::vector< size_t > &db, const TensorAxisMask &usedA, const TensorAxisMask &usedB, const Pairs &pairs)

Variables

template<class T, class Storage>
constexpr bool TensorEigenStorage

Class Documentation

◆ Utils::detail::TensorAxis

struct Utils::detail::TensorAxis

Definition at line 57 of file TensorContraction.h.

Collaboration diagram for Utils::detail::TensorAxis:
Class Members
size_t extent
size_t stride

Function Documentation

◆ TensorAddBytes()

bool Utils::detail::TensorAddBytes ( size_t & used,
size_t count,
size_t elementSize,
size_t limit )
inline

◆ TensorContractionDimensions()

template<class Pairs>
std::vector< size_t > Utils::detail::TensorContractionDimensions ( const std::vector< size_t > & da,
const std::vector< size_t > & db,
const Pairs & pairs,
TensorAxisMask & usedA,
TensorAxisMask & usedB )

Definition at line 133 of file TensorContraction.h.

◆ TensorContractionPatterns()

template<class Pairs>
void Utils::detail::TensorContractionPatterns ( const std::vector< size_t > & da,
const std::vector< size_t > & db,
const TensorAxisMask & usedA,
const TensorAxisMask & usedB,
const Pairs & pairs,
TensorAxisPattern & fa,
TensorAxisPattern & fb,
TensorAxisPattern & ka,
TensorAxisPattern & kb )

◆ TensorContractionThreads()

int Utils::detail::TensorContractionThreads ( size_t jobs,
double work,
bool allow )
inline

◆ TensorDenseContraction()

template<class T, class Storage>
void Utils::detail::TensorDenseContraction ( const Storage & a,
const Storage & b,
Storage & out,
const TensorAxisPattern & fa,
const TensorAxisPattern & fb,
const TensorAxisPattern & ka,
const TensorAxisPattern & kb,
bool allow,
int gateSize = 0 )

◆ TensorExecuteContraction()

template<class T, class Input, class Output>
void Utils::detail::TensorExecuteContraction ( const Input & a,
const Input & b,
Output & out,
const TensorAxisPattern & fa,
const TensorAxisPattern & fb,
const TensorAxisPattern & ka,
const TensorAxisPattern & kb,
const TensorAxisOffsets & af,
const TensorAxisOffsets & bf,
const TensorAxisOffsets & ac,
const TensorAxisOffsets & bc,
int gateSize,
bool allow,
T * packing = nullptr )

◆ TensorGateContraction()

template<size_t G, bool SmallLeft, class T, class Input, class Output>
void Utils::detail::TensorGateContraction ( const Input & a,
const Input & b,
Output & out,
size_t count,
const TensorAxisOffsets & af,
const TensorAxisOffsets & bf,
const TensorAxisOffsets & ac,
const TensorAxisOffsets & bc,
bool allow )

◆ TensorGateProduct()

template<size_t G, class T, size_t... X>
T Utils::detail::TensorGateProduct ( const std::array< T, G > & values,
const T * coefficients,
std::index_sequence< X... >  )

Definition at line 387 of file TensorContraction.h.

Referenced by TensorGateContraction().

◆ TensorGateSize()

int Utils::detail::TensorGateSize ( const std::vector< size_t > & da,
const std::vector< size_t > & db,
size_t pairs )
inline

Definition at line 192 of file TensorContraction.h.

◆ TensorMatrixContiguous()

◆ TensorParallelRanges()

template<class Function>
void Utils::detail::TensorParallelRanges ( size_t jobs,
int threads,
const Function & function )

◆ TensorScalarContraction()

◆ TensorSizeProduct()

size_t Utils::detail::TensorSizeProduct ( size_t a,
size_t b )
inline

◆ TensorSmallContraction()

template<class T, class Storage, class Pairs>
bool Utils::detail::TensorSmallContraction ( const Storage & a,
const Storage & b,
Storage & out,
const std::vector< size_t > & da,
const std::vector< size_t > & db,
const TensorAxisMask & usedA,
const TensorAxisMask & usedB,
const Pairs & pairs )

Definition at line 333 of file TensorContraction.h.

Variable Documentation

◆ TensorEigenStorage

template<class T, class Storage>
bool Utils::detail::TensorEigenStorage
constexpr
Initial value:
=
(std::is_same_v<T, float> || std::is_same_v<T, double> || std::is_same_v<T, std::complex<float>> ||
std::is_same_v<T, std::complex<double>>)&&(std::is_same_v<Storage, std::valarray<T>> || std::is_same_v<Storage, std::vector<T>> ||
std::is_same_v<Storage, const T *> || std::is_same_v<Storage, T *>)

Definition at line 291 of file TensorContraction.h.

Referenced by TensorExecuteContraction(), and TensorScalarContraction().