你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

量子模拟器概述 QDK

Microsoft Quantum 开发工具包(QDK)包含一组量子模拟器,可用于在本地计算机上运行量子程序。 在将程序提交到Azure Quantum目标上运行之前,请使用本地模拟器迭代程序。

QDK 有四个模拟器。

  • 稀疏模拟器
  • Clifford模拟器
  • GPU模拟器
  • CPU模拟器

稀疏模拟器

稀疏模拟器是QDK中的默认模拟器。 此模拟器将量子比特状态表示为稀疏向量,以利用稀疏矩阵代数进行快速模拟,尤其是对于不生成许多叠加状态的程序。 如果希望快速模拟 Q#、 OpenQASM或 Qiskit 程序或在模拟期间显示程序的量子状态,请使用稀疏模拟器。

稀疏模拟器在Visual Studio Code(VS Code)和包的QDKPython扩展中QDK都可用。 此扩展中,只有此模拟器是可用的,因此当您在 VS Code 中运行QDKQ#程序时,编译器会自动调用稀疏模拟器。 使用 VS Code 中的稀疏模拟器,可以使用 Q#DumpMachine 函数或调试器在模拟中的不同点显示量子比特状态向量。

VS Code 扩展和 Python 包都支持用于稀疏模拟 Q# 和 OpenQASM 程序的干扰模型。 Python只有包支持程序稀疏模拟Qiskit,但不支持噪音模型。

有关稀疏模拟器的详细信息,请参阅 稀疏模拟器

Clifford模拟器

对于多达数千个量子比特的程序,Clifford 模拟器速度快且效率高,但只能模拟仅包含 Clifford 门的程序。 Clifford 门是错误更正线路的常见组件。 门集 Clifford 由 H、S 和 CX 门组成,以及可从这三个入口构造的所有入口。 以下 Clifford 门是量子线路的常见组件:

  • $X$、$Y$和 $Z$
  • $S$ 和 $S^\dagger$
  • $H$或 Hadamard
  • $CX$、$CY$和 $CZ$
  • SWAP 和 iSWAP

模拟器Clifford在包Q#中PythonQDK提供 ,OpenQASMQiskit和QIR程序,但在 VS Code 的扩展中QDK不可用。

GPU模拟器

GPU 模拟器是一个全状态模拟器,它使用计算机的 GPU 并行运行量子程序的许多镜头。 此模拟器可以运行包含任何类型的门的程序,但运行成本高昂。 模拟器最多可为 27 个量子比特建模。 计算机 GPU 的强大功能决定了性能,但对于具有大约 20 个量子比特和大量镜头的程序而言,性能是最佳的。

模拟器 GPU 采用 QIR 或 Qiskit 作为输入,可通过某些 QDKPython 包 API 提供,但不支持 VS Code 扩展。 对于任何类型的量子门或运算的噪声模型,也提供了丰富的支持。

CPU模拟器

与 GPU 模拟器一样,模拟器是一个全状态模拟器, CPU 可以运行包含任何类型的量子门的程序。 但是, CPU 模拟器速度较慢,因为它无法并行运行多个镜头。 由于内存问题,此模拟器最多可支持约 25 个量子比特,但随着量子比特的增加,运行速度会因内存问题而呈指数级变慢。 当你的计算机没有 CPU 时,或者当你的程序包含的量子比特较少且无需运行大量模拟运行时,请使用 GPU 模拟器。

模拟器 CPU 采用 QIR 或 Qiskit 作为输入,可通过某些 QDKPython 包 API 提供,但不支持 VS Code 扩展。 此外,还针对任何类型的量子门或操作提供了丰富的噪声模型支持。

我应该使用什么模拟器?

要使用的最佳模拟器取决于多种因素,例如:

  • 开发环境 (VS Code 或 Python)
  • 你正在开发的量子编程框架
  • 程序的复杂性和拍摄次数
  • 本地计算机的硬件功能
  • 要在其上运行程序的 Azure Quantum 目标或其他量子硬件
  • 要生成的噪音模型

下表总结了 QDK 可用于每个模拟器的选项和量子编程框架:

模拟器 Availability 支持的框架
稀疏 VS Code 扩展和 Python 包 Q#、OpenQASM、Qiskit
Clifford Python 包 Q#、OpenQASM、Qiskit、QIR
GPU Python 包 Qiskit、QIR
CPU Python 包 Qiskit、QIR

VS Code 的 QDK 扩展中的模拟

稀疏模拟器是 VS Code 的 QDK 扩展中唯一可用的模拟器。 若要使用稀疏模拟器,请在 VS Code 中运行 Q# 或 OpenQASM 文件。 可以在 VS Code 中为 Q# 程序的稀疏模拟器添加有限的噪音模型,但对于 OpenQASM 程序则不适用。

包中的 QDKPython 模拟

QDK Python 开发环境支持多个量子框架和所有四个 QDK 模拟器,但并非所有模拟器都与所有框架和 API 兼容。

下表显示了可用于调用Python模拟器的每个 QDK API 的模拟器,以及每个 API 支持的编程框架:

Python API(应用程序接口) 稀疏 Clifford GPU CPU 编程框架
qsharp.run Q#
openqasm.run OpenQASM
qiskit.QSharpBackend Qiskit
simulation.NeutralAtomDevice QIR
simulation.NeutralAtomBackend Qiskit
simulation.run_qir QIR