Обзор квантовых симуляторов в QDK

Microsoft Quantum Development Kit (QDK) включает набор квантовых симуляторов, которые позволяют запускать квантовые программы на локальном компьютере. Используйте локальные симуляторы для итерации программ перед отправкой их для запуска в целевых объектах Azure Quantum.

В ней QDK есть четыре симулятора:

  • Разреженный симулятор
  • Симулятор Clifford
  • Симулятор GPU
  • Симулятор CPU

Разреженный симулятор

Разреженный симулятор — это симулятор по умолчанию в QDK. Этот симулятор представляет состояния кубита как разреженные векторы, чтобы воспользоваться преимуществами разреженной матричной алгебры для быстрого симулирования, особенно для программ, которые не генерируют много состояний суперпозиции. Используйте разреженный симулятор, если требуется быстрое моделирование Q#, OpenQASMили Qiskit программы, или когда вы хотите отобразить квантовое состояние программы во время моделирования.

Симулятор разреженных вычислений доступен как в расширении QDKдля Visual Studio Code (VS Code), так и в пакете QDKPython. Этот симулятор является единственным доступным симулятором в QDK расширении, поэтому компилятор автоматически вызывает разреженный симулятор при запуске Q# и OpenQASM программах в VS Code. С помощью разреженного симулятора в 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 доступен в пакете PythonQDK для программ Q#, OpenQASM, Qiskit и QIR, но недоступен в расширении QDK для VS Code.

Симулятор GPU

Симулятор GPU — это симулятор полного состояния, который использует компьютер GPU для параллельного выполнения множества снимков квантовой программы. Этот симулятор может запускать программы, содержащие любой тип ворот, но дорогостоящие для запуска. Симулятор может моделировать до 27 кубитов. Мощность GPU вашего компьютера определяет производительность, но оптимальная производительность достигается для программ с около 20 кубитами и большим количеством запусков.

Симулятор GPU принимает в качестве входных данных Qiskit или QIR и доступен через определённые API пакетов QDKPython, но не через расширение VS Code. Существует также расширенная поддержка моделей шума для любого типа квантовых ворот или операций.

Симулятор CPU

Как и симулятор GPU, симулятор CPU — это симулятор полного состояния, который может запускать программы, содержащие любой тип квантовых вентилей. Тем не менее, симулятор CPU медленнее, так как он не может выполнять несколько запусков параллельно. Этот симулятор масштабируется до 25 кубитов, но экспоненциально замедляется с увеличением числа кубитов вследствие ограничений памяти. Используйте симулятор, когда на вашем компьютере нет CPU, или когда в вашей программе мало кубитов и вы не выполняете много запусков.

Симулятор CPU принимает в качестве входных данных Qiskit или QIR и доступен через определённые API пакетов QDKPython, но не через расширение VS Code. Существует также богатая поддержка моделей шума для любого типа квантовых ворот или операций.

Какой симулятор следует использовать?

Лучший симулятор зависит от нескольких факторов, таких как:

  • Среда разработки (VS Code или Python)
  • Платформа квантового программирования, которую вы в настоящее время разрабатываете
  • Сложность вашей программы и количество кадров
  • Возможности оборудования локального компьютера
  • Целевые объекты Azure Quantum или другое квантовое оборудование, на которое вы хотите запустить программы
  • Модели шума, которые требуется создать

В следующей таблице перечислены QDK параметры и платформы квантового программирования, которые можно использовать для каждого симулятора:

Симулятор Доступность Поддерживаемые платформы
Разреженный Расширение VS Code и пакет Python Q# OpenQASM Qiskit
Clifford Python пакет Q#, OpenQASM, Qiskit, QIR
GPU Python пакет Qiskit, QIR
CPU Python пакет Qiskit, QIR

Симуляции в QDK расширении VS Code

Разреженный симулятор является единственным доступным симулятором в расширении VS Code QDK. Чтобы использовать разреженный симулятор, запустите файл Q# или OpenQASM в VS Code. Вы можете добавить ограниченные модели шума в разреженный симулятор для Q# программ в VS Code, но не для OpenQASM программ.

Моделирование в пакете QDKPython

Среда разработки QDKPython поддерживает несколько квантовых платформ и все четыре симулятора QDK, но не все симуляторы совместимы со всеми платформами и API.

В этой таблице показаны симуляторы, которые можно использовать для каждого Python API, который вызывает QDK симулятор, и платформу программирования, которую поддерживает каждый 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