Provedor Rigetti
Dica
Ao criar um workspace do Azure Quantum, você recebe automaticamente US$ 500 gratuitos em Créditos do Azure Quantum para cada provedor de hardware quântico. Você pode usar os Créditos do Azure Quantum para enviar seus primeiros programas quânticos para hardware quântico real.
Observação
A QPU Ankaa-2 foi preterida do serviço Azure Quantum a partir de 4 de outubro de 2024.
Os processadores quânticos do Rigetti são computadores universais do modelo de portão com base em qubits de supercondutores ajustáveis. Os recursos do sistema e as características do dispositivo incluem recursos de leitura aprimorados, uma aceleração nos tempos de processamento quântico, tempos de porta rápidos para várias famílias de portas emaranhadas, amostragem rápida por meio de redefinição de registro ativo e controle paramétrico.
- Publicador: Rigetti
- ID do provedor:
rigetti
O provedor Rigetti disponibiliza o seguinte targets :
nome de Target | ID do Target | Número de qubits | Descrição |
---|---|---|---|
Máquina Virtual Quântica (QVM) | rigetti.sim.qvm | - | Simulador de software livre para programas Quil, Q# e Qiskit. Sem custo. |
Observação
Os simuladores e hardware targets Rigetti não suportam programas Cirq.
Os de targets Rigetti correspondem a um QIR Base perfil. Para obter mais informações sobre esse target perfil e suas limitações, consulte Noções básicas sobre target tipos de perfil no Azure Quantum.
Simuladores
A Máquina Virtual Quântica (QVM) é um simulador de software livre para Quil. O rigetti.sim.qvm
target aceita um programa Quil como texto e executa esse programa no QVM hospedado na nuvem, retornando resultados simulados.
- Tipo de trabalho:
Simulation
- Formatos de dados:
rigetti.quil.v1
,rigetti.qir.v1
- Target ID:
rigetti.sim.qvm
- Target Perfil de execução: QIR Base
- Preço: gratuito (US$ 0,00)
Preços
Para ver o plano de cobrança da Rigetti, visite os preços do Azure Quantum.
Formato de entrada
Todos os Rigetti targets atualmente aceitam dois formatos:
rigetti.quil.v1
, que é o texto de um programa Quil.rigetti.qir.v1
, que é o bitcode QIR.
Todos targets também usam o parâmetro inteiro opcional count
para definir o número de disparos a serem executados. Se omitido, o programa será executado apenas uma vez.
Quil
Todos os Rigetti targets aceitam o rigetti.quil.v1
formato de entrada, que é o texto de um programa Quil , que significa Quantum Instruction Language. Por padrão, os programas são compilados usando quilc antes de serem executados. No entanto, o quilc não dá suporte aos recursos de controle de nível de pulso (Quil-T), portanto, se você quiser usar esses recursos, deverá fornecer um programa Quil nativo (contendo também Quil-T) como entrada e especificar o parâmetro de entrada skipQuilc: true
.
Para facilitar a construção de um programa Quil, você pode usar pyQuil
junto com o pacote pyquil-for-azure-quantum
. Sem esse pacote, pyQuil
pode ser usado para construir programas Quil, mas não para enviá-los ao Azure Quantum.
QIR
Todo o hardware Rigetti suporta a execução de Quantum Intermediate Representation trabalhos compatíveis com (QIR) com o QIR Base Profile, v1 como rigetti.qir.v1
. O QIR fornece uma interface comum que suporta muitas linguagens e target plataformas quânticas para computação quântica e permite a comunicação entre linguagens e máquinas de alto nível. Por exemplo, você pode enviar trabalhos Q#, Quil ou Qiskit para o hardware Rigetti e o Azure Quantum manipula automaticamente a entrada para você. Para obter mais informações, consulte Quantum Intermediate Representation.
Selecionando o formato de entrada correto
Você deve usar o Quil ou outra linguagem compatível com QIR? Tudo se resume ao seu caso de uso final. O QIR é mais acessível para muitos usuários, enquanto o Quil é mais poderoso atualmente.
Se você estiver usando o Qiskit, Q# ou outro kit de ferramentas que dê suporte à geração de QIR e seu aplicativo funcionar no Rigetti targets por meio do Azure Quantum, o QIR é ideal para você! O QIR tem uma especificação em rápida evolução, e Rigetti continua a aumentar o suporte para programas QIR mais avançados com o passar do tempo - o que não pode ser compilado hoje pode muito bem ser compilado amanhã.
Por outro lado, os programas Quil expressam todo o conjunto de funcionalidades disponíveis para usuários de sistemas Rigetti de qualquer plataforma, incluindo o Azure Quantum. Se você deseja adaptar a decomposição de seus portões quânticos ou escrever programas no nível de pulso, convém trabalhar no Quil, porque esses recursos ainda não estão disponíveis por meio do QIR.
Exemplos
A maneira mais fácil de enviar trabalhos Quil é usando o pacote pyquil-for-azure-quantum
, pois ele permite que você use as ferramentas e a documentação da biblioteca pyQuil
.
Você também pode construir programas Quil manualmente e enviá-los usando diretamente o pacote 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}")