.. index:: pair: class; QPanda::QuantumMachine .. _doxid-class_q_panda_1_1_quantum_machine: class QPanda::QuantumMachine ============================ .. toctree:: :hidden: Overview ~~~~~~~~ Abstract quantum machine base classes. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class QuantumMachine { 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 :target:`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 :target:`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; }; // direct descendants class :ref:`QVM`; .. _details-class_q_panda_1_1_quantum_machine: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Abstract quantum machine base classes. Methods ------- .. index:: pair: function; allocateQubitThroughPhyAddress .. _doxid-class_q_panda_1_1_quantum_machine_1a732d439bfb76b74edb3d2404568a1900: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`Qubit`* allocateQubitThroughPhyAddress(size_t) = 0 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_quantum_machine_1a2352ae1e515dad9a445a59069a42161e: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`Qubit`* allocateQubitThroughVirAddress(size_t) = 0 allocateQubitThroughVirAddress .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - address .. rubric:: Returns: :ref:`QPanda::Qubit ` \* qubit .. index:: pair: function; init .. _doxid-class_q_panda_1_1_quantum_machine_1ac2ebbb77482669f310f9b5d0b6f30fa1: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void init() = 0 init .. rubric:: Returns: void .. index:: pair: function; getStatus .. _doxid-class_q_panda_1_1_quantum_machine_1a29299cd9882a2f5016971121a58fa679: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QMachineStatus`* getStatus() const = 0 getStatus .. rubric:: Returns: :ref:`QPanda::QMachineStatus ` \* .. index:: pair: function; directlyRun .. _doxid-class_q_panda_1_1_quantum_machine_1a77357644931b71be480590764df59451: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map directlyRun(:ref:`QProg`& qProg) = 0 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_quantum_machine_1a7dded3823353840ab733abdc3fb999b2: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map runWithConfiguration( :ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, rapidjson::Document& ) = 0 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_quantum_machine_1af49fc4f7b7b608fed6327bcde3d28226: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map runWithConfiguration( :ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, int ) = 0 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_quantum_machine_1a9caf6ddc2d278e222db50b78ff6d5a03: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::map<:ref:`GateType`, size_t> getGateTimeMap() const = 0 getGateTimeMap .. rubric:: Returns: std::map .. index:: pair: function; finalize .. _doxid-class_q_panda_1_1_quantum_machine_1a2aff067ba64013dce87814dfdfbdc176: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void finalize() = 0 finalize .. rubric:: Returns: void .. index:: pair: function; getQState .. _doxid-class_q_panda_1_1_quantum_machine_1aee285b6b7f5cd7936491f2b304501167: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QStat` getQState() const = 0 getQState .. rubric:: Returns: QStat .. index:: pair: function; getVirtualQubitAddress .. _doxid-class_q_panda_1_1_quantum_machine_1ae01f52fad0cde4e96dbc4945e3f6f93f: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getVirtualQubitAddress(:ref:`Qubit`*) const = 0 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_quantum_machine_1a8f444f30f7675ee5e1e2c7db53264b7d: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual bool swapQubitPhysicalAddress(:ref:`Qubit`*, :ref:`Qubit`*) = 0 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_quantum_machine_1a0b8228ea18d362fba29ff5fcdded60b4: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`Qubit`* allocateQubit() = 0 To initialize the quantum machine. .. index:: pair: function; allocateQubits .. _doxid-class_q_panda_1_1_quantum_machine_1a190cd3e9af3aa1a34420b91e2f60f60a: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QVec` allocateQubits(size_t) = 0 Allocate and return a qubit. .. index:: pair: function; allocateCBit .. _doxid-class_q_panda_1_1_quantum_machine_1a944298196e0c6dbf6e641395af82f4c9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`ClassicalCondition` allocateCBit() = 0 allocateQubits .. index:: pair: function; allocateCBit .. _doxid-class_q_panda_1_1_quantum_machine_1a1c95eb9d941db948d60767a460aa20d0: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`ClassicalCondition` allocateCBit(size_t) = 0 Allocate and run a cbit. .. index:: pair: function; allocateCBits .. _doxid-class_q_panda_1_1_quantum_machine_1a5ab5745be7c1c4fc44a928fdbf1c87e1: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::vector<:ref:`ClassicalCondition`> allocateCBits(size_t) = 0 Allocate and run a cbit. .. index:: pair: function; Free_Qubit .. _doxid-class_q_panda_1_1_quantum_machine_1a480d3b51048e1e8923bef9325d5f524d: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void Free_Qubit(:ref:`Qubit`*) = 0 Allocate and return a list of cbits. .. index:: pair: function; Free_Qubits .. _doxid-class_q_panda_1_1_quantum_machine_1a933fe5bcb93118dfad9d096676885eb7: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void Free_Qubits(:ref:`QVec`&) = 0 Free a qubit. .. index:: pair: function; Free_CBit .. _doxid-class_q_panda_1_1_quantum_machine_1a42f5901a2104eefe29e9ff276076eb08: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void Free_CBit(:ref:`ClassicalCondition`&) = 0 Gree a list of qubits. .. index:: pair: function; Free_CBits .. _doxid-class_q_panda_1_1_quantum_machine_1a331c9a57d8af8769f8c6332529b7b043: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void Free_CBits(std::vector<:ref:`ClassicalCondition`>&) = 0 Gree a cbit. .. index:: pair: function; getAllocateQubit .. _doxid-class_q_panda_1_1_quantum_machine_1a98784101fb0ae8d98d1fd311a39689b8: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getAllocateQubit() = 0 Gree a list of CBits. .. index:: pair: function; getAllocateCMem .. _doxid-class_q_panda_1_1_quantum_machine_1aabf896ec46e67498900467a38ddaee7c: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getAllocateCMem() = 0 getAllocateQubit .. index:: pair: function; setConfigure .. _doxid-class_q_panda_1_1_quantum_machine_1a2e780aea11e55ee381c0ae983f65291d: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void setConfigure(const :ref:`Configuration`&) = 0 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_quantum_machine_1a8d41c197973a4c544928facdd9b80e05: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`Qubit`* qAlloc() = 0 qAlloc .. rubric:: Returns: :ref:`QPanda::Qubit ` \* qubit .. index:: pair: function; qAllocMany .. _doxid-class_q_panda_1_1_quantum_machine_1ae1ed8d4a83d8167a111992245016f6e8: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QVec` qAllocMany(size_t qubit_count) = 0 qAllocMany .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - qubit_count .. rubric:: Returns: :ref:`QPanda::QVec ` .. index:: pair: function; cAlloc .. _doxid-class_q_panda_1_1_quantum_machine_1aa6e93c19e315072799915d4f9b02223f: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`ClassicalCondition` cAlloc() = 0 cAlloc .. rubric:: Returns: :ref:`QPanda::ClassicalCondition ` .. index:: pair: function; cAlloc .. _doxid-class_q_panda_1_1_quantum_machine_1ad7ebf59186a299d850ddf4ac3eeebaf1: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`ClassicalCondition` cAlloc(size_t) = 0 cAlloc .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - .. rubric:: Returns: :ref:`QPanda::ClassicalCondition ` .. index:: pair: function; cAllocMany .. _doxid-class_q_panda_1_1_quantum_machine_1a0aeb0517f0dc84b9b9bbb100c87430dc: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual std::vector<:ref:`ClassicalCondition`> cAllocMany(size_t) = 0 cAllocMany .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - count .. rubric:: Returns: std::vector cbit_vec .. index:: pair: function; qFree .. _doxid-class_q_panda_1_1_quantum_machine_1a5a61e36151d84476f64d66337435a2c1: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void qFree(:ref:`Qubit`*) = 0 qFree .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - Qubit\* - .. rubric:: Returns: void .. index:: pair: function; qFreeAll .. _doxid-class_q_panda_1_1_quantum_machine_1afc3c5771b37a13c0ebd65a940029c9fb: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void qFreeAll(:ref:`QVec`&) = 0 qFreeAll .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QVec& - .. rubric:: Returns: void .. index:: pair: function; cFree .. _doxid-class_q_panda_1_1_quantum_machine_1a3d96ab037bdfe79a6cd32d394d51c3b0: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void cFree(:ref:`ClassicalCondition`&) = 0 cFree .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - ClassicalCondition& - cbit .. rubric:: Returns: void .. index:: pair: function; cFreeAll .. _doxid-class_q_panda_1_1_quantum_machine_1a2912a9f37c8600d8d0fc875eeca402d5: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void cFreeAll(std::vector<:ref:`ClassicalCondition`>&) = 0 cFreeAll .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - std::vector& cbit_vec .. rubric:: Returns: void .. index:: pair: function; getAllocateQubitNum .. _doxid-class_q_panda_1_1_quantum_machine_1a66fe7b76e261cde0b4571fc796107fcc: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getAllocateQubitNum() = 0 getAllocateQubitNum .. rubric:: Returns: Eigen::size_t count .. index:: pair: function; getAllocateCMemNum .. _doxid-class_q_panda_1_1_quantum_machine_1ac49cf7c186b153bc277e2505efce9344: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t getAllocateCMemNum() = 0 getAllocateCMemNum .. rubric:: Returns: Eigen::size_t count .. index:: pair: function; get_allocate_qubits .. _doxid-class_q_panda_1_1_quantum_machine_1af4601428256d3511b0004d3c7def733f: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_allocate_qubits(:ref:`QVec`&) = 0 get allocate qubits .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QVec& - .. rubric:: Returns: size_t allocate qubits size .. index:: pair: function; get_allocate_cbits .. _doxid-class_q_panda_1_1_quantum_machine_1a2c5e32ecb79ce0dbaabf03412d01e50a: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_allocate_cbits(std::vector<:ref:`ClassicalCondition`>&) = 0 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_quantum_machine_1a36e280b887f9cf99498403897233811c: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual double get_expectation(:ref:`QProg`, const QHamiltonian&, const :ref:`QVec`&) = 0 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_quantum_machine_1a9f12409d33e4e66a7fd9c8e7eedb76ef: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual double get_expectation(:ref:`QProg`, const QHamiltonian&, const :ref:`QVec`&, int) = 0 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