Qrack
1.7
General classical-emulating-quantum development framework
|
Classes | |
union | _cmplx_union |
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... | |
struct | Complex8x2Simd |
SIMD implementation of the float precision complex vector type of 2 complex numbers, only for COMPLEX_X_2 Apply2x2. More... | |
class | OCLDeviceCall |
class | OCLDeviceContext |
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... | |
class | QEngineOCLMulti |
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< OCLDeviceContext > | DeviceContextPtr |
typedef std::shared_ptr< QEngineCPU > | QEngineCPUPtr |
typedef std::shared_ptr< cl::Buffer > | BufferPtr |
typedef std::shared_ptr< QEngineOCL > | QEngineOCLPtr |
typedef std::shared_ptr< QEngineOCLMulti > | QEngineOCLMultiPtr |
typedef std::shared_ptr< QInterface > | QInterfacePtr |
typedef std::shared_ptr< QUnit > | QUnitPtr |
Enumerations | |
enum | OCLAPI { OCL_API_UNKNOWN = 0, OCL_API_APPLY2X2, OCL_API_APPLY2X2_NORM, OCL_API_COHERE, OCL_API_DECOHEREPROB, OCL_API_DECOHEREAMP, OCL_API_DISPOSEPROB, OCL_API_PROB, OCL_API_X, OCL_API_SWAP, OCL_API_ROL, OCL_API_ROR, OCL_API_INC, OCL_API_DEC, OCL_API_INCC, OCL_API_DECC, OCL_API_INCS, OCL_API_DECS, OCL_API_INCSC_1, OCL_API_DECSC_1, OCL_API_INCSC_2, OCL_API_DECSC_2, OCL_API_INCBCD, OCL_API_DECBCD, OCL_API_INCBCDC, OCL_API_DECBCDC, OCL_API_INDEXEDLDA, OCL_API_INDEXEDADC, OCL_API_INDEXEDSBC, OCL_API_NORMALIZE, OCL_API_UPDATENORM, OCL_API_APPLYM, OCL_API_PHASEFLIP, OCL_API_ZEROPHASEFLIP, OCL_API_CPHASEFLIPIFLESS, OCL_API_MUL, OCL_API_DIV, OCL_API_CMUL, OCL_API_CDIV } |
enum | QInterfaceEngine { QINTERFACE_CPU = 0, QINTERFACE_OPENCL, QINTERFACE_OPENCL_MULTI, 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) |
Complex8x2Simd | dupeLo (const Complex8x2Simd &cmplx2) |
Complex8x2Simd | dupeHi (const Complex8x2Simd &cmplx2) |
Complex8x2Simd | matrixMul (const Complex8x2Simd &mtrxCol1, const Complex8x2Simd &mtrxCol2, const Complex8x2Simd &qubit) |
Complex8x2Simd | matrixMul (const float &nrm, const Complex8x2Simd &mtrxCol1, const Complex8x2Simd &mtrxCol2, const Complex8x2Simd &qubit) |
Complex8x2Simd | operator* (const float lhs, const Complex8x2Simd &rhs) |
float | norm (const Complex8x2Simd &c) |
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) |
Variables | |
static const __m128 | SIGNMASK = _mm_castsi128_ps(_mm_set_epi32(0, 0x80000000, 0, 0x80000000)) |
typedef std::shared_ptr<cl::Buffer> Qrack::BufferPtr |
typedef std::shared_ptr<OCLDeviceContext> Qrack::DeviceContextPtr |
typedef std::shared_ptr<QEngineCPU> Qrack::QEngineCPUPtr |
typedef std::shared_ptr<QEngineOCLMulti> Qrack::QEngineOCLMultiPtr |
typedef std::shared_ptr<QEngineOCL> Qrack::QEngineOCLPtr |
typedef std::shared_ptr<QInterface> Qrack::QInterfacePtr |
typedef std::shared_ptr<QUnit> Qrack::QUnitPtr |
enum Qrack::OCLAPI |
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_OPENCL_MULTI |
Create a QEngineOCLMUlti, composed from multiple QEngineOCLs, using OpenCL in parallel across 2^N devices, for N an integer >= 0. |
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 |
|
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 | ||
) |
template void Qrack::rotate< complex * > | ( | complex * | first, |
complex * | middle, | ||
complex * | last, | ||
bitCapInt | stride | ||
) |
|
static |