页面 ==== 进入工作台后,点击左侧【图形化编程】按钮即可进入量子线路的图形化编程页面。 .. image:: ./assets/image-20250711114026441.png 图形化编程页面主要分为六个部分,其布局如下图所示。 .. image:: ./assets/image-20250711114521593.png **①菜单栏:** 可通过此菜单新建或打开线路,对线路进行编辑操作,调整页面布局等。 - 线路:可新建线路、查看已建线路列表、对当前线路进行副本创建。 - 编辑:可撤销、恢复(撤销后可使用)、复制(选中线路中的量子逻辑门模块可使用)、剪切(选中线路中的量子逻辑门模块可使用)、粘贴(复制选中线路中的量子逻辑门模块后可使用)、清除全部线路 - 布局:可自主决定是否选择在线路下方展示预期投影概率(仅适用于展示≤7位量子比特的线路)、预期密度矩阵(仅适用于展示≤4位量子比特的线路)、预期振幅(仅适用于≤7位量子比特的线路)的模拟示意图。 - 菜单栏下方有当前线路名称,鼠标移动至名称时,名称右侧将悬浮显示编辑图标,点击后可编辑线路名称。 **②计算后端的选择、运行、设置区域:** - 计算后端的选择:通过拖动量子逻辑门模块创建好线路后,用户可选择不同的计算后端(本源悟空72、本源悟空102以及4个量子虚拟机)进行运行。注意:选择使用本源悟空真机须有足够的可用机时。 - 运行:选择计算后端后,点击“运行”按钮以获取计算结果,计算结果将展示在右侧工具栏的“任务状态”中。 - 设置:可选择模拟类型(Monte-Carlo方法、概率方法) 1. Monte-Carlo方法 - 概念:Monte-Carlo方法也称统计模拟方法,指使用随机数来解决很多计算问题的方法,其核心思路是用随机实验来逼近确定性问题的解。选择此种方法进行量子计算需要在线路中添加“测量门”。 - 若选择Monte-Carlo方法模拟,则可设置功能为: - 可自定义量子比特数(1-35):最多可设置35个量子比特,即q[0]-q[34]。 - 可自定义经典寄存器个数(1-255):经典寄存器是量子计算中用于存储测量结果、实现条件控制逻辑、支持经典-量子交互的关键组件。通常来说,经典寄存器数量 = 量子比特数量是最安全且高效的设置。具体数值需根据实际判断,如:需要使用条件控制、需要中间结果存储、需要后处理,则需要增加经典寄存器数量。 - 可自定义重复实验次数(1-8192):通过多次运行量子程序,统计测量结果的频率分布,从而估计量子态的概率幅值。用户可根据可用机时和精度需求合理设置,通常100–1000次为常见选择。 2. 概率方法 - 概念:与Monte-Carlo方法不同,概率方法是一步计算,直接输出(最大的N个)概率,其核心思路是当解析解难以获得时,用随机样本估计概率分布或期望值。选择此种方法进行量子计算不需要在线路中添加“测量门”。 - 若选择概率方法模拟,则可设置功能为: - 可自定义量子比特数(1-35):最多可设置35个量子比特,即q[0]-q[34]。 - 可自定义测量量子比特(多个量子比特,用“,”隔开,仅限输入量子比特编号):可自定义需要测量的量子比特。 **③工具栏:** 用户可查看或编辑 Origin IR 代码,阅读平台教程文档,查看任务状态。 - Origin IR : - 概念:Origin IR 是本源量子提供的一种量子指令中间表示,用于描述和转换量子程序。它是一种基于文本的量子程序描述语言,旨在实现量子程序在不同抽象层次之间的高效转换与编译。 - 操作:当用户在图形化编辑区域拖动量子逻辑门,构建了逻辑线路,Origin IR 的代码编辑器中将会对应展示出该线路所对应的代码;若在代码编辑器中修改代码,左侧的图形化编辑区域也会自动根据修改的代码进行对应的改变。 .. image:: ./assets/image-20251204152252571.png - 教程文档:此模块包含量子线路编辑功能引导(https://console.originqc.com.cn/zh/guide/1 )、创建完整量子线路教程(https://console.originqc.com.cn/zh/guide/0 )、逻辑门介绍(https://console.originqc.com.cn/zh/quantumVm/introduce )。用户可随时点击“了解详情”进行查阅。 - 任务状态:在此模块可快速查看该账号所有运行图形化编程后的结果,包括任务ID、计算后端、创建时间及计算结果。 .. image:: ./assets/image-20251204152139182.png 点击了解详情后,将跳转到该任务的详细页面,在任务的详细页面可查看到计算状态、任务ID、任务耗时(若使用真机)、详细的计算服务以及计算结果。在页面最下方,可查看完整的线路图、Origin IR代码以及该线路对应的pyqpanda代码。(由于已运行完成,该处Origin IR代码和pyqpanda代码无法编辑) .. image:: ./assets/image-20251204152431470.png 需要注意的是: 1.若计算后端选择的是虚拟机,则计算结果中的线路图、Origin IR代码、pyqpanda代码均是与虚拟机相适配的结果: .. image:: ./assets/image-20251205171339769.png 2.若计算后端选择的是真机,那么计算结果中的线路图、Origin IR 代码、pyqpanda 代码,将同时展示与虚拟机适配的原始结果,以及转换后与真机适配的结果: .. image:: ./assets/image-20251205171416930.png **④量子逻辑门选择模块:** 该区域排列着不同的量子逻辑门模块,用户可将它们**拖动**至图形化编辑区域中,组成具体的量子线路。不同类型的量子逻辑门使用不同的颜色和形状进行区分。用户将鼠标移动至量子逻辑门上,可悬浮显示该逻辑门的公式或介绍。 .. image:: ./assets/image-20251204160926232.png 由于不同计算后端在硬件实现上存在差异,其支持的量子逻辑门种类和操作精度存在不同。因此,量子逻辑门选择模块会根据所选后端动态调整可选逻辑门,以确保线路在目标后端上能够被正确编译和执行,避免因门不支持而导致的编译错误或运行失败。 常见的量子逻辑门介绍如下: .. list-table:: :widths: 12 15 40 33 :header-rows: 1 * - 逻辑门&操作 - 门名称 - **作用** - 公式 * - :math:`I` - 恒等门 - 不改变量子态,用于占位或同步操作。 - .. math:: I = \begin{bmatrix}1 & 0 \\ 0 & 1\end{bmatrix} * - :math:`H` - Hadamard 门 - 生成叠加态,使 :math:`\lvert 0 \rangle \rightarrow \frac{1}{\sqrt{2}}(\lvert 0 \rangle + \lvert 1 \rangle)` , :math:`\lvert 1 \rangle \rightarrow \frac{1}{\sqrt{2}}(\lvert 0 \rangle - \lvert 1 \rangle)`。 - .. math:: H = \frac{1}{\sqrt{2}}\begin{bmatrix}1 & 1 \\ 1 & -1\end{bmatrix} * - :math:`T` - T门 - 为 :math:`\lvert 1\rangle` 态添加 :math:`\pi/4` 相位。 - .. math:: T = \begin{bmatrix}1 & 0 \\ 0 & e^{i\pi/4}\end{bmatrix} * - :math:`S` - 相位门 - 为 :math:`\lvert 1\rangle` 态添加 :math:`\pi/2` 相位。 - .. math:: S = \begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix} * - :math:`X` - Pauli-X 门 - 比特翻转,:math:`\lvert 0\rangle \leftrightarrow \lvert 1\rangle`。 - .. math:: X = \begin{bmatrix}0 & 1 \\ 1 & 0\end{bmatrix} * - :math:`Y` - Pauli-Y 门 - 同时引入比特与相位翻转。 - .. math:: Y = \begin{bmatrix}0 & -i \\ i & 0\end{bmatrix} * - :math:`Z` - Pauli-Z 门 - 为 :math:`\lvert 1\rangle` 态添加 :math:`\pi` 相位。 - .. math:: Z = \begin{bmatrix}1 & 0 \\ 0 & -1\end{bmatrix} * - :math:`RX` - :math:`RX` 门 - 绕 :math:`X` 轴旋转角度 :math:`\theta`。 - .. math:: R_X(\theta) = e^{-i\theta X / 2} = \begin{bmatrix} \cos\frac{\theta}{2} & -i\sin\frac{\theta}{2} \\ -i\sin\frac{\theta}{2} & \cos\frac{\theta}{2} \end{bmatrix} * - :math:`RY` - :math:`RY` 门 - 绕 :math:`Y` 轴旋转角度 :math:`\theta`。 - .. math:: R_Y(\theta) = e^{-i\theta Y / 2} = \begin{bmatrix} \cos\frac{\theta}{2} & -\sin\frac{\theta}{2} \\ \sin\frac{\theta}{2} & \cos\frac{\theta}{2} \end{bmatrix} * - :math:`RZ` - :math:`RZ` 门 - 绕 :math:`Z` 轴旋转角度 :math:`\theta`。 - .. math:: R_Z(\theta) = e^{-i\theta Z / 2} = \begin{bmatrix} e^{-i\theta/2} & 0 \\ 0 & e^{i\theta/2} \end{bmatrix} * - :math:`X1` - :math:`X1` 门 - 绕 :math:`X` 轴旋转角度 :math:`\pi/2`。 - .. math:: X_1 = R_X\left(\frac{\pi}{2}\right) = \begin{bmatrix} \cos\frac{\pi}{4} & -i\sin\frac{\pi}{4} \\ -i\sin\frac{\pi}{4} & \cos\frac{\pi}{4} \end{bmatrix} * - :math:`Y1` - :math:`Y1` 门 - 绕 :math:`Y` 轴旋转角度 :math:`\pi/2`。 - .. math:: Y_1 = R_Y\left(\frac{\pi}{2}\right) = \begin{bmatrix} \cos\frac{\pi}{4} & -\sin\frac{\pi}{4} \\ \sin\frac{\pi}{4} & \cos\frac{\pi}{4} \end{bmatrix} * - :math:`Z1` - :math:`Z1` 门 - 绕 :math:`Z` 轴旋转角度 :math:`\pi/2`。 - .. math:: Z_1 = R_Z\left(\frac{\pi}{2}\right) = \begin{bmatrix} e^{-i\pi/4} & 0 \\ 0 & e^{i\pi/4} \end{bmatrix} * - :math:`U1` - :math:`U1` 门 - 等价于 :math:`RZ(\theta)`,不改变幅度,仅在 :math:`\lvert 1\rangle` 态上引入相位 :math:`e^{i\theta}`。 - .. math:: U_1(\theta) = \begin{bmatrix}1 & 0 \\ 0 & e^{i\theta}\end{bmatrix} * - :math:`U2` - :math:`U2` 门 - 通过 :math:`R_Z(\phi)R_Y(\tfrac{\pi}{2})R_Z(\lambda)` 实现,常用于制备叠加态。 - .. math:: U_2(\phi, \lambda) = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & -e^{i\lambda} \\ e^{i\phi} & e^{i(\phi+\lambda)} \end{bmatrix} * - :math:`U3` - :math:`U3` 门 - 实现任意单比特旋转,是最通用的单比特门形式。 - .. math:: U_3(\theta, \phi, \lambda) = \begin{bmatrix} \cos\frac{\theta}{2} & -e^{i\lambda}\sin\frac{\theta}{2} \\ e^{i\phi}\sin\frac{\theta}{2} & e^{i(\phi+\lambda)}\cos\frac{\theta}{2} \end{bmatrix} * - :math:`U4` - :math:`U4` 门 - 包含整体相位因子 :math:`e^{i\alpha}`,其分解为 :math:`R_Z(\beta)R_Y(\gamma)R_Z(\delta)`。 - .. math:: U_4(\alpha, \beta, \gamma, \delta) = \begin{bmatrix} e^{i(\alpha - \tfrac{\beta}{2} - \tfrac{\delta}{2})} \cos{\tfrac{\gamma}{2}} & - e^{i(\alpha - \tfrac{\beta}{2} + \tfrac{\delta}{2})} \sin{\tfrac{\gamma}{2}} \\ e^{i(\alpha + \tfrac{\beta}{2} - \tfrac{\delta}{2})} \sin{\tfrac{\gamma}{2}} & e^{i(\alpha + \tfrac{\beta}{2} + \tfrac{\delta}{2})} \cos{\tfrac{\gamma}{2}} \end{bmatrix} * - :math:`CNOT` - 受控非门 - 控制比特为 :math:`\lvert 1\rangle` 时翻转目标比特。 - .. math:: \text{CNOT} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} * - :math:`CR` - 受控旋转门 - 控制比特为 :math:`\lvert 1\rangle` 时对目标比特施加旋转。 - .. math:: \text{CR}(\theta) = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \cos\frac{\theta}{2} & -i\sin\frac{\theta}{2} \\ 0 & 0 & -i\sin\frac{\theta}{2} & \cos\frac{\theta}{2} \end{bmatrix} * - :math:`SWAP` - 交换门 - 交换两个比特的量子态。 - .. math:: \text{SWAP} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} * - :math:`ISWAP` - :math:`ISWAP` 门 - 交换两个量子态并引入 :math:`i` 相位。 - .. math:: \text{iSWAP} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & i & 0 \\ 0 & i & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} * - :math:`SQISWAP` - :math:`SQISWAP` 门 - iSWAP 的平方根,部分交换。 - .. math:: \text{SQISWAP} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \tfrac{1}{\sqrt{2}} & \tfrac{i}{\sqrt{2}} & 0 \\ 0 & \tfrac{i}{\sqrt{2}} & \tfrac{1}{\sqrt{2}} & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} * - :math:`CZ` - 受控-Z 门 - 控制比特为 :math:`\lvert 1\rangle` 且目标为 :math:`\lvert 1\rangle` 时,引入 :math:`\pi` 相位。 - .. math:: \text{CZ} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix} * - :math:`CU` - 受控-U 门 - 当控制比特为 :math:`\lvert 1 \rangle` 时,对目标比特施加任意单比特操作 :math:`U`。 - .. math:: \text{CU} = \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & u_{00} & u_{01}\\ 0 & 0 & u_{10} & u_{11} \end{bmatrix} * - :math:`TOFFOLI` - 双控非门 - 两个控制比特均为 :math:`\lvert 1\rangle` 时翻转目标比特。 - .. math:: \text{TOFFOLI} = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \end{bmatrix} * - :math:`BARRIER` - 屏障门 - 用于隔离编译优化阶段的门序列,防止跨区优化。 - 无 * - :math:`MEASURE` - 测量门 - 将量子态坍缩为经典比特值 0 或 1,用于读取结果。 - 无 **⑤图形化编辑区域:** 在该区域,用户可通过拖拽量子逻辑门到线路中实现线路的创建。其中,每条水平线代表一个量子比特计算线路,用户可根据需要,增加或减少量子线路,最多35个量子比特,最少1个量子比特。 .. image:: ./assets/image-20251204160801234.png 在线路图的右下角,有全屏显示按钮,点击后可放大该线路图进行查看与操作: .. image:: ./assets/image-20251209115617352.png 在编辑区域的下方,用户可以进行一些其他设置: - 开启线路优化: 勾选线路优化,可通过平台自动化程序有效提升线路的运行效率,通过数学等价变换和编译技术,减少量子门数量、降低线路深度、减少物理资源占用,更快得出计算结果。 - 开启映射: 勾选开启映射,可将逻辑线路自动转换为可在真实硬件上执行的物理线路,提升可执行性、降低错误率,并通过优化映射策略减少额外开销。 - 开启量子层析: 量子层析是一种用于完整表征未知量子态的实验技术,其核心作用是完整、精确地重建一个未知量子态的密度矩阵,从而实现对量子系统状态的全面表征。这在量子信息科学中至关重要,尤其是在验证量子硬件的保真度、检验量子门操作的正确性以及研究多体量子态时。 开启量子层析功能后,可以在任务结果页面查看相应的层析结果展示,但此项功能可能会导致计算时间变长,请耐心等待。 - 开启保真度: 保真度是指一个实际量子线路在真实量子硬件上运行后,其输出态与理想目标态之间的接近程度,是衡量真实量子硬件能否“忠实地”执行量子线路的最关键指标之一,直接决定量子算法能否在真实设备上成功运行。 开启保真度功能,系统会额外记录或计算线路输出态与理想目标态之间的保真度。将同时开启量子层析功能,可以在任务结果页面查看相应的保真度结果展示,但此项功能可能会导致计算时间变长,请耐心等待。 - 开启读取缓解修正: 读取误差缓解修正是一种用于减轻量子计算中测量阶段误差的技术,其核心目标是消除或降低因量子测量过程中的误判(如将∣0⟩误读为∣1⟩,或反之)对实验结果的影响。 可选择开启全局采样修正或局部实时修正,其中: - 全局采样修正:周期性对量子芯片进行整体读取采样,获取修正矩阵,并对原始计算结果进行修正处理。 - 局部实时修正:通过额外增加针对性的采样线路,对特定量子比特进行实时采样,修正效果会更好,但因为额外的采样线路,会导致计算时间增加。 - 选择建议: - 若量子算法运行时间短、对结果精度要求适中,可优先选择全局采样修正,以节省资源。 - 若算法对测量结果极为敏感(如 VQE、QAOA),可优先采用局部实时修正,以获得更鲁棒的结果。 **⑥可视化结果:** 在该区域,用户可自主决定是否选择是否展示预期投影概率(仅适用于展示≤7位量子比特的线路)、预期密度矩阵(仅适用于展示≤4位量子比特的线路)、预期振幅(仅适用于≤7位量子比特的线路)的模拟示意图。(需注意的是,该区域展示的所有结果为理论预测值,忽略了任何测量操作及参数设置的影响。) - 预期投影概率:通常指在多个测量样本中,某个特定结果出现的期望频率。每根柱子的高度代表了该结果出现的频率。 - 预期密度矩阵:预期密度矩阵是量子态在多次测量或运行后,通过统计方法估计出的量子系统整体状态的数学描述,包含了所有量子信息,包括概率和相位关系,是量子态的完整描述。每根柱子的颜色代表了该状态下的相位角(-π~π)的期望值;每根柱子的高度代表了该状态下的概率密度(模长),例如:若结果000的投影概率为0.0625,001的投影概率为0.4222,则[000,001]状态下的概率密度为: .. math:: \sqrt{0.0625^2 + 0.4222^2} = 0.4268 - 预期振幅:预期振幅是指在多次运行量子线路后,通过对测量结果进行统计平均,估计出的量子态在各基矢上的复振幅的期望值。每根柱子的颜色代表了该状态下的相位(-π~π)的期望值;每根柱子的高度代表了该基矢下的振幅大小。 .. image:: ./assets/image-20251204175506149.png