Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
(Microsoft Quantum Development Kit) включает набор квантовых симуляторов, к которым можно получить доступ из Visual Studio Code расширения (VS Code) и QDKPython пакета.QDK Эти симуляторы позволяют проверить, как квантовые программы работают на реальном квантовом оборудовании. В этой статье объясняется, как установить симуляторы и как выполнять базовые имитации в Jupyter Notebook и VS Code.
В QDK состав входят четыре квантовых симулятора:
- Разреженный симулятор
- Симулятор Clifford
- Симулятор GPU
- Симулятор ЦП
Дополнительные сведения о QDK квантовых симуляторах см. в разделе "Обзор квантовых симуляторов" в этой QDKстатье.
Необходимые условия
Чтобы выполнить действия, описанные в этой статье, необходимо установить следующие средства:
- Среда Python (версия 3.10 или более поздней) с Python и Pip
- Последняя версия Visual Studio Code (VS Code)
- Последние версии расширений Python extension и Jupyter extension в VS Code
Установка симуляторов
Все четыре симулятора доступны в пакете QDKPython , но только разреженный симулятор доступен в QDKVS Code расширении.
Чтобы использовать симулятор разреженных схем в расширении VS Code, установите расширение QDK для VS Code.
Чтобы использовать квантовые симуляторы и PythonJupyter Notebookустановите последнюю версию qdkPython пакета с дополнительным jupyter :
pip install --upgrade "qdk[jupyter]"
Дополнение jupyter не обязательно для использования симуляторов, но устанавливает модуль qdk.widgets. Модуль widgets позволяет создавать визуализации на основе результатов моделирования в Jupyter Notebook.
Запуск моделирования с помощью расширения QDK для VS Code
Расширение QDK для VS Code поддерживает только разреженный симулятор. Чтобы запустить программу на разреженном симулятореVS Code, откройте программу .qs Q# (.qasm) или OpenQASM (VS Code) и запустите файл.
Например, выполните следующие действия, чтобы запустить одну из примеров программ Q#, которые поставляется с расширением QDK :
- Откройте VS Codeменю "Файл " и выберите новый текстовый файл.
- Присвойте файлу имя, которое заканчивается расширением
.qs. - В пустом файле введите пример. Откроется список включенных примеров кода.
- Выберите пример кода, например " Пара колокольчиков".
- Чтобы запустить программу на разреженном симуляторе, выберите команду Run в CodeLens над операцией Main.
Терминал VS Code показывает выходные данные из имитации.
Note
В расширении QDK можно добавлять ограниченные модели шума в разрежённые симуляции программ Q#. Дополнительные сведения см. в разделе "Добавление шума Паули" в разреженный симулятор VS Code.
Выполнение имитаций с помощью QDKPython пакета
Пакет QDKPython предлагает все четыре симулятора. То, как вызывать симуляторы, зависит от конкретного симулятора и среды квантового программирования.
Запустите разреженный симулятор
Вы можете вызвать разреженный симулятор для программ Q#, OpenQASM и Qiskit. В следующей таблице показано, как вызвать разреженный симулятор из qdk пакета для 10 снимков в каждой поддерживаемой квантовой платформе программирования.
| Платформа программирования | Python API | Пример вызова |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, shots=10) |
| Qiskit | qiskit.QSharpBackend |
QSharpBackend().run(my_qiskit_program, shots=10) |
Note
Вы можете добавить модели шума в разреженный симулятор с параметром noise для программ Q# и OpenQASM, но нельзя добавлять модели шума для программ Qiskit.
Например, выполните следующие действия, чтобы запустить программу Q# для пары Белла в блокноте Jupyter в VS Code:
Откройте VS Codeменю "Вид " и выберите палитру команд.
Введите Создать: Новый Jupyter Notebook. Пустой файл записной книжки открывается на новой вкладке.
В первой ячейке импортируйте
qsharpмодуль изqdkпакета.from qdk import qsharpВ новой ячейке используйте магическую
%%qsharpкоманду для записи кода Q#.%%qsharp operation Main() : (Result, Result) { use (q1, q2) = (Qubit(), Qubit()); PrepareBellPair(q1, q2); (MResetZ(q1), MResetZ(q2)) } operation PrepareBellPair(q1 : Qubit, q2 : Qubit) : Unit { H(q1); CNOT(q1, q2); }Создайте новую ячейку. Чтобы запустить программу Q# на разреженном симуляторе, вызовите
runфункцию изqsharpмодуля и укажите количество снимков.qsharp.run("Main()", shots=10)
Вызов симулятора Clifford
Вы можете вызвать симулятор Clifford для программ Q#, OpenQASM, Qiskit и QIR. В следующей таблице показано, как вызвать симулятор Clifford из qdk пакета для 10 снимков в каждой поддерживаемой квантовой платформе программирования.
| Платформа программирования | Python API | Пример вызова |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", type='clifford', shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, type='clifford', shots=10) |
| Qiskit | simulation.NeutralAtomBackend |
simulation.NeutralAtomBackend().run(my_qiskit_program, simulator_type='clifford', shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type='clifford', shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type='clifford', shots=10) |
Note
API NeutralAtomDevice и NeutralAtomBackend предназначены специально для моделирования на квантовых компьютерах на нейтральных атомах. Дополнительные сведения см. в обзоре симулятора устройства на нейтральных атомах.
Например, следующий код Python создает простую программу OpenQASM и запускает программу на симуляторе Clifford:
from qdk.openqasm import run
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
run(qasm_code, type='clifford', shots=10)
Вызовите симуляторы GPU и CPU
Вы можете вызывать симуляторы GPU и ЦП для программ Qiskit и QIR. В следующей таблице показано, как вызвать симулятор GPU из qdk пакета для 10 снимков в каждой из поддерживаемых платформ квантового программирования. Чтобы вызвать симулятор ЦП, замените 'gpu' на 'cpu' в параметрах типа симулятора.
| Платформа программирования | Python API | Пример вызова |
|---|---|---|
| Qiskit | simulation.NeutralAtomBackend |
simulation.NeutralAtomBackend().run(my_qiskit_program, simulator_type='gpu', shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type='gpu', shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type='gpu', shots=10) |
Например, следующий код Python преобразует простую программу OpenQASM в QIR и запускает QIR на симуляторе GPU:
from qdk.openqasm import compile#, ProgramType
from qdk.simulation import run_qir
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
qir = compile(qasm_code)
run_qir(qir, type='gpu', shots=10)