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

(Microsoft Quantum Development Kit) включает набор квантовых симуляторов, к которым можно получить доступ из Visual Studio Code расширения (VS Code) и QDKPython пакета.QDK Эти симуляторы позволяют проверить, как квантовые программы работают на реальном квантовом оборудовании. В этой статье объясняется, как установить симуляторы и как выполнять базовые имитации в Jupyter Notebook и VS Code.

В QDK состав входят четыре квантовых симулятора:

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

Дополнительные сведения о QDK квантовых симуляторах см. в разделе "Обзор квантовых симуляторов" в этой QDKстатье.

Необходимые условия

Чтобы выполнить действия, описанные в этой статье, необходимо установить следующие средства:

Установка симуляторов

Все четыре симулятора доступны в пакете 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 :

  1. Откройте VS Codeменю "Файл " и выберите новый текстовый файл.
  2. Присвойте файлу имя, которое заканчивается расширением .qs .
  3. В пустом файле введите пример. Откроется список включенных примеров кода.
  4. Выберите пример кода, например " Пара колокольчиков".
  5. Чтобы запустить программу на разреженном симуляторе, выберите команду 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:

  1. Откройте VS Codeменю "Вид " и выберите палитру команд.

  2. Введите Создать: Новый Jupyter Notebook. Пустой файл записной книжки открывается на новой вкладке.

  3. В первой ячейке импортируйте qsharp модуль из qdk пакета.

    from qdk import qsharp
    
  4. В новой ячейке используйте магическую %%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);
    }
    
  5. Создайте новую ячейку. Чтобы запустить программу 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)