次の方法で共有


Rigetti プロバイダー

ヒント

Azure Quantum ワークスペースを作成すると、量子ハードウェア プロバイダーごとに自動的に USD500 無料 Azure Quantum クレジット が取得されます。 Azure Quantum クレジットを使用して、最初の量子プログラムを実際の量子ハードウェアに送信できます。

Note

Ankaa-2 QPU は、2024 年 10 月 4 日の時点で Azure Quantum サービスから非推奨になりました。

Rigetti 量子プロセッサは、調整可能な超伝導量子ビットに基づくユニバーサルなゲートモデル マシンです。 システムの特徴とデバイス特性には、読み出し機能の強化、量子処理時間の高速化、複数のエンタングリング ゲート ファミリでの高速ゲート時間、アクティブ レジスタ リセットによる迅速なサンプリング、パラメトリック制御が含まれます。

  • 発行元: Rigetti
  • プロバイダー ID: rigetti

Rigetti プロバイダーは、次の targets を使用できるようにします。

Target 名 Target 身分証明書 量子ビット数 説明
Quantum Virtual Machine (QVM) rigetti.sim.qvm - Quil、Q#、および Qiskit プログラム用のオープンソース シミュレーター。 無料。

Note

Rigetti シミュレーターとハードウェア targets は、Cirq プログラムをサポートしていません。

Rigetti の targets は、 QIR Base プロファイルに対応します。 このtarget プロファイルとその制限の詳細については、「Azure Quantum でのtarget プロファイルの種類のの理解」を参照してください

シミュレーター

Quantum Virtual Machine (QVM) は、Quil 用のオープンソース シミュレーターです。 rigetti.sim.qvmtargetは、Quil プログラムをテキストとして受け入れ、クラウドでホストされている QVM でそのプログラムを実行し、シミュレートされた結果を返します。

  • ジョブの種類: Simulation
  • データ形式: rigetti.quil.v1rigetti.qir.v1
  • Target 身分証明書: rigetti.sim.qvm
  • Target 実行プロファイル: QIR Base
  • 価格: 無料 ($0)

価格

Rigetti の課金プランを確認するには、「Azure Quantum の価格」を参照してください。

入力形式

現在、すべての Rigetti targets は次の 2 つの形式を受け入れます。

  • rigetti.quil.v1。これは Quil プログラムのテキストです。
  • rigetti.qir.v1。これは QIR ビットコードです。

すべての targets は、実行するショットの数を定義するための省略可能な count 整数パラメーターも受け取ります。 省略した場合、プログラムは 1 回だけ実行されます。

Quil

すべての Rigetti targets 、 rigetti.quil.v1 入力形式を受け入れます。これは、Quantum Instruction Language を表す Quil プログラムのテキストです。 既定では、プログラムは実行前に quilc を使用してコンパイルされます。 ただし、quilc はパルス レベルの制御機能 (Quil-T) をサポートしていないため、これらの機能を使用する場合は、入力としてネイティブ Quil プログラム (Quil-T も含む) を指定し、入力パラメーター skipQuilc: true を指定する必要があります。

Quil プログラムの構築を容易にするために、pyquil-for-azure-quantum パッケージと共に pyQuil を使用できます。 このパッケージがない場合、Quil プログラムを "構築" するために pyQuil を使用できますが、Azure Quantum に送信することはできません。

QIR

すべての Rigetti ハードウェアは、rigetti.qir.v1としてQIR Base プロファイル v1 を使用して、Quantum Intermediate Representation (QIR) に準拠したジョブの実行をサポートします。 QIR は、量子計算のために多くの量子言語と target プラットフォームをサポートし、高レベルの言語とマシン間の通信を可能にする共通インターフェイスを提供します。 たとえば、Q#、Quil、または Qiskit ジョブを Rigetti ハードウェアに送信すると、Azure Quantum によって自動的に入力が処理されます。 詳細については、Quantum Intermediate Representationを参照してください。

適切な入力形式の選択

Quil または別の QIR 準拠言語を使用する必要がありますか? これは最終的なユース ケースで決まります。 QIR は多くのユーザーにとってアクセスしやすい一方で、現在は Quil の方がより強力です。

QIR の生成をサポートする Qiskit、Q#、または別のツールキットを使用していて、アプリケーションが Azure Quantum 経由で Rigetti targets で動作する場合は、QIR が適しています。 QIR の仕様は急速に進化しており、Rigetti は時間が経つにつれて、より高度な QIR プログラムのサポートを増やし続けています。今日コンパイルできないものは、明日もコンパイルされる可能性があります。

一方、Quil プログラムは、Azure Quantum を含む任意のプラットフォームから Rigetti システムのユーザーが利用できる機能の完全なセットを表現します。 量子ゲートの分解を調整したり、パルス レベルでプログラムを記述したりする場合は、QIR ではこれらの機能がまだ使用できないため、Quil で作業する必要があります。

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}")