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