.. index:: pair: class; QPanda::QVM .. _doxid-class_q_panda_1_1_q_v_m: class QPanda::QVM ================= .. toctree:: :hidden: Overview ~~~~~~~~ .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class QVM: public :ref:`QPanda::QuantumMachine` { public: // methods virtual void :target:`initState`( const :ref:`QStat`& state = {}, const :ref:`QVec`& qlist = {} ); virtual :ref:`Qubit`* :ref:`allocateQubitThroughPhyAddress`(size_t); virtual :ref:`Qubit`* :ref:`allocateQubitThroughVirAddress`(size_t); virtual :ref:`QMachineStatus`* :ref:`getStatus`() const; virtual :ref:`QResult`* :target:`getResult`(); virtual std::map :target:`getResultMap`(); virtual void :ref:`finalize`(); virtual std::map :ref:`directlyRun`(:ref:`QProg`& qProg); virtual std::map :ref:`runWithConfiguration`(:ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, rapidjson::Document&); virtual std::map :ref:`runWithConfiguration`(:ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, int); virtual std::map :target:`runWithConfiguration`( :ref:`QProg`&, std::vector&, int ); virtual std::map<:ref:`GateType`, size_t> :ref:`getGateTimeMap`() const; virtual :ref:`QStat` :ref:`getQState`() const; virtual size_t :ref:`getVirtualQubitAddress`(:ref:`Qubit`*) const; virtual bool :ref:`swapQubitPhysicalAddress`(:ref:`Qubit`*, :ref:`Qubit`*); virtual void :target:`set_random_engine`(:ref:`RandomEngine`* rng); virtual void :target:`setConfig`(const :ref:`Configuration`& config); virtual :ref:`Qubit`* :ref:`allocateQubit`(); virtual :ref:`QVec` :ref:`allocateQubits`(size_t); virtual :ref:`ClassicalCondition` :ref:`allocateCBit`(); virtual std::vector<:ref:`ClassicalCondition`> :ref:`allocateCBits`(size_t); virtual :ref:`ClassicalCondition` :ref:`allocateCBit`(size_t); virtual size_t :ref:`getAllocateQubit`(); virtual size_t :ref:`getAllocateCMem`(); virtual void :ref:`Free_Qubit`(:ref:`Qubit`*); virtual void :ref:`Free_Qubits`(:ref:`QVec`&); virtual void :ref:`Free_CBit`(:ref:`ClassicalCondition`&); virtual void :ref:`Free_CBits`(std::vector<:ref:`ClassicalCondition`>&); virtual void :ref:`setConfigure`(const :ref:`Configuration`&); virtual :ref:`Qubit`* :ref:`qAlloc`(); virtual :ref:`QVec` :ref:`qAllocMany`(size_t qubit_count); virtual :ref:`ClassicalCondition` :ref:`cAlloc`(); virtual :ref:`ClassicalCondition` :ref:`cAlloc`(size_t); virtual std::vector<:ref:`ClassicalCondition`> :ref:`cAllocMany`(size_t); virtual void :ref:`qFree`(:ref:`Qubit`*); virtual void :ref:`qFreeAll`(:ref:`QVec`&); virtual void :ref:`cFree`(:ref:`ClassicalCondition`&); virtual void :ref:`cFreeAll`(std::vector<:ref:`ClassicalCondition`>&); virtual size_t :ref:`getAllocateQubitNum`(); virtual size_t :ref:`getAllocateCMemNum`(); virtual size_t :ref:`get_allocate_qubits`(:ref:`QVec`&); virtual size_t :ref:`get_allocate_cbits`(std::vector<:ref:`ClassicalCondition`>&); virtual double :ref:`get_expectation`(:ref:`QProg`, const QHamiltonian&, const :ref:`QVec`&); virtual double :ref:`get_expectation`(:ref:`QProg`, const QHamiltonian&, const :ref:`QVec`&, int); protected: }; // direct descendants class :ref:`IdealQVM`; class :ref:`NoiseQVM`; class :ref:`PartialAmplitudeQVM`; class :ref:`QCloudMachine`; class :ref:`SingleAmplitudeQVM`; Inherited Members ----------------- .. ref-code-block:: cpp :class: doxyrest-overview-inherited-code-block public: // methods virtual :ref:`Qubit`* :ref:`allocateQubitThroughPhyAddress`(size_t) = 0; virtual :ref:`Qubit`* :ref:`allocateQubitThroughVirAddress`(size_t) = 0; virtual void :ref:`init`() = 0; virtual :ref:`QMachineStatus`* :ref:`getStatus`() const = 0; virtual std::map :ref:`directlyRun`(:ref:`QProg`& qProg) = 0; virtual std::map :ref:`runWithConfiguration`(:ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, rapidjson::Document&) = 0; virtual std::map :ref:`runWithConfiguration`(:ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, int) = 0; virtual std::map<:ref:`GateType`, size_t> :ref:`getGateTimeMap`() const = 0; virtual void :ref:`finalize`() = 0; virtual :ref:`QStat` :ref:`getQState`() const = 0; virtual size_t :ref:`getVirtualQubitAddress`(:ref:`Qubit`*) const = 0; virtual bool :ref:`swapQubitPhysicalAddress`(:ref:`Qubit`*, :ref:`Qubit`*) = 0; virtual void :ref:`setConfig`(const :ref:`Configuration`&) = 0; virtual :ref:`Qubit`* :ref:`allocateQubit`() = 0; virtual :ref:`QVec` :ref:`allocateQubits`(size_t) = 0; virtual :ref:`ClassicalCondition` :ref:`allocateCBit`() = 0; virtual :ref:`ClassicalCondition` :ref:`allocateCBit`(size_t) = 0; virtual std::vector<:ref:`ClassicalCondition`> :ref:`allocateCBits`(size_t) = 0; virtual void :ref:`Free_Qubit`(:ref:`Qubit`*) = 0; virtual void :ref:`Free_Qubits`(:ref:`QVec`&) = 0; virtual void :ref:`Free_CBit`(:ref:`ClassicalCondition`&) = 0; virtual void :ref:`Free_CBits`(std::vector<:ref:`ClassicalCondition`>&) = 0; virtual size_t :ref:`getAllocateQubit`() = 0; virtual size_t :ref:`getAllocateCMem`() = 0; virtual void :ref:`setConfigure`(const :ref:`Configuration`&) = 0; virtual :ref:`Qubit`* :ref:`qAlloc`() = 0; virtual :ref:`QVec` :ref:`qAllocMany`(size_t qubit_count) = 0; virtual :ref:`ClassicalCondition` :ref:`cAlloc`() = 0; virtual :ref:`ClassicalCondition` :ref:`cAlloc`(size_t) = 0; virtual std::vector<:ref:`ClassicalCondition`> :ref:`cAllocMany`(size_t) = 0; virtual void :ref:`qFree`(:ref:`Qubit`*) = 0; virtual void :ref:`qFreeAll`(:ref:`QVec`&) = 0; virtual void :ref:`cFree`(:ref:`ClassicalCondition`&) = 0; virtual void :ref:`cFreeAll`(std::vector<:ref:`ClassicalCondition`>&) = 0; virtual size_t :ref:`getAllocateQubitNum`() = 0; virtual size_t :ref:`getAllocateCMemNum`() = 0; virtual void :ref:`initState`(const :ref:`QStat`& state = {}, const :ref:`QVec`& qlist = {}) = 0; virtual size_t :ref:`get_allocate_qubits`(:ref:`QVec`&) = 0; virtual size_t :ref:`get_allocate_cbits`(std::vector<:ref:`ClassicalCondition`>&) = 0; virtual double :ref:`get_expectation`(:ref:`QProg`, const QHamiltonian&, const :ref:`QVec`&) = 0; virtual double :ref:`get_expectation`(:ref:`QProg`, const QHamiltonian&, const :ref:`QVec`&, int) = 0; .. _details-class_q_panda_1_1_q_v_m: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Methods ------- .. index:: pair: function; allocateQubitThroughPhyAddress .. _doxid-class_q_panda_1_1_q_v_m_1af3506b5b2b35451a8aae7364193f2843: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`Qubit`* allocateQubitThroughPhyAddress(size_t) allocateQubitThroughPhyAddress .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - address .. rubric:: Returns: :ref:`QPanda::Qubit ` \* qubit .. index:: pair: function; allocateQubitThroughVirAddress .. _doxid-class_q_panda_1_1_q_v_m_1ae1f3ad0f3880eaada1101df5f6cc14f6: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`Qubit`* allocateQubitThroughVirAddress(size_t) allocateQubitThroughVirAddress .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - address .. rubric:: Returns: :ref:`QPanda::Qubit ` \* qubit .. index:: pair: function; getStatus .. _doxid-class_q_panda_1_1_q_v_m_1a2fbdc658f90b541abd43934c93257b10: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QMachineStatus`* getStatus() const getStatus .. rubric:: Returns: :ref:`QPanda::QMachineStatus ` \* .. index:: pair: function; finalize .. _doxid-class_q_panda_1_1_q_v_m_1ae1fdcd040b4c6612bbe684a606668453: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void finalize() finalize .. rubric:: Returns: void .. index:: pair: function; directlyRun .. _doxid-class_q_panda_1_1_q_v_m_1adcf36345640beff726ad3fc6bb49c15b: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map directlyRun(:ref:`QProg`& qProg) directlyRun .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QProg& - quantum program .. rubric:: Returns: std::map .. index:: pair: function; runWithConfiguration .. _doxid-class_q_panda_1_1_q_v_m_1a72948f788f8630b0eeffd987cf475a46: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map runWithConfiguration( :ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, rapidjson::Document& ) runWithConfiguration .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QProg& - quantum program * - std::vector& - * - rapidjson::Document& - .. rubric:: Returns: std::map .. index:: pair: function; runWithConfiguration .. _doxid-class_q_panda_1_1_q_v_m_1a153f1460b033c11151e5ff3d35777f6e: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map runWithConfiguration( :ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, int ) runWithConfiguration .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QProg& - quantum program * - std::vector& - * - int - .. rubric:: Returns: std::map .. index:: pair: function; getGateTimeMap .. _doxid-class_q_panda_1_1_q_v_m_1ab5b2509d10ba71c908190eb8b5ef5385: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map<:ref:`GateType`, size_t> getGateTimeMap() const getGateTimeMap .. rubric:: Returns: std::map .. index:: pair: function; getQState .. _doxid-class_q_panda_1_1_q_v_m_1a8b2d34ed071e6c9a2450a692e80fc855: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QStat` getQState() const getQState .. rubric:: Returns: QStat .. index:: pair: function; getVirtualQubitAddress .. _doxid-class_q_panda_1_1_q_v_m_1a741a08893001a17609839f50a71f9535: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getVirtualQubitAddress(:ref:`Qubit`*) const getVirtualQubitAddress .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - Qubit\* - qubit .. rubric:: Returns: Eigen::size_t .. index:: pair: function; swapQubitPhysicalAddress .. _doxid-class_q_panda_1_1_q_v_m_1a4b9d45dc4072ea7dc4e507fbcf6e5567: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual bool swapQubitPhysicalAddress(:ref:`Qubit`*, :ref:`Qubit`*) swapQubitPhysicalAddress .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - Qubit\* - qubit * - Qubit\* - qubit .. rubric:: Returns: bool .. index:: pair: function; allocateQubit .. _doxid-class_q_panda_1_1_q_v_m_1ab42756f84764948ff31b4d87c79d3e43: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`Qubit`* allocateQubit() To initialize the quantum machine. .. index:: pair: function; allocateQubits .. _doxid-class_q_panda_1_1_q_v_m_1a1dd87950e34b38f83452e98f3a548f05: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QVec` allocateQubits(size_t) Allocate and return a qubit. .. index:: pair: function; allocateCBit .. _doxid-class_q_panda_1_1_q_v_m_1a5379b3b9ed124ae76e5b365429132304: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`ClassicalCondition` allocateCBit() allocateQubits .. index:: pair: function; allocateCBits .. _doxid-class_q_panda_1_1_q_v_m_1a9907e505e82030f4af78c2fce231fd4b: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::vector<:ref:`ClassicalCondition`> allocateCBits(size_t) Allocate and run a cbit. .. index:: pair: function; allocateCBit .. _doxid-class_q_panda_1_1_q_v_m_1ac9cfc237aaa20194ae4a6afc8095da8a: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`ClassicalCondition` allocateCBit(size_t) Allocate and run a cbit. .. index:: pair: function; getAllocateQubit .. _doxid-class_q_panda_1_1_q_v_m_1aac63304751354d973d150466936ef5b5: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getAllocateQubit() Gree a list of CBits. .. index:: pair: function; getAllocateCMem .. _doxid-class_q_panda_1_1_q_v_m_1af9a55a93940aade484f02cbd9831f769: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getAllocateCMem() getAllocateQubit .. index:: pair: function; Free_Qubit .. _doxid-class_q_panda_1_1_q_v_m_1a9938820e903ad8944ac18e8fc12d10bd: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void Free_Qubit(:ref:`Qubit`*) Allocate and return a list of cbits. .. index:: pair: function; Free_Qubits .. _doxid-class_q_panda_1_1_q_v_m_1abc0663c135f5227d694bc4f20a982531: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void Free_Qubits(:ref:`QVec`&) Free a qubit. .. index:: pair: function; Free_CBit .. _doxid-class_q_panda_1_1_q_v_m_1a8d3af5eafe432611cfcadf3319a674af: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void Free_CBit(:ref:`ClassicalCondition`&) Gree a list of qubits. .. index:: pair: function; Free_CBits .. _doxid-class_q_panda_1_1_q_v_m_1a50dc95283f276e7de241ae4a95d55988: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void Free_CBits(std::vector<:ref:`ClassicalCondition`>&) Gree a cbit. .. index:: pair: function; setConfigure .. _doxid-class_q_panda_1_1_q_v_m_1ad344c02cad43a5d3d451d55853d378a2: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void setConfigure(const :ref:`Configuration`&) getAllocateCMem setConfigure .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - const - :ref:`Configuration ` & config .. rubric:: Returns: void .. index:: pair: function; qAlloc .. _doxid-class_q_panda_1_1_q_v_m_1ad9de2e6468b65d4e5f97ece36498a7c9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`Qubit`* qAlloc() To initialize the quantum machine. .. index:: pair: function; qAllocMany .. _doxid-class_q_panda_1_1_q_v_m_1ab1c3644b4253ca991421b2e0c90a94e7: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QVec` qAllocMany(size_t qubit_count) Allocate and return a qubit. .. index:: pair: function; cAlloc .. _doxid-class_q_panda_1_1_q_v_m_1a0cf8de6f2957639bd4d66ab2f148d295: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`ClassicalCondition` cAlloc() allocateQubits .. index:: pair: function; cAlloc .. _doxid-class_q_panda_1_1_q_v_m_1a698dbdafc368dbb092b51b565f03f63d: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`ClassicalCondition` cAlloc(size_t) Allocate and run a cbit. .. index:: pair: function; cAllocMany .. _doxid-class_q_panda_1_1_q_v_m_1ad0d83c214ff3c53aa15e929e61d23665: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::vector<:ref:`ClassicalCondition`> cAllocMany(size_t) Allocate and run a cbit. .. index:: pair: function; qFree .. _doxid-class_q_panda_1_1_q_v_m_1af00ee41c463d9c45d1148d94c5b721f3: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void qFree(:ref:`Qubit`*) Allocate and return a list of cbits. .. index:: pair: function; qFreeAll .. _doxid-class_q_panda_1_1_q_v_m_1a265c6b00fa422d5dea5f02c0a06ff085: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void qFreeAll(:ref:`QVec`&) Free a qubit. .. index:: pair: function; cFree .. _doxid-class_q_panda_1_1_q_v_m_1a9d1b31118208791c67e5bd799877f175: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void cFree(:ref:`ClassicalCondition`&) Gree a list of qubits. .. index:: pair: function; cFreeAll .. _doxid-class_q_panda_1_1_q_v_m_1a9b9e59e08e47272d70f10681fb380fa1: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void cFreeAll(std::vector<:ref:`ClassicalCondition`>&) Gree a cbit. .. index:: pair: function; getAllocateQubitNum .. _doxid-class_q_panda_1_1_q_v_m_1a268030f1c16325f7496f0eef3efb5533: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getAllocateQubitNum() Gree a list of CBits. .. index:: pair: function; getAllocateCMemNum .. _doxid-class_q_panda_1_1_q_v_m_1aba6a435098a6e9d1c6d50948f3f7cbdb: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getAllocateCMemNum() getAllocateQubit .. index:: pair: function; get_allocate_qubits .. _doxid-class_q_panda_1_1_q_v_m_1a7115e91d4095a93ba7d0807a8f39fe02: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_allocate_qubits(:ref:`QVec`&) getAllocateCMem .. index:: pair: function; get_allocate_cbits .. _doxid-class_q_panda_1_1_q_v_m_1af59b74befd842fd5efad2eb01421d6a9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_allocate_cbits(std::vector<:ref:`ClassicalCondition`>&) get allocate cbits .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - std::vector& - .. rubric:: Returns: size_t allocate cbits size .. index:: pair: function; get_expectation .. _doxid-class_q_panda_1_1_q_v_m_1a35e982022b6f057a6d704b9f2c8dd0b4: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual double get_expectation(:ref:`QProg`, const QHamiltonian&, const :ref:`QVec`&) gets the expected value of the Hamiltonian of the circuit .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QProg ` - quantum program * - QHamiltonian - hamiltonian * - :ref:`QVec ` - qubits .. rubric:: Returns: double expectation .. index:: pair: function; get_expectation .. _doxid-class_q_panda_1_1_q_v_m_1ac1a962a1f59c5f2ab29f632d5cabb8a9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual double get_expectation(:ref:`QProg`, const QHamiltonian&, const :ref:`QVec`&, int) gets the expected value of the Hamiltonian of the circuit .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QProg ` - quantum program * - QHamiltonian - hamiltonian * - :ref:`QVec ` - qubits * - int - run shots .. rubric:: Returns: double expectation