Skip to main content
IBM Quantum Platform

OpenQASM mesa com 3 recursos

Abaixo está uma lista dos recursos do idioma OpenQASM 3 .

Para obter mais detalhes sobre esses recursos, consulte o site OpenQASM 3.X Live Specification.

Chave:

  • não suportado
  • suporte parcial
  • ✅ Suportado

O significado da marca completa "suportado" depende da coluna:

  • Qiskit SDK : O recurso pode ser analisado por qiskit.qasm3.loads (usando a qiskit-qasm3-import extensão ), representado em um QuantumCircuit, e exportado para OpenQASM 3 por qiskit.qasm3.dumps.

  • IBM Qiskit Runtime : Um circuito que contém o recurso Qiskit correspondente pode ser executado com sucesso no hardware por meio do site IBM® Qiskit Runtime.

O significado de "suporte parcial" geralmente depende das notas vinculadas.

Note

O método mais comum de envio de circuitos para IBM Qiskit Runtime é criar o circuito na interface Python -space do Qiskit SDK. Os circuitos construídos e enviados dessa maneira não precisam ser carregados dos arquivos OpenQASM 3 no Qiskit SDK.

Se você não usar o OpenQASM 3 diretamente, poderá usar com segurança os recursos compatíveis com a representação no Qiskit SDK, exportar para OpenQASM 3 e enviar para IBM Qiskit Runtime. Isso inclui recursos que não podem ser carregados pelo Qiskit SDK a partir de OpenQASM 3.

OpenQASM 3 Recursos
Recurso do Qiskit SDK
SDK Qiskit
IBM Qiskit Runtime
Notas
comentários1
QASM vstring1
include🟡1, 7
nomes unicode
qubitQubit e QuantumRegister🟡2
bitClbit e ClassicalRegister3
boolexpr.Var e expressões clássicas🟡4
int4
uintexpr.Var e expressões clássicas🟡4
floatexpr.Var e expressões clássicas🟡🟡4
angleImplícito, como parâmetros de porta🟡4
complex4
const4
pi/π/tau/τ/euler/Constante dobrada em parâmetros de porta
Aliasing: deixeRegistros quânticos e clássicos🟡5,00
concatenação de registrosRegistros quânticos e clássicos🟡5,00
castexpr.Cast expressões clássicas🟡🟡4
duration
durationof
ns/µs/us/ms/s/dtDurações de delay e box6
stretchexpr.Stretch🟡🟡4, 6
delayDelay/QuantumCircuit.delay6
barrierBarrier/QuantumCircuit.barrier
boxBoxOp/QuantumCircuit.box6
Incorporada UUGate/QuantumCircuit.u
gate🟡🟡7
gphaseQuantumCircuit.global_phase🟡7
ctrl @/ negctrl @AnnotatedOperation🟡7
inv @AnnotatedOperation🟡7
pow(k) @AnnotatedOperation🟡7
resetReset/QuantumCircuit.reset
measureMeasure/QuantumCircuit.measure
operações de bits🟡4
operações booleanas🟡4
expressões aritméticas🟡🟡4
comparações🟡4
ifQuantumCircuit.if_test8
elseQuantumCircuit.if_test8
else ifQuantumCircuit.if_test8
for loopsQuantumCircuit.for_loop🟡8
while loopsQuantumCircuit.while_loop8
continueQuantumCircuit.continue_loop🟡8
breakQuantumCircuit.break_loop🟡8
return
extern
def subrotinas (clássicas)
def subrotinas (quantum)
inputQuantumCircuit.add_input🟡4, 9
output

