Qrack
1.7
General classical-emulating-quantum development framework
|
Classes | |
struct | Complex16Simd |
SIMD implementation of the double precision complex type. More... | |
struct | Complex16x2Simd |
SIMD implementation of the double precision complex vector type of 2 complex numbers, only for AVX Apply2x2. More... | |
class | OCLEngine |
"Qrack::OCLEngine" manages the single OpenCL context. More... | |
class | ParallelFor |
class | QEngineCPU |
General purpose QEngineCPU implementation. More... | |
class | QEngineOCL |
OpenCL enhanced QEngineCPU implementation. More... | |
struct | QEngineShard |
Associates a QInterface object with a set of bits. More... | |
class | QInterface |
A "Qrack::QInterface" is an abstract interface exposing qubit permutation state vector with methods to operate on it as by gates and register-like instructions. More... | |
class | QUnit |
Typedefs | |
typedef std::shared_ptr< QEngineCPU > | QEngineCPUPtr |
typedef std::shared_ptr< QInterface > | QInterfacePtr |
typedef std::shared_ptr< QUnit > | QUnitPtr |
Enumerations | |
enum | QInterfaceEngine { QINTERFACE_CPU = 0, QINTERFACE_OPENCL, QINTERFACE_QUNIT, QINTERFACE_FIRST = QINTERFACE_CPU, QINTERFACE_OPTIMAL = QINTERFACE_CPU, QINTERFACE_MAX } |
Enumerated list of supported engines. More... | |
Functions | |
Complex16Simd | operator* (const double &lhs, const Complex16Simd &rhs) |
Complex16Simd | operator/ (const double &lhs, const Complex16Simd &rhs) |
double | real (const Complex16Simd &cmplx) |
double | imag (const Complex16Simd &cmplx) |
double | arg (const Complex16Simd &cmplx) |
Complex16Simd | conj (const Complex16Simd &cmplx) |
double | norm (const Complex16Simd &cmplx) |
double | abs (const Complex16Simd &cmplx) |
Complex16Simd | polar (const double rho, const double theta=0) |
Complex16x2Simd | dupeLo (const Complex16x2Simd &cmplx2) |
Complex16x2Simd | dupeHi (const Complex16x2Simd &cmplx2) |
Complex16x2Simd | matrixMul (const Complex16x2Simd &mtrxCol1, const Complex16x2Simd &mtrxCol2, const Complex16x2Simd &qubit) |
Complex16x2Simd | matrixMul (const double &nrm, const Complex16x2Simd &mtrxCol1, const Complex16x2Simd &mtrxCol2, const Complex16x2Simd &qubit) |
Complex16x2Simd | operator* (const double lhs, const Complex16x2Simd &rhs) |
template<class BidirectionalIterator > | |
void | reverse (BidirectionalIterator first, BidirectionalIterator last, bitCapInt stride) |
template<class BidirectionalIterator > | |
void | rotate (BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last, bitCapInt stride) |
template<typename... Ts> | |
QInterfacePtr | CreateQuantumInterface (QInterfaceEngine engine, QInterfaceEngine subengine, Ts...args) |
Factory method to create specific engine implementations. More... | |
template void | rotate< complex * > (complex *first, complex *middle, complex *last, bitCapInt stride) |
typedef std::shared_ptr<QEngineCPU> Qrack::QEngineCPUPtr |
typedef std::shared_ptr<QInterface> Qrack::QInterfacePtr |
typedef std::shared_ptr<QUnit> Qrack::QUnitPtr |
Enumerated list of supported engines.
Use QINTERFACE_OPTIMAL for the best supported engine.
Enumerator | |
---|---|
QINTERFACE_CPU |
Create a QEngineCPU leveraging only local CPU and memory resources. |
QINTERFACE_OPENCL |
Create a QEngineOCL, derived from QEngineCPU, leveraging OpenCL hardware to increase the speed of certain calculations. |
QINTERFACE_QUNIT |
Create a QUnit, which utilizes other QInterface classes to minimize the amount of work that's needed for any given operation based on the entanglement of the bits involved. This, combined with QINTERFACE_OPTIMAL, is the recommended object to use as a library consumer. |
QINTERFACE_FIRST | |
QINTERFACE_OPTIMAL | |
QINTERFACE_MAX |
|
inline |
|
inline |
|
inline |
QInterfacePtr Qrack::CreateQuantumInterface | ( | QInterfaceEngine | engine, |
QInterfaceEngine | subengine, | ||
Ts... | args | ||
) |
Factory method to create specific engine implementations.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
void Qrack::reverse | ( | BidirectionalIterator | first, |
BidirectionalIterator | last, | ||
bitCapInt | stride | ||
) |
void Qrack::rotate | ( | BidirectionalIterator | first, |
BidirectionalIterator | middle, | ||
BidirectionalIterator | last, | ||
bitCapInt | stride | ||
) |