class QPanda::QuantumMachine¶
Overview¶
Abstract quantum machine base classes. More…
#include <QuantumMachineInterface.h> class QuantumMachine { public: // methods virtual Qubit* allocateQubitThroughPhyAddress(size_t) = 0; virtual Qubit* allocateQubitThroughVirAddress(size_t) = 0; virtual void init() = 0; virtual QMachineStatus* getStatus() const = 0; virtual std::map<std::string, bool> directlyRun(QProg& qProg) = 0; virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<ClassicalCondition>&, rapidjson::Document&) = 0; virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<ClassicalCondition>&, int) = 0; virtual std::map<GateType, size_t> getGateTimeMap() const = 0; virtual void finalize() = 0; virtual QStat getQState() const = 0; virtual size_t getVirtualQubitAddress(Qubit*) const = 0; virtual bool swapQubitPhysicalAddress(Qubit*, Qubit*) = 0; virtual void setConfig(const Configuration&) = 0; virtual Qubit* allocateQubit() = 0; virtual QVec allocateQubits(size_t) = 0; virtual ClassicalCondition allocateCBit() = 0; virtual ClassicalCondition allocateCBit(size_t) = 0; virtual std::vector<ClassicalCondition> allocateCBits(size_t) = 0; virtual void Free_Qubit(Qubit*) = 0; virtual void Free_Qubits(QVec&) = 0; virtual void Free_CBit(ClassicalCondition&) = 0; virtual void Free_CBits(std::vector<ClassicalCondition>&) = 0; virtual size_t getAllocateQubit() = 0; virtual size_t getAllocateCMem() = 0; virtual void setConfigure(const Configuration&) = 0; virtual Qubit* qAlloc() = 0; virtual QVec qAllocMany(size_t qubit_count) = 0; virtual ClassicalCondition cAlloc() = 0; virtual ClassicalCondition cAlloc(size_t) = 0; virtual std::vector<ClassicalCondition> cAllocMany(size_t) = 0; virtual void qFree(Qubit*) = 0; virtual void qFreeAll(QVec&) = 0; virtual void cFree(ClassicalCondition&) = 0; virtual void cFreeAll(std::vector<ClassicalCondition>&) = 0; virtual size_t getAllocateQubitNum() = 0; virtual size_t getAllocateCMemNum() = 0; virtual void initState( const QStat& state = {}, const QVec& qlist = {} ) = 0; virtual size_t get_allocate_qubits(QVec&) = 0; virtual size_t get_allocate_cbits(std::vector<ClassicalCondition>&) = 0; virtual double get_expectation(QProg, const QHamiltonian&, const QVec&) = 0; virtual double get_expectation(QProg, const QHamiltonian&, const QVec&, int) = 0; }; // direct descendants class QVM;
Detailed Documentation¶
Abstract quantum machine base classes.
Methods¶
virtual Qubit* allocateQubitThroughPhyAddress(size_t) = 0
allocateQubitThroughPhyAddress
Parameters:
| size_t | address |
Returns:
QPanda::Qubit * qubit
virtual Qubit* allocateQubitThroughVirAddress(size_t) = 0
allocateQubitThroughVirAddress
Parameters:
| size_t | address |
Returns:
QPanda::Qubit * qubit
virtual void init() = 0
init
Returns:
void
virtual QMachineStatus* getStatus() const = 0
getStatus
Returns:
virtual std::map<std::string, bool> directlyRun(QProg& qProg) = 0
directlyRun
Parameters:
| QProg& | quantum program |
Returns:
std::map<std::string, bool>
virtual std::map<std::string, size_t> runWithConfiguration( QProg&, std::vector<ClassicalCondition>&, rapidjson::Document& ) = 0
runWithConfiguration
Parameters:
| QProg& | quantum program |
| std::vector<ClassicalCondition>& | |
| rapidjson::Document& |
Returns:
std::map<std::string, Eigen::size_t>
virtual std::map<std::string, size_t> runWithConfiguration( QProg&, std::vector<ClassicalCondition>&, int ) = 0
runWithConfiguration
Parameters:
| QProg& | quantum program |
| std::vector<ClassicalCondition>& | |
| int |
Returns:
std::map<std::string, Eigen::size_t>
virtual std::map<GateType, size_t> getGateTimeMap() const = 0
getGateTimeMap
Returns:
std::map<GateType, Eigen::size_t>
virtual void finalize() = 0
finalize
Returns:
void
virtual QStat getQState() const = 0
getQState
Returns:
QStat
virtual size_t getVirtualQubitAddress(Qubit*) const = 0
getVirtualQubitAddress
Parameters:
| Qubit* | qubit |
Returns:
Eigen::size_t
virtual bool swapQubitPhysicalAddress(Qubit*, Qubit*) = 0
swapQubitPhysicalAddress
Parameters:
| Qubit* | qubit |
| Qubit* | qubit |
Returns:
bool
virtual Qubit* allocateQubit() = 0
To initialize the quantum machine.
virtual QVec allocateQubits(size_t) = 0
Allocate and return a qubit.
virtual ClassicalCondition allocateCBit() = 0
allocateQubits
virtual ClassicalCondition allocateCBit(size_t) = 0
Allocate and run a cbit.
virtual std::vector<ClassicalCondition> allocateCBits(size_t) = 0
Allocate and run a cbit.
virtual void Free_Qubit(Qubit*) = 0
Allocate and return a list of cbits.
virtual void Free_Qubits(QVec&) = 0
Free a qubit.
virtual void Free_CBit(ClassicalCondition&) = 0
Gree a list of qubits.
virtual void Free_CBits(std::vector<ClassicalCondition>&) = 0
Gree a cbit.
virtual size_t getAllocateQubit() = 0
Gree a list of CBits.
virtual size_t getAllocateCMem() = 0
getAllocateQubit
virtual void setConfigure(const Configuration&) = 0
getAllocateCMem
setConfigure
Parameters:
| const | Configuration & config |
Returns:
void
virtual Qubit* qAlloc() = 0
qAlloc
Returns:
QPanda::Qubit * qubit
virtual QVec qAllocMany(size_t qubit_count) = 0
qAllocMany
Parameters:
| size_t | qubit_count |
Returns:
virtual ClassicalCondition cAlloc() = 0
cAlloc
Returns:
virtual ClassicalCondition cAlloc(size_t) = 0
cAlloc
Parameters:
| size_t |
Returns:
virtual std::vector<ClassicalCondition> cAllocMany(size_t) = 0
cAllocMany
Parameters:
| size_t | count |
Returns:
std::vector<QPanda::ClassicalCondition> cbit_vec
virtual void qFree(Qubit*) = 0
qFree
Parameters:
| Qubit* |
Returns:
void
virtual void qFreeAll(QVec&) = 0
qFreeAll
Parameters:
| QVec& |
Returns:
void
virtual void cFree(ClassicalCondition&) = 0
cFree
Parameters:
| ClassicalCondition& | cbit |
Returns:
void
virtual void cFreeAll(std::vector<ClassicalCondition>&) = 0
cFreeAll
Parameters:
| std::vector<ClassicalCondition | >& cbit_vec |
Returns:
void
virtual size_t getAllocateQubitNum() = 0
getAllocateQubitNum
Returns:
Eigen::size_t count
virtual size_t getAllocateCMemNum() = 0
getAllocateCMemNum
Returns:
Eigen::size_t count
virtual size_t get_allocate_qubits(QVec&) = 0
get allocate qubits
Parameters:
| QVec& |
Returns:
size_t allocate qubits size
virtual size_t get_allocate_cbits(std::vector<ClassicalCondition>&) = 0
get allocate cbits
Parameters:
| std::vector<ClassicalCondition>& |
Returns:
size_t allocate cbits size
virtual double get_expectation(QProg, const QHamiltonian&, const QVec&) = 0
gets the expected value of the Hamiltonian of the circuit
Parameters:
| QProg | quantum program |
| QHamiltonian | hamiltonian |
| QVec | qubits |
Returns:
double expectation
virtual double get_expectation(QProg, const QHamiltonian&, const QVec&, int) = 0
gets the expected value of the Hamiltonian of the circuit
Parameters:
| QProg | quantum program |
| QHamiltonian | hamiltonian |
| QVec | qubits |
| int | run shots |
Returns:
double expectation