Notas

  1. Esses recursos do programa OpenQASM 3 não têm impacto sobre a execução e o Qiskit os remove como parte da análise dos arquivos como parte da análise dos arquivos. Os arquivos que os utilizam podem ser enviados, mas não terão nenhum efeito. Para arquivos include , stdgates.inc é atualmente suportado como entrada para o Qiskit, e a execução de backend sempre exige que os circuitos tenham sido compilados para a arquitetura de conjunto de instruções (ISA) de backend, em que os arquivos include são irrelevantes.
  1. O Qiskit SDK suporta a análise e o descarte de arquivos OpenQASM 3 com qualquer declaração qubit . Para execução em hardware, somente os circuitos definidos em termos de qubits de hardware (por exemplo, $0) são válidos. O Qiskit SDK gera automaticamente OpenQASM 3 em termos dos identificadores de hardware-qubit se o circuito tiver sido transpilado para um backend com informações de layout.
  1. bit- e bit[n]- as declarações de variáveis digitadas no Qiskit SDK correspondem a Clbit e ClassicalRegister declarações.
  1. A partir de julho de 2025, o Qiskit SDK pode representar variáveis locais de um conjunto restrito de tipos, pode representar muitas operações de tempo de execução nesses objetos e suporta a saída deles para OpenQASM 3. Entretanto, o Qiskit SDK (por meio do site qiskit-qasm3-import v0.6.0 ) não oferece suporte à análise de arquivos OpenQASM 3 arquivos que contêm declarações de variáveis e tem suporte muito limitado para analisar expressões de variáveis expressões. Em geral, a maior parte do que o Qiskit pode representar em seu sistema de expressão pode ser executada em um hardware de circuitos dinâmicos adequado, mesmo que a expressão ainda não possa ser analisada pelo Qiskit SDK. Veja a documentação do Qiskit qiskit.circuit.classical módulo para obter as informações mais atualizadas.
  1. O Qiskit SDK pode representar o aliasing de registro para registros quânticos e clássicos, mas é altamente fortemente desencorajado o uso de aliasing de registros clássicos. A maioria das expressões em registros clássicos não funcionam com aliases, e os registros clássicos com aliases não são suportados para execução no hardware. O analisador do Qiskit OpenQASM 3 pode resolver let declarações de alias que vinculam o resultado da concatenação de registros.
  1. O Qiskit SDK oferece suporte a atrasos explícitos por meio do site QuantumCircuit.delay, e as caixas de circuito (QuantumCircuit.box) também podem ter durações explícitas. Essas durações podem incluir expressões clássicas expressões clássicas de stretch variáveis. O Qiskit SDK (a partir de julho de 2025 até qiskit-qasm3-import v0.6.0 ) não oferece suporte à análise de declarações do tipo duration ou stretch de arquivos OpenQASM 3 arquivos. O hardware tem suporte limitado para durações que incluem stretch.
  1. Os circuitos devem ser transpilados para o ISA de backend para serem executados no hardware IBM. Isso impede que definições personalizadas do gate e construções de nível superior, como modificadores de porta (como o inv @), não sejam sejam válidos para execução no hardware literalmente, mas o processo transpile os resolve em circuitos ISA válidos. O Qiskit SDK (a partir de julho de 2025, por meio do qiskit-qasm3-import v0.6.0 ) avaliará avidamente os modificadores de porta durante a análise, portanto, eles não serão evidentes no site resultante QuantumCircuit, potencialmente com um custo de tempo de execução.
  1. O Qiskit SDK pode representar o fluxo de controle estruturado e exportá-lo para OpenQASM 3. As declarações continue e break podem ser tecnicamente representadas pelo Qiskit, mas não são bem suportadas nem mesmo no Qiskit SDK. for loops no Qiskit v2.1.0 não são bem suportados. O fluxo de controle aninhado o fluxo de controle aninhado (como um if dentro de outro if, ou uma instrução else if ) não é elegível para execução no hardware.
  1. O Qiskit SDK suporta a declaração de qualquer tipo clássico compatível como uma variável input no circuito. No momento, essas variáveis não são elegíveis para execução no hardware e não podem ser carregadas pelo importador do Qiskit OpenQASM 3. Os objetos não vinculados do Parameter presentes no QuantumCircuit são exportados como variáveis do input float[64] . Certas opções de configuração de tempo de execução podem permitir a execução desses circuitos em alguns back-ends.

Próximas etapas

Recomendações
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.