class QPanda::IdealQVM
#include <OriginQuantumMachine.h>
class IdealQVM:
public QPanda::QVM,
public QPanda::IdealMachineInterface
{
public:
// methods
virtual prob_tuple getProbTupleList(
QVec,
int selectMax = -1
);
virtual prob_vec getProbList(
QVec,
int selectMax = -1
);
virtual prob_dict getProbDict(
QVec,
int selectMax = -1
);
virtual prob_tuple probRunTupleList(
QProg&,
QVec,
int selectMax = -1
);
virtual prob_vec probRunList(
QProg&,
QVec,
int selectMax = -1
);
virtual prob_dict probRunDict(
QProg&,
QVec,
int selectMax = -1
);
prob_tuple probRunTupleList(
QProg&,
const std::vector<int>&,
int selectMax = -1
);
prob_vec probRunList(
QProg&,
const std::vector<int>&,
int selectMax = -1
);
prob_dict probRunDict(
QProg&,
const std::vector<int>&,
int selectMax = -1
);
virtual std::map<std::string, size_t> quickMeasure(
QVec,
size_t
);
virtual QStat getQStat();
virtual prob_tuple PMeasure(
QVec qubit_vector,
int select_max
);
virtual prob_vec PMeasure_no_index(QVec qubit_vector);
QStat getQState();
prob_tuple pMeasure(
QVec qubit_vector,
int select_max
);
prob_vec pMeasureNoIndex(QVec qubit_vector);
};
// direct descendants
class CPUQVM;
class CPUSingleThreadQVM;
class GPUQVM;
class MPSQVM;
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;
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);
virtual prob_vec PMeasure_no_index(QVec qubit_vector) = 0;
virtual prob_tuple getProbTupleList(QVec, int) = 0;
virtual prob_vec getProbList(QVec, int) = 0;
virtual prob_dict getProbDict(QVec, int) = 0;
virtual prob_tuple probRunTupleList(QProg&, QVec, int) = 0;
virtual prob_vec probRunList(QProg&, QVec, int) = 0;
virtual prob_dict probRunDict(QProg&, QVec, int) = 0;
virtual std::map<std::string, size_t> quickMeasure(QVec, size_t) = 0;
virtual prob_tuple PMeasure(QVec qubit_vector, int select_max) = 0;
virtual QStat getQStat() = 0;