Change Log

3.7.17 - 2023-5-22

新增功能和重要更新

1.新增 Clifford模拟器 ,主要用于基础量子纠错场景以及高比特且稀疏的Clifford门集构成的量子线路模拟,具体接口可以参考 稳定器与Clifford模拟器

2.量子云虚拟机相关更新

(1)为了适配了新版本的本源量子云平台做了相关改动,对每个用户的认证标识符做了签名加密处理,但接口使用方式与之前相同 (2)完善相关的错误处理,现在出错和异常信息输出更加具体明确

3.新增Pauli算符与矩阵的转化接口,通过矩阵转换Pauli算符接口名为 matrix_decompose_hamiltonian ,示例如下:

auto matrix = EigenMatrixX(4, 4);
auto hamiltonian = matrix_decompose_hamiltonian(matrix);
std::cout << hamiltonian << endl;

4.提供一种利用矩阵乘积态(MPS)的低秩表达近似分布振幅制备算法,可以通过一种较少的CNOT的门完成对分布振幅的表达,并且这种表达是一种近邻接形式,因此可以直接作用于芯片,由于双门个数的减少,也有利于增加分布制备的成功率。

5.Pauli算符的构造函数现在提供可选参数,用于决定是否合并同类项,同时也可以显式调用手动合并函数

//默认不合并同类项
auto opt = PauliOperator({ {"X0 Y2",-0.044750},
                            {"Z0 Z1",0.189766},
                            {"Z1 Z0",0.270597},
                            {"Z3",-0.242743 } });

std::cout << opt << endl;

//合并同类项
auto opt1 = PauliOperator({ {"X0 Y2",-0.044750},
                            {"Z0 Z1",0.189766},
                            {"Z1 Z0",0.270597},
                            {"Z3",-0.242743 } }, true);

std::cout << opt1 << endl;

//手动合并
opt.reduceDuplicates();

std::cout << opt1 << endl;

输出结果如下:

//默认不合并同类项
{
    "X0 Y2" : -0.044750,
    "Z0 Z1" : 0.189766,
    "Z0 Z1" : 0.270597,
    "Z3" : -0.242743
}

//合并同类项
{
    "X0 Y2" : -0.044750,
    "Z0 Z1" : 0.460363,
    "Z3" : -0.242743
}

//手动合并
{
    "X0 Y2" : -0.044750,
    "Z0 Z1" : 0.460363,
    "Z3" : -0.242743
}

上述可选合并默认参数的使用方式适用于以下Pauli算符的构造函数

auto operator1 = pq.PauliOperator({{"X0 X1",-0.044750}, {"Z0 Z1",0.189766}}, true);
auto operator2 = PauliOperator(EigenMatrixX(2,2), true);
auto operator3 = pq.PauliOperator("X0 X1", 0.122, true);

其他更新

1.修复在某些情况下,GPU虚拟机无法在linux下运行的问题

2.修复QPanda画量子线路时,Barrier门会出现比特和图像不符的现象

3.在编译优化方面,解决了高深度量子线路编译时,偶尔出现的内存崩溃问题

4.修复部分振幅虚拟机,分解Toffoli门和CU门无法正确识别分解结果的问题,现在部分振幅虚拟机对全部的单双门和Toffoli门均有很好地支持

5.噪声虚拟机添加线程数量控制

6.解决密度矩阵噪声在算符类噪声施加比特参数的错误

2.7.16 - 2023-1-12

新增功能

1.新增密度矩阵模拟器,适用于小型量子系统下的密度矩阵模拟,同时提供约化密度矩阵,概率分布,哈密顿量期望以及噪声线路模拟等接口,具体可以参考 密度矩阵模拟器

2.优化了泡利算符的构造方式,新增了通过矩阵来构造泡利算符的接口。

3.优化了泡利算符的构造方式,新增了形如 auto operator = 1.5 * x(0) + 0.6 * y(1) + 2.1 * z(2) 的更简洁的构造方式。

4.单振幅虚拟机添加获取对应振幅接口。

其他更新

1.修复在只有measure线路等情况下,输出latex信息显示和转换失败的问题。

2.更新变分组件,添加三角函数相关接口。

3.优化了获取矩阵接口,添加了量子比特可选参数,可以获取一个量子线路中指定比特对应的矩阵。

4.修复退相干噪声计算错误的问题。

5.修复某些情况下GPU模拟器运行错误问题。

6.修复ISWAP门默认参数未统一的问题。

7.删除Encode类中归一化函数,并修改为入参检测归一化。