Proveedor Rigetti
Sugerencia
Al crear un área de trabajo de Azure Quantum, obtendrá automáticamente créditos gratuitos de Azure Quantum de USD500 para cada proveedor de hardware cuántico. Puede usar los créditos de Azure Quantum para enviar los primeros programas cuánticos al hardware cuántico real.
Nota:
La QPU ankaa-2 está en desuso desde el servicio Azure Quantum a partir del 4 de octubre de 2024.
Los procesadores cuánticos Rigetti son máquinas universales de modelo de puerta basadas en cúbits superconductores ajustables. Las características del sistema y las características del dispositivo incluyen funcionalidades de lectura mejoradas, una aceleración en los tiempos de procesamiento cuánticos, tiempos de puerta rápidos para varias familias de puertas entrelazadas, muestreo rápido a través del restablecimiento de registro activo y control paramétrico.
- Publicador: Rigetti
- Identificador de proveedor:
rigetti
El proveedor Rigetti pone a disposición lo siguiente targets :
Nombre Target | Id. de Target | Número de cúbits | Descripción |
---|---|---|---|
Máquina virtual cuántica (QVM) | rigetti.sim.qvm | - | Simulador de código abierto para programas Quil, Q#y Qiskit. Sin costo. |
Nota:
Los simuladores y hardware targets de Rigetti no admiten programas Cirq.
Los de targets Rigetti corresponden a un QIR Base perfil. Para más información sobre este target perfil y sus limitaciones, consulte Descripción target de los tipos de perfil en Azure Quantum.
Simuladores
La máquina virtual cuántica (QVM) es un simulador de código abierto para Quil. rigetti.sim.qvm
target acepta un programa Quil como texto y ejecuta ese programa en QVM hospedado en la nube y devuelve resultados simulados.
- Tipo de trabajo:
Simulation
- Formatos de datos:
rigetti.quil.v1
,rigetti.qir.v1
- Target IDENTIFICACIÓN:
rigetti.sim.qvm
- Target Perfil de ejecución: QIR Base
- Precios: gratis (0 USD)
Precios
Para ver el plan de facturación de Rigetti, consulte Precios de Azure Quantum.
Formato de entrada
Todos Rigetti targets actualmente aceptan dos formatos:
rigetti.quil.v1
, que es el texto de un programa de Quil.rigetti.qir.v1
, que es el bitcode de QIR.
Todo targets también toma el parámetro entero opcional count
para definir el número de capturas que se van a ejecutar. Si se omite, el programa solo se ejecuta una vez.
Quil
All Rigetti targets acepta el rigetti.quil.v1
formato de entrada, que es el texto de un programa Quil , que representa el lenguaje de instrucción cuántica. De forma predeterminada, los programas se compilan mediante quilc antes de ejecutarse. Sin embargo, quilc no admite las características de control de nivel de pulso (Quil-T), por lo que, si desea usar esas características, debe proporcionar un programa de native Quil (que también contiene Quil-T) como entrada y especificar el parámetro de entrada skipQuilc: true
.
Para facilitar la construcción de un programa de Quil, puede usar pyQuil
junto con el paquete pyquil-for-azure-quantum
. Sin este paquete, pyQuil
se puede usar para construir programas de Quil, pero no para enviarlos a Azure Quantum.
QIR
Todo el hardware rigetti admite la ejecución de Quantum Intermediate Representation trabajos compatibles (QIR) con profile QIR Base , v1 como rigetti.qir.v1
. QIR proporciona una interfaz común que admite muchos lenguajes cuánticos y target plataformas para el cálculo cuántico y permite la comunicación entre lenguajes y máquinas de alto nivel. Por ejemplo, puede enviar trabajos de Q#, Quil o Qiskit al hardware rigetti y Azure Quantum controla automáticamente la entrada automáticamente. Para obtener más información, vea Quantum Intermediate Representation.
Selección del formato de entrada correcto
¿Debe usar Quil u otro lenguaje compatible con QIR? Todo depende del caso de uso final. QIR es más accesible para muchos usuarios, mientras que Quil es más eficaz hoy en día.
Si usa Qiskit, Q#, u otro kit de herramientas que admita la generación de QIR, y la aplicación funciona en Rigetti targets a través de Azure Quantum, QIR es adecuado para usted. QIR tiene una especificación en constante evolución, y Rigetti sigue aumentando el soporte para programas QIR más avanzados a medida que pasa el tiempo, lo que no se puede compilar hoy puede bien compilar mañana.
Por otro lado, los programas de Quil expresan el conjunto completo de funcionalidades disponibles para los usuarios de sistemas Rigetti desde cualquier plataforma, incluido Azure Quantum. Si desea adaptar la descomposición de las puertas cuánticas o escribir programas en el nivel de pulso, querrá trabajar en Quil, ya que esas funcionalidades aún no están disponibles a través de QIR.
Ejemplos
La manera más fácil de enviar trabajos de Quil es usar el paquete pyquil-for-azure-quantum
, ya que permite usar las herramientas y la documentación de la biblioteca pyQuil
.
También puede construir programas de Quil manualmente y enviarlos directamente mediante el paquete 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}")