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 Quantum Serviço de Computação : Um circuito que contenha o recurso correspondente do Qiskit pode ser executado com sucesso no hardware por meio de um Serviço de Computação d IBM Quantum.

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

Note

O método mais comum de enviar circuitos para o Serviço de Computação IBM Quantum é criar o circuito na interface do espaço Python em Qiskit SDK. Os circuitos criados e enviados dessa forma não precisam ser carregados dos arquivos do OpenQASM 3 para o Qiskit SDK.

Caso você não utilize diretamente o OpenQASM 3, é possível usar com segurança os recursos compatíveis para representação no Qiskit SDK, exportação para o OpenQASM 3 e envio para o IBM Quantum Compute Service. Isso inclui recursos que não podem ser carregados pelo Qiskit SDK a partir do OpenQASM 3.

OpenQASM 3 Recursos
Recurso do Qiskit SDK
SDK Qiskit
IBM Quantum Serviço de Computação
Notas
comentários✅✅1
QASM vstring✅✅1
include🟡❌1, 7
nomes unicode✅✅
qubitQubit e QuantumRegister✅🟡2
bitClbit e ClassicalRegister✅✅3
boolexpr.Var e expressões clássicas🟡✅4
int❌✅4
uintexpr.Var e expressões clássicas🟡✅4
floatexpr.Var e expressões clássicas🟡🟡4
angleImplícito, como parâmetros de porta❌🟡4
complex❌❌4
const❌❌4
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 box✅✅6
stretchexpr.Stretch🟡🟡4, 6
delayDelay/QuantumCircuit.delay✅✅6
barrierBarrier/QuantumCircuit.barrier✅✅
boxBoxOp/QuantumCircuit.box✅❌6
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_test✅✅8
elseQuantumCircuit.if_test✅✅8
else ifQuantumCircuit.if_test✅❌8
for loopsQuantumCircuit.for_loop🟡❌8
while loopsQuantumCircuit.while_loop✅❌8
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.