Qrack  10.0
General classical-emulating-quantum development framework
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
Qrack::StateVectorTurboQuant Class Reference

#include <statevector_turboquant.hpp>

Inheritance diagram for Qrack::StateVectorTurboQuant:
Inheritance graph
[legend]
Collaboration diagram for Qrack::StateVectorTurboQuant:
Collaboration graph
[legend]

Public Member Functions

 StateVectorTurboQuant (bitCapIntOcl cap, int p, int b, const complex *copyIn)
 
bitCapIntOcl get_size ()
 
void save (std::ostream &os) const
 
complex read (const bitCapInt &i)
 
complex read (const bitCapIntOcl &i)
 
void write (const bitCapInt &i, const complex &c)
 
void write (const bitCapIntOcl &i, const complex &c)
 
void write2 (const bitCapInt &i1, const complex &c1, const bitCapInt &i2, const complex &c2)
 
void write2 (const bitCapIntOcl &i1, const complex &c1, const bitCapIntOcl &i2, const complex &c2)
 Optimized "write" that is only guaranteed to write if either amplitude is nonzero. More...
 
void clear ()
 
void copy_in (const complex *copyIn)
 
void copy_in (const complex *copyIn, const bitCapIntOcl offset, const bitCapIntOcl length)
 
void copy_in (StateVectorPtr sv, const bitCapIntOcl src, const bitCapIntOcl dst, const bitCapIntOcl len)
 
void copy_out (complex *out)
 
void copy_out (complex *out, const bitCapIntOcl offset, const bitCapIntOcl length)
 
void copy (StateVectorPtr toCopy)
 
void shuffle (StateVectorPtr svp)
 
void get_probs (real1 *outArray)
 
bool is_sparse ()
 
- Public Member Functions inherited from Qrack::StateVector
 StateVector (bitCapIntOcl cap)
 
virtual ~StateVector ()
 
- Public Member Functions inherited from Qrack::ParallelFor
 ParallelFor ()
 
void SetConcurrencyLevel (unsigned num)
 
unsigned GetConcurrencyLevel ()
 
bitCapIntOcl GetStride ()
 
bitLenInt GetPreferredConcurrencyPower ()
 
void par_for_inc (const bitCapIntOcl begin, const bitCapIntOcl itemCount, IncrementFunc, ParallelFunc fn)
 Iterate through the permutations a maximum of end-begin times, allowing the caller to control the incrementation offset through 'inc'. More...
 
void par_for_inc_sparse (const bitCapIntOcl begin, const bitCapIntOcl itemCount, IncrementFuncSparse, ParallelFuncSparse fn)
 
void par_for (const bitCapIntOcl begin, const bitCapIntOcl end, ParallelFunc fn)
 Call fn once for every numerical value between begin and end. More...
 
void par_for_skip (const bitCapIntOcl begin, const bitCapIntOcl end, const bitCapIntOcl skipPower, const bitLenInt skipBitCount, ParallelFunc fn)
 Skip over the skipPower bits. More...
 
void par_for_mask (const bitCapIntOcl, const bitCapIntOcl, const std::vector< bitCapIntOcl > &maskArray, ParallelFunc fn)
 Skip over the bits listed in maskArray in the same fashion as par_for_skip. More...
 
void par_for_set (const std::set< bitCapInt > &sparseSet, ParallelFuncSparse fn)
 Iterate over a sparse state vector. More...
 
void par_for_set (const std::vector< bitCapInt > &sparseSet, ParallelFuncSparse fn)
 Iterate over a sparse state vector. More...
 
void par_for_sparse_compose (const std::vector< bitCapInt > &lowSet, const std::vector< bitCapInt > &highSet, const bitLenInt &highStart, ParallelFuncSparse fn)
 Iterate over the power set of 2 sparse state vectors. More...
 
real1_f par_norm (const bitCapIntOcl maxQPower, const StateVectorPtr stateArray, real1_f norm_thresh=ZERO_R1_F)
 Calculate the normal for the array, (with flooring). More...
 
real1_f par_norm_exact (const bitCapIntOcl maxQPower, const StateVectorPtr stateArray)
 Calculate the normal for the array, (without flooring.) More...
 

Static Public Member Functions

static StateVectorTurboQuantPtr load (std::istream &is)
 

Protected Member Functions

size_t block_of (const bitCapIntOcl i) const
 
size_t offset_in (const bitCapIntOcl i) const
 
template<typename F >
void with_block (const size_t b, F &&f)
 

Protected Attributes

size_t BLOCK
 
size_t num_blocks
 
std::vector< TurboBlockblocks
 
std::vector< std::mutex > block_mutexes
 
- Protected Attributes inherited from Qrack::StateVector
bitCapIntOcl capacity
 

Friends

std::ostream & operator<< (std::ostream &os, const StateVectorTurboQuant &sv)
 
std::istream & operator>> (std::istream &is, StateVectorTurboQuantPtr &sv)
 

Additional Inherited Members

- Public Attributes inherited from Qrack::StateVector
bool isReadLocked
 

