新功能和重要的更新
1.增加了适用于量子程序,量子线路和量子逻辑门比特重新映射的接口
remap接口需要1-2个参数,分别是量子比特目标映射结果和经典寄存器映射结果,例如当原始 量子线路有6个比特和3个经典寄存器,当调用prog.remap([5,4,3,2,1,0],[3,2,1]),映射结果如下
量子比特从默认[0,1,2,3,4,5]初始比特映射到[5,4,3,2,1,0]
经典寄存器从[0,1,2]初始寄存器映射到[3,2,1]
- 注解
量子线路和量子逻辑门的remap接口只接收一个参数,即量子比特目标映射结果
remap示例程序如下:
prog = QProg()
prog << H(0)
prog << H(2)
prog << H(4)
prog << CNOT(0, 1)
prog << CNOT(0, 2)
prog << CNOT(0, 3)
prog << CNOT(2, 4)
prog << SWAP(1, 3)
prog << measure(0, 0)
prog << measure(1, 1)
print(prog.originir())
prog.remap([5,4,3,2,1,0],[3,2,1])
print(prog.originir())
输出如下:
QINIT 5
CREG 2
H q[0]
H q[2]
H q[4]
CNOT q[0],q[1]
CNOT q[0],q[2]
CNOT q[0],q[3]
CNOT q[2],q[4]
SWAP q[1],q[3]
MEASURE q[0],c[0]
MEASURE q[1],c[1]
QINIT 6
CREG 4
H q[5]
H q[3]
H q[1]
CNOT q[5],q[4]
CNOT q[5],q[3]
CNOT q[5],q[2]
CNOT q[3],q[1]
SWAP q[4],q[2]
MEASURE q[5],c[3]
MEASURE q[4],c[2]
2.pyqpanda3新增版本查看方式
import pyqpanda3
print(pyqpanda3.__version__)
The output is as follows:
3.增加了获取芯片拓扑结构的接口 get_chip_topology,该接口返回指定芯片拓扑中所有的边。可以传入要使用的qubits来获取指定qubits的拓扑结构。 获取到的芯片拓扑结构可以用在transpile接口中,如果拓扑结构是一个非连通图,则默认编译会选择最大的连通子图进行编译,比如悟空芯片有72比特,但是最大连通子图为23比特, 所以编译支持的最大量子比特线路为23比特的线路。
apikey = ''
service = QCloudService(apikey)
backend_wukong = service.backend("WK_C102_400")
topo_use_qbits = list(range(30))
topo = backend_wukong.chip_info().get_chip_topology(topo_use_qbits)
circuit = random_qcircuit([0,1,2,3,4], 100, ["RX", "RY", "RZ", "H", "U1", "U2", "U3", "CP", "CNOT", "SWAP"])
prog_1 = QProg()
prog_2 = QProg()
prog_1 << circuit
transpiler = Transpiler()
basic_gates = ["U3", "CZ"]
prog_2 = transpiler.transpile(prog_1, topo, {}, 2, basic_gates)
问题修复
- 解决了去极化噪声算符在模拟中的异常问题