Megosztás a következőn keresztül:


Rigetti-szolgáltató

Tipp.

Az első felhasználók automatikusan kapnak 500 USD ingyenes Azure Quantum Credit-krediteket az egyes részt vevő kvantumhardver-szolgáltatókhoz való használatra. Ha felhasználta az összes kreditet, és többre van szüksége, az Azure Quantum Credits programra is jelentkezhet.

A Rigetti kvantumprocesszorok univerzális, kapumodelles gépek, amelyek tonhalható szupravezető qubiteken alapulnak. A rendszerfunkciók és az eszköz jellemzői közé tartoznak a fokozott olvasási képességek, a kvantumfeldolgozási idő felgyorsítása, a több összecsukható kapucsalád gyors kapuideje, a gyors mintavételezés az aktív regisztráció alaphelyzetbe állításával és a parametrikus vezérléssel.

  • Kiadó: Rigetti
  • Szolgáltató azonosítója: rigetti

A Rigetti-szolgáltató a következőket targets teszi elérhetővé:

Célnév Célazonosító Qubitek száma Leírás
Kvantum virtuális gép (QVM) rigetti.sim.qvm - Nyílt forráskódú szimulátor Quil-, Q#- és Qiskit-programokhoz. Ingyenes.
Ankaa-2 rigetti.qpu.ankaa-2 84 qubit Rigetti legerősebb elérhető kvantumprocesszora.

Feljegyzés

A Rigetti-szimulátorok és a hardverek targets nem támogatják a Cirq-programokat.

Rigetti targets egy profilnak felel meg QIR Base . A profilról és annak korlátairól target további információt az Azure Quantum profiltípusainak ismertetése target című témakörben talál.

Szimulátorok

A Quantum Virtual Machine (QVM) a Quil nyílt forráskódú szimulátora. A rigetti.sim.qvmtarget Quil-programot szövegként fogadja el, és a programot a felhőben üzemeltetett QVM-en futtatja, szimulált eredményeket ad vissza.

  • Feladat típusa: Simulation
  • Adatformátumok: rigetti.quil.v1, rigetti.qir.v1
  • Célazonosító: rigetti.sim.qvm
  • Célvégrehajtási profil: QIR Base
  • Díjszabás: Ingyenes (0 USD)

Kvantumszámítógépek

A Rigetti összes nyilvánosan elérhető QPU-je az Azure Quantumon keresztül érhető el. A lista előzetes értesítés nélkül változhat.

Ankaa-2

Egy többlapkás, 84 qubites processzor, amely 2,5-szeres teljesítménybeli javulást kínál más Rigetti QPU-khoz.

  • Feladat típusa: Quantum Program
  • Adatformátum: rigetti.quil.v1, rigetti.qir.v1
  • Célazonosító: rigetti.qpu.ankaa-2
  • Célvégrehajtási profil: QIR Base

Díjszabás

A Rigetti számlázási csomagjának megtekintéséhez látogasson el az Azure Quantum díjszabására.

Bemeneti formátum

Az összes Rigetti targets jelenleg két formátumot fogad el:

  • rigetti.quil.v1, amely egy Quil-program szövege.
  • rigetti.qir.v1, amely a QIR-bitkód.

A targets futtatandó felvételek számának meghatározásához a választható count egész szám paramétert is figyelembe kell venni. Ha nincs megadva, a program csak egyszer fut.

Quil

Minden Rigetti targets elfogadja a rigetti.quil.v1 bemeneti formátumot, amely egy Quil-program szövege, amely a Quantum Instruction Language nevet jelenti. Alapértelmezés szerint a programok a quilc használatával vannak lefordítva a futtatás előtt. A quilc azonban nem támogatja az impulzusszint-vezérlési funkciókat (Quil-T), ezért ha használni szeretné ezeket a funkciókat, meg kell adnia egy natív Quil-programot (amely a Quil-T-t is tartalmazza) bemenetként, és meg kell adnia a bemeneti paramétert skipQuilc: true.

A Quil-program létrehozásának megkönnyítése érdekében a csomaggal együtt használhatjapyQuil.pyquil-for-azure-quantum A csomag nélkül quil-programok létrehozására használható, pyQuil de nem küldhető el az Azure Quantumba.

QIR

Minden Rigetti-hardver támogatja a (QIR) megfelelő feladatok végrehajtását Quantum Intermediate Representation a QIR Base profillal, v1-ként.rigetti.qir.v1 A QIR egy közös felületet biztosít, amely számos kvantumnyelvet és target platformot támogat a kvantumszámításhoz, és lehetővé teszi a magas szintű nyelvek és gépek közötti kommunikációt. Beküldheti például a Q#, Quil vagy Qiskit feladatokat a Rigetti hardverbe, és az Azure Quantum automatikusan kezeli a bemenetet. További információ: Quantum Intermediate Representation.

A megfelelő bemeneti formátum kiválasztása

Használjon Quil-t vagy más QIR-kompatibilis nyelvet? Ez a végfelhasználási ügyön múlik. A QIR sok felhasználó számára elérhetőbb, míg a Quil ma még hatékonyabb.

Ha Qiskitet, Q#-ot vagy más olyan eszközkészletet használ, amely támogatja a QIR-generációt, és az alkalmazás az Azure Quantumon keresztül működik a Rigettien targets , akkor a QIR önnek megfelelő! A QIR gyorsan fejlődő specifikációval rendelkezik, és a Rigetti folyamatosan növeli a fejlettebb QIR-programok támogatását az idő múlásával – ami ma nem fordítható le, holnap már jól fordítható.

Másrészt a Quil-programok a Rigetti-rendszerek felhasználói számára elérhető funkciók teljes készletét fejezik ki bármely platformról, beleértve az Azure Quantumot is. Ha a kvantumkapuk felbontását szeretné testre szabni, vagy impulzusszinten szeretné írni a programokat, akkor érdemes a Quilben dolgoznia, mert ezek a képességek még nem érhetők el a QIR-en keresztül.

Példák

A Quil-feladatok elküldésének legegyszerűbb módja a pyquil-for-azure-quantum csomag használata, mivel lehetővé teszi a pyQuil kódtár eszközeinek és dokumentációjának használatát.

A Quil-programokat manuálisan is létrehozhatja, és közvetlenül a azure-quantum csomag használatával küldheti el őket.

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
# qc = get_qpu("Ankaa-2") for submitting to a QPU

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