Constructor & Destructor Documentation

◆ StateVectorTurboQuant()

Qrack::StateVectorTurboQuant::StateVectorTurboQuant ( bitCapIntOcl  cap,
int  p,
int  b,
const complex copyIn 
)
inline

Member Function Documentation

◆ block_of()

size_t Qrack::StateVectorTurboQuant::block_of ( const bitCapIntOcl  i) const
inlineprotected

◆ clear()

void Qrack::StateVectorTurboQuant::clear ( )
inlinevirtual

Implements Qrack::StateVector.

◆ copy()

void Qrack::StateVectorTurboQuant::copy ( StateVectorPtr  toCopy)
inlinevirtual

Implements Qrack::StateVector.

◆ copy_in() [1/3]

void Qrack::StateVectorTurboQuant::copy_in ( const complex copyIn)
inlinevirtual

Implements Qrack::StateVector.

◆ copy_in() [2/3]

void Qrack::StateVectorTurboQuant::copy_in ( const complex copyIn,
const bitCapIntOcl  offset,
const bitCapIntOcl  length 
)
inlinevirtual

Implements Qrack::StateVector.

◆ copy_in() [3/3]

void Qrack::StateVectorTurboQuant::copy_in ( StateVectorPtr  sv,
const bitCapIntOcl  src,
const bitCapIntOcl  dst,
const bitCapIntOcl  len 
)
inlinevirtual

Implements Qrack::StateVector.

◆ copy_out() [1/2]

void Qrack::StateVectorTurboQuant::copy_out ( complex out)
inlinevirtual

Implements Qrack::StateVector.

◆ copy_out() [2/2]

void Qrack::StateVectorTurboQuant::copy_out ( complex out,
const bitCapIntOcl  offset,
const bitCapIntOcl  length 
)
inlinevirtual

Implements Qrack::StateVector.

◆ get_probs()

void Qrack::StateVectorTurboQuant::get_probs ( real1 outArray)
inlinevirtual

Implements Qrack::StateVector.

◆ get_size()

bitCapIntOcl Qrack::StateVectorTurboQuant::get_size ( )
inline

◆ is_sparse()

bool Qrack::StateVectorTurboQuant::is_sparse ( )
inlinevirtual

Implements Qrack::StateVector.

◆ load()

static StateVectorTurboQuantPtr Qrack::StateVectorTurboQuant::load ( std::istream &  is)
inlinestatic

◆ offset_in()

size_t Qrack::StateVectorTurboQuant::offset_in ( const bitCapIntOcl  i) const
inlineprotected

◆ read() [1/2]

complex Qrack::StateVectorTurboQuant::read ( const bitCapInt i)
inlinevirtual

Implements Qrack::StateVector.

◆ read() [2/2]

complex Qrack::StateVectorTurboQuant::read ( const bitCapIntOcl i)
inlinevirtual

Implements Qrack::StateVector.

◆ save()

void Qrack::StateVectorTurboQuant::save ( std::ostream &  os) const
inline

◆ shuffle()

void Qrack::StateVectorTurboQuant::shuffle ( StateVectorPtr  svp)
inlinevirtual

Implements Qrack::StateVector.

◆ with_block()

template<typename F >
void Qrack::StateVectorTurboQuant::with_block ( const size_t  b,
F &&  f 
)
inlineprotected

◆ write() [1/2]

void Qrack::StateVectorTurboQuant::write ( const bitCapInt i,
const complex c 
)
inlinevirtual

Implements Qrack::StateVector.

◆ write() [2/2]

void Qrack::StateVectorTurboQuant::write ( const bitCapIntOcl i,
const complex c 
)
inlinevirtual

Implements Qrack::StateVector.

◆ write2() [1/2]

void Qrack::StateVectorTurboQuant::write2 ( const bitCapInt i1,
const complex c1,
const bitCapInt i2,
const complex c2 
)
inlinevirtual

Implements Qrack::StateVector.

◆ write2() [2/2]

void Qrack::StateVectorTurboQuant::write2 ( const bitCapIntOcl i1,
const complex c1,
const bitCapIntOcl i2,
const complex c2 
)
inlinevirtual

Optimized "write" that is only guaranteed to write if either amplitude is nonzero.

(Useful for the result of 2x2 tensor slicing.)

Implements Qrack::StateVector.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const StateVectorTurboQuant sv 
)
friend

◆ operator>>

std::istream& operator>> ( std::istream &  is,
StateVectorTurboQuantPtr sv 
)
friend

Member Data Documentation

◆ BLOCK

size_t Qrack::StateVectorTurboQuant::BLOCK
protected

◆ block_mutexes

std::vector<std::mutex> Qrack::StateVectorTurboQuant::block_mutexes
protected

◆ blocks

std::vector<TurboBlock> Qrack::StateVectorTurboQuant::blocks
protected

◆ num_blocks

size_t Qrack::StateVectorTurboQuant::num_blocks
protected

The documentation for this class was generated from the following file: