Rigetti-provider
Tip
Wanneer u een Azure Quantum-werkruimte maakt, krijgt u automatisch gratis Azure Quantum-tegoed van USD500 voor elke kwantumhardwareprovider. U kunt het Azure Quantum-tegoed gebruiken om uw eerste kwantumprogramma's naar echte kwantumhardware te verzenden.
Notitie
De QPU van Ankaa-2 is vanaf 4 oktober 2024 afgeschaft uit de Azure Quantum-service.
Rigetti-kwantumprocessors zijn universele, gate-modelmachines op basis van niet-supergeleidende qubits. Systeemfuncties en apparaatkenmerken omvatten verbeterde leesmogelijkheden, een versnelling in kwantumverwerkingstijden, snelle poorttijden voor meerdere verstrengelingspoortfamilies, snelle steekproeven via actieve registerherstel en parametrische controle.
- Uitgever: Rigetti
- Provider-id:
rigetti
De Rigetti-provider maakt het volgende targets beschikbaar:
Target naam | Target-id | Aantal qubits | Beschrijving |
---|---|---|---|
Kwantum-VM (QVM) | rigetti.sim.qvm | - | Opensource-simulator voor Quil-, Q#- en Qiskit-programma's. Gratis. |
Notitie
Rigetti simulators en hardware targets bieden geen ondersteuning voor Cirq-programma's.
Rigetti komt targets overeen met een QIR Base profiel. Zie Profieltypen in Azure Quantum voor target meer informatie over dit target profiel en de beperkingen ervan.
Simulators
De Quantum Virtual Machine (QVM) is een opensource-simulator voor Quil. Het rigetti.sim.qvm
target accepteert een Quil-programma als tekst en voert dat programma uit op QVM die wordt gehost in de cloud, waardoor gesimuleerde resultaten worden geretourneerd.
- Taaktype:
Simulation
- Gegevensindelingen:
rigetti.quil.v1
,rigetti.qir.v1
- Target LEGITIMATIEBEWIJS:
rigetti.sim.qvm
- Target Uitvoeringsprofiel: QIR Base
- Prijzen: Gratis ($ 0)
Prijzen
Als u het factureringsplan van Rigetti wilt zien, gaat u naar de prijzen van Azure Quantum.
Invoerindeling
Alle Rigetti targets accepteren momenteel twee indelingen:
rigetti.quil.v1
, dat is de tekst van een Quil-programma .rigetti.qir.v1
, wat QIR-bitcode is.
Alle targets nemen ook de optionele count
integerparameter voor het definiƫren van het aantal schermafbeeldingen dat moet worden uitgevoerd. Als u dit weglaat, wordt het programma slechts eenmaal uitgevoerd.
Quil
Alle Rigetti targets accepteren de rigetti.quil.v1
invoerindeling, de tekst van een Quil-programma , dat staat voor Quantum Instruction Language. Standaard worden programma's gecompileerd met quilc voordat ze worden uitgevoerd. Quilc biedt echter geen ondersteuning voor de pulsniveaubesturingsfuncties (Quil-T), dus als u deze functies wilt gebruiken, moet u een Systeemeigen Quil-programma (ook met Quil-T) als invoer opgeven en de invoerparameter skipQuilc: true
opgeven.
Als u het bouwen van een Quil-programma eenvoudiger wilt maken, kunt u dit samen met het pyquil-for-azure-quantum
pakket gebruikenpyQuil
. Zonder dit pakket kunt u Quil-programma's maken, pyQuil
maar niet verzenden naar Azure Quantum.
QIR
Alle Rigetti-hardware ondersteunt de uitvoering van Quantum Intermediate Representation (QIR)-compatibele taken met het QIR Base profiel, v1 als rigetti.qir.v1
. QIR biedt een algemene interface die ondersteuning biedt voor veel kwantumtalen en target -platforms voor kwantumberekeningen en maakt communicatie mogelijk tussen talen en computers op hoog niveau. U kunt bijvoorbeeld Q#-, Quil- of Qiskit-taken verzenden naar Rigetti-hardware en Azure Quantum verwerkt automatisch de invoer voor u. Zie Quantum Intermediate Representation voor meer informatie.
De juiste invoerindeling selecteren
Moet u Quil of een andere QIR-compatibele taal gebruiken? Het komt neer op uw end use case. QIR is toegankelijker voor veel gebruikers, terwijl Quil tegenwoordig krachtiger is.
Als u Qiskit, Q# of een andere toolkit gebruikt die QIR-generatie ondersteunt en uw toepassing werkt op Rigetti targets via Azure Quantum, is QIR geschikt voor u. QIR heeft een snel veranderende specificatie en Rigetti blijft de ondersteuning voor geavanceerdere QIR-programma's verhogen naarmate de tijd verstrijkt- wat vandaag niet vandaag kan worden gecompileerd, kan morgen goed worden gecompileerd.
Aan de andere kant tonen Quil-programma's de volledige set functionaliteiten die beschikbaar zijn voor gebruikers van Rigetti-systemen vanaf elk platform, waaronder Azure Quantum. Als u de ontleding van uw kwantumpoorten wilt aanpassen of programma's wilt schrijven op pulseniveau, wilt u werken in Quil, omdat deze mogelijkheden nog niet beschikbaar zijn via QIR.
Voorbeelden
De eenvoudigste manier om Quil-taken in te dienen, is door het pyquil-for-azure-quantum
pakket te gebruiken, omdat u hiermee de hulpprogramma's en documentatie van de pyQuil
bibliotheek kunt gebruiken.
U kunt Quil-programma's ook handmatig maken en verzenden met behulp van het azure-quantum
pakket rechtstreeks.
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}")