本源高性能计算集群云服务¶
本源量子的高性能计算集群提供多种功能强大的虚拟机计算后端,适用于不同情况下的量子线路模拟需求,完整示例程序介绍如下:
#include "QPanda.h" USING_QPANDA int main(void) { //通过QCloudMachine创建量子云虚拟机 QCloudMachine QCM; //通过传入当前用户的token来初始化 QCM.init("302e020100301006072a8648ce3d020106052b8104001c041730150201010410634a5b6d0a2a9a2b03b9d7c17c57405f/13082"); auto qlist = QCM.allocateQubits(6); auto clist = QCM.allocateCBits(6); //构建量子程序 auto measure_prog = QProg(); measure_prog << HadamardQCircuit(qlist) << CZ(qlist[1], qlist[5]) << CZ(qlist[0], qlist[4]) << RX(qlist[2], PI / 4) << RX(qlist[1], PI / 4) << CZ(qlist[2], qlist[3]) << Measure(qlist[0], clist[0]) << Measure(qlist[1], clist[1]) << Measure(qlist[2], clist[2]); auto pmeasure_prog = QProg(); pmeasure_prog << HadamardQCircuit(qlist) << CZ(qlist[1], qlist[5]) << RX(qlist[2], PI / 4) << RX(qlist[1], PI / 4); //调用全振幅蒙特卡洛测量操作接口,需要量子程序和测量次数两个参数 auto result0 = QCM.full_amplitude_measure(measure_prog, 100); for (auto val : result0) { cout << val.first << " : " << val.second << endl; } QCM.finalize(); return 0; }
全振幅模拟云计算¶
full_amplitude_measure(全振幅蒙特卡洛测量操作)
:auto result0 = QCM.full_amplitude_measure(measure_prog, 100); for (auto val : result0) { cout << val.first <<" : "<< val.second << endl; }输出结果如下,左侧是量子态的二进制表示,右边表示测量次数对应的概率:
000 : 0.12 001 : 0.14 010 : 0.15 011 : 0.12 100 : 0.11 101 : 0.11 110 : 0.11 111 : 0.14
full_amplitude_pmeasure(全振幅概率测量操作)
:auto result1 = QCM.full_amplitude_pmeasure(pmeasure_prog, { 0, 1, 2 }); for (auto val : result1) { cout << val.first << " : " << val.second << endl; }需要传入的第二个参数是测量的比特,输出结果如下,左侧是量子态的二进制表示,右边表示测量对应的概率:
000 : 0.125 001 : 0.125 010 : 0.125 011 : 0.125 100 : 0.125 101 : 0.125 110 : 0.125 111 : 0.125
部分振幅模拟云计算¶
partial_amplitude_pmeasure(部分振幅概率测量操作)
:auto result2 = QCM.partial_amplitude_pmeasure(pmeasure_prog, { "0", "1", "2"}); for (auto val : result2) { cout << val.first << " : " << val.second << endl; }需要传入的第二个参数是测量的量子态振幅的十进制表示,输出结果如下,左侧是量子态振幅的十进制表示,右边表示复数形式的振幅值:
0 : (0.0883883,-0.0883883) 1 : (0.0883883,-0.0883883) 2 : (0.0883883,-0.0883883)
单振幅云计算¶
single_amplitude_pmeasure(单振幅概率测量操作)
:auto result3 = QCM.single_amplitude_pmeasure(pmeasure_prog, "0"); cout << "0" << " : " << result3 << endl;需要传入的第二个参数是测量的振幅(十进制表示),输出结果如下,只会输出一个量子态对应的复数形式的振幅值:
0 : (0.0883883,-0.0883883)
噪声模拟云计算¶
noise_measure(噪声虚拟机测量操作)
:QCM.set_noise_model(NOISE_MODEL::BIT_PHASE_FLIP_OPRATOR, { 0.01 }, { 0.02 }); auto result4 = QCM.noise_measure(measure_prog, 100); for (auto val : result4) { cout << val.first << " : " << val.second << endl; }通过
set_noise_model
设置噪声参数,第一个参数是噪声模型,后面分别是单门噪声参数和双门噪声参数,噪声模型的定义如下:enum NOISE_MODEL { DAMPING_KRAUS_OPERATOR, DEPHASING_KRAUS_OPERATOR, DECOHERENCE_KRAUS_OPERATOR_P1_P2, BITFLIP_KRAUS_OPERATOR, DEPOLARIZING_KRAUS_OPERATOR, BIT_PHASE_FLIP_OPRATOR, PHASE_DAMPING_OPRATOR, DECOHERENCE_KRAUS_OPERATOR, PAULI_KRAUS_MAP, KRAUS_MATRIX_OPRATOR, MIXED_UNITARY_OPRATOR, };该接口输出结果如下,左侧是量子态的二进制表示,右边表示测量对应的概率:
000 : 0.10 001 : 0.08 010 : 0.13 011 : 0.08 100 : 0.20 101 : 0.23 110 : 0.08 111 : 0.10
注解
- 使用对应的计算接口时,需要确认当前用户已经开通了该产品,否则可能会导致提交计算任务失败。
- 在噪声模拟时,退相干的单门噪声和双门参数参数分别有3个,不同于其他噪声
- 本源悟源测量操作支持的测量次数范围在1000至10000之间,且目前仅支持6及以下量子比特的量子线路模拟,未来会加入其他的量子芯片,敬请期待。
- 在使用时遇到任何问题,请给我们提交 用户反馈 ,我们看到后会尽快解决你的问题