Поделиться через


Поставщик Rigetti

Совет

При создании рабочей области Azure Quantum вы автоматически получаете бесплатные кредиты Azure Quantum для каждого поставщика квантового оборудования. Вы можете использовать кредиты Azure Quantum для отправки первых квантовых программ в реальное квантовое оборудование.

Примечание.

QPU Ankaa-2 устарел из службы Azure Quantum с 4 октября 2024 года.

Квантовые процессоры Rigetti — это универсальные компьютеры с моделью шлюзов на основе настраиваемых сверхпроводящих кубитов. Системные функции и характеристики устройства включают расширенные возможности чтения, ускорение квантовой обработки, быстрое время шлюза для нескольких запутанных семейств шлюзов, быструю выборку с помощью активного сброса регистра и параметрическое управление.

  • Издатель: Rigetti
  • Идентификатор поставщика: rigetti

Поставщик Rigetti предоставляет следующие targets возможности:

Имя в Target Target ИДЕНТИФИКАТОР Количество кубит Description
Quantum Virtual Machine (QVM) rigetti.sim.qvm - Симулятор с открытым исходным кодом для программ Quil, Q#и Qiskit. Бесплатно.

Примечание.

Симуляторы Rigetti и оборудование targets не поддерживают программы Cirq.

Rigetti targets соответствует профилю QIR Base . Дополнительные сведения об этом target профиле и его ограничениях см. в разделе "Общие target сведения о типах профилей" в Azure Quantum.

Симуляторы

The Quantum Virtual Machine (QVM) — это симулятор с открытым кодом для Quil. Программа rigetti.sim.qvmtarget Quil принимает в качестве текста и запускает эту программу на QVM, размещенной в облаке, возвращая имитированные результаты.

  • Тип задания: Simulation
  • Форматы данных: rigetti.quil.v1, rigetti.qir.v1
  • Target ИДЕНТИФИКАТОР: rigetti.sim.qvm
  • Target Профиль выполнения: QIR Base
  • Ценовая категория: бесплатно (0 долл. США)

Цены

Чтобы просмотреть план выставления счетов для Rigetti, перейдите на страницу цен для Azure Quantum.

Формат входных данных

Все Rigetti targets в настоящее время принимают два формата:

  • rigetti.quil.v1, который является текстом программы Quil.
  • rigetti.qir.v1, который является QIR bitcode.

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

Quil

Все Rigetti targets принимают входной rigetti.quil.v1 формат, который является текстом программы Quil , которая соответствует языку квантовых инструкций. По умолчанию программы компилируются с помощью quilc перед выполнением. Однако quilc не поддерживает функции управления на уровне импульса (Quil-T), поэтому если вы хотите использовать эти функции, необходимо предоставить собственную программу Quil (также содержащую Quil-T) в качестве входных данных и указать входной параметр skipQuilc: true.

Чтобы упростить создание программы Quil, можно использовать pyQuil вместе с пакетом pyquil-for-azure-quantum. Без этого пакета pyQuil можно использовать для создания программ Quil, но не для отправки их в Azure Quantum.

QIR

Все оборудование Rigetti поддерживает выполнение заданий, совместимых Quantum Intermediate Representation с QIR, с профилем QIR Base версии 1 как rigetti.qir.v1. QIR предоставляет общий интерфейс, который поддерживает множество квантовых языков и target платформ для квантовых вычислений и обеспечивает взаимодействие между высокоуровневые языки и компьютеры. Например, можно отправлять задания Q#, Quil или Qiskit в оборудование Rigetti, а Azure Quantum автоматически обрабатывает входные данные. Дополнительные сведения см. в разделе Quantum Intermediate Representation.

Выбор правильного формата ввода

Следует ли использовать Quil или другой язык, совместимый с QIR? Это сводится к вашему варианту использования. QIR является более доступным для многих пользователей, в то время как Quil на данный момент является более мощным.

Если вы используете Qiskit, Q#или другой набор средств, поддерживающий создание QIR, и приложение работает в Rigetti targets через Azure Quantum, то QIR подходит для вас! QIR имеет быстро развивающуюся спецификацию, и Rigetti продолжает увеличивать поддержку более сложных программ QIR, как проходит время - то, что нельзя скомпилировать сегодня, может хорошо скомпилировать завтра.

С другой стороны, программы Quil выражают полный набор функциональных возможностей, доступных пользователям систем Rigetti с любой платформы, включая Azure Quantum. Если вы хотите адаптировать декомпозицию квантовых шлюзов или писать программы на уровне импульса, тогда вам следует работать в Quil, так как эти возможности пока не доступны через QIR.

Примеры

Самым простым способом отправки заданий Quil является использование пакета pyquil-for-azure-quantum, так как он позволяет использовать средства и документацию библиотеки pyQuil.

Вы также можете создавать программы Quil вручную и отправлять их напрямую с помощью пакета azure-quantum.

from pyquil.gates import CNOT, MEASURE, H
from pyquil.quil import Program
from pyquil.quilbase import Declare
from pyquil_for_azure_quantum import get_qpu, get_qvm

# Note that some environment variables must be set to authenticate with Azure Quantum
qc = get_qvm()  # For simulation

program = Program(
    Declare("ro", "BIT", 2),
    H(0),
    CNOT(0, 1),
    MEASURE(0, ("ro", 0)),
    MEASURE(1, ("ro", 1)),
).wrap_in_numshots_loop(5)

# Optionally pass to_native_gates=False to .compile() to skip the compilation stage
result = qc.run(qc.compile(program))
data_per_shot = result.readout_data["ro"]
# Here, data_per_shot is a numpy array, so you can use numpy methods
assert data_per_shot.shape == (5, 2)
ro_data_first_shot = data_per_shot[0]
assert ro_data_first_shot[0] == 1 or ro_data_first_shot[0] == 0

# Let's print out all the data
print("Data from 'ro' register:")
for i, shot in enumerate(data_per_shot):
    print(f"Shot {i}: {shot}")