| 614 | } |
| 615 | |
| 616 | double QPilotOSMachine::real_chip_expectation(const QProg &prog, const std::string &hamiltonian, const std::vector<uint32_t> &qubits, |
| 617 | const int shot, const int chip_id, const bool is_amend, const bool is_mapping, const bool is_optimization, const std::vector<uint32_t> &specified_block, |
| 618 | const std::string& task_describe) |
| 619 | { |
| 620 | try |
| 621 | { |
| 622 | std::vector<double> result; |
| 623 | if (m_machine_type == "Pilot") { |
| 624 | CalcConfig config; |
| 625 | config.backend_id = chip_id; |
| 626 | config.shot = shot; |
| 627 | config.task_type = static_cast<int>(TaskType::REAL_EXPECTATION); |
| 628 | config.is_amend = is_amend; |
| 629 | config.is_mapping = is_mapping; |
| 630 | config.is_optimization = is_optimization; |
| 631 | config.hamiltonian = hamiltonian; |
| 632 | config.ir = convert_qprog_to_originir(const_cast<QProg &>(prog), this); |
| 633 | config.task_describe = task_describe; |
| 634 | config.specified_block = specified_block; |
| 635 | m_pilot_machine->execute_expectation_task(config, qubits, result); |
| 636 | if (result.size() > 0) { |
| 637 | return result[0]; |
| 638 | } |
| 639 | else { |
| 640 | throw std::runtime_error("task execute error!"); |
| 641 | } |
| 642 | } |
| 643 | return 0; |
| 644 | } |
| 645 | catch (const std::exception& e) |
| 646 | { |
| 647 | PTraceInfo("Catch unknow exception" << e.what()); |
| 648 | } |
| 649 | } |
| 650 | |
| 651 | std::string QPilotOSMachine::async_real_chip_expectation(const QProg& prog, const std::string &hamiltonian, const std::vector<uint32_t> &qubits, |
| 652 | const int shot, const int chip_id, const bool is_amend, const bool is_mapping, const bool is_optimization, const std::vector<uint32_t> &specified_block, |