Rigetti 공급자
팁
Azure Quantum 작업 영역을 만들 때 각 양자 하드웨어 공급자에 대해 USD500 무료 Azure Quantum 크레딧을 자동으로 받습니다. Azure Quantum 크레딧을 사용하여 첫 번째 양자 프로그램을 실제 양자 하드웨어에 제출할 수 있습니다.
참고 항목
Ankaa-2 QPU는 2024년 10월 4일부터 Azure Quantum 서비스에서 사용되지 않습니다.
Rigetti 양자 프로세서는 튜닝 가능한 초전도 큐비트를 기반으로 하는 범용 게이트 모델 머신입니다. 시스템 기능 및 디바이스 특성에는 향상된 판독 기능, 양자 처리 시간의 속도 향상, 여러 얽힌 게이트 제품군에 대한 빠른 게이트 시간, 활성 레지스터 재설정을 통한 빠른 샘플링 및 파라메트릭 제어가 포함됩니다.
- 게시자: Rigetti
- 공급자 ID:
rigetti
Rigetti 공급자는 다음 targets 을 사용할 수 있도록 합니다.
Target 이름 | Target 아이디 | 큐비트 수 | 설명 |
---|---|---|---|
QVM(Quantum Virtual Machine) | rigetti.sim.qvm | - | Quil, Q#및 Qiskit 프로그램에 대한 오픈 소스 시뮬레이터입니다. 무료입니다. |
참고 항목
Rigetti 시뮬레이터 및 하드웨어 targets 는 Cirq 프로그램을 지원하지 않습니다.
Rigetti는 targets 프로필에 QIR Base 해당합니다. 이 프로필 및 해당 target 제한 사항에 대한 자세한 내용은 Azure Quantum의 프로필 형식 이해를 target 참조하세요.
시뮬레이터
QVM(Quantum Virtual Machine)은 Quil을 위한 오픈 소스 시뮬레이터입니다. Quil rigetti.sim.qvm
target 프로그램을 텍스트로 수락하고 클라우드에서 호스트되는 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 는 양자 명령 언어를 나타내는 Quil 프로그램의 텍스트인 입력 형식을 허용 rigetti.quil.v1
합니다. 기본적으로 프로그램은 실행하기 전에 quilc를 사용하여 컴파일됩니다. 그러나 quilc는 펄스 수준 제어 기능(Quil-T)을 지원하지 않으므로 이러한 기능을 사용하려면 네이티브 Quil 프로그램(Quil-T 포함)을 입력으로 제공하고 입력 매개 변수 skipQuilc: true
를 지정해야 합니다.
Quil 프로그램을 더 쉽게 구성하기 위해 pyquil-for-azure-quantum
패키지와 함께 pyQuil
을 사용할 수 있습니다. 이 패키지가 없으면 pyQuil
을 사용하여 Quil 프로그램을 구성할 수 있지만 Azure Quantum에 제출할 수는 없습니다.
QIR
모든 Rigetti 하드웨어는 Profile, v1을 로 rigetti.qir.v1
사용하여 QIR(규격 작업QIR Base)의 Quantum Intermediate Representation 실행을 지원합니다. 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
라이브러리의 도구 및 설명서를 사용할 수 있으므로 pyquil-for-azure-quantum
패키지를 사용하는 것입니다.
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}")