Introdução ao OpenQASM
O OpenQASM (linguagem de montagem quântica aberta), uma interface de programação independente de máquina compatível com QPUs da IBM®, é uma linguagem de programação imperativa para descrever circuitos quânticos. O OpenQASM usa o modelo de Circuit quântico para expressar programas quânticos como sequências ordenadas de operações parametrizadas (como Gates, medições e resets) e computação clássica em tempo real. Além de algoritmos quânticos, o OpenQASM pode descrever circuitos destinados a caracterizar, validar ou depurar processadores quânticos.
À medida que as necessidades do desenvolvimento de QPUs foram evoluindo, a lista de funcionalidades do OpenQASM foi expandindo em resposta; a versão mais recente, OpenQASM 3, incorpora extensões como controle de fluxo com feed-forward clássico, modificadores de Gate e implementações de pulso.
O OpenQASM é a escolha para uma variedade de públicos devido à sua versatilidade. A introdução do artigo do OpenQASM 31 traz exemplos:
"Embora o OpenQASM não seja uma linguagem de alto nível, muitos usuários gostariam de escrever Circuits quânticos simples manualmente usando uma linguagem de domínio específico expressiva. Pesquisadores que estudam compilação de circuits precisam de informações de alto nível registradas nas representações intermediárias para orientar os algoritmos de otimização e síntese. Experimentalistas preferem a conveniência de escrever circuits em um nível relativamente alto, mas frequentemente precisam modificar manualmente o timing ou descrições de Gate no nível de pulso em vários pontos do circuit. Engenheiros de hardware que projetam os controladores clássicos e geradores de forma de onda preferem linguagens que sejam práticas de compilar dadas as restrições de hardware e que tornem explícita a estrutura do circuit que os controladores podem aproveitar."
O OpenQASM é o formato de intercâmbio comum entre ferramentas de software quântico independentes. Para desenvolvedores que preferem uma ferramenta para construção de Circuit, outra para transpilação e assim por diante, o OpenQASM é a lingua franca que serve de ponte entre elas.
O SDK do Qiskit oferece maneiras de converter entre OpenQASM e a classe QuantumCircuit (veja OpenQASM 2 e Qiskit e OpenQASM 3 e Qiskit para instruções).
Para mais informações, consulte a especificação ao vivo do OpenQASM.
Exemplo de código OpenQASM: estado cat
OPENQASM 3;
include "stdgates.inc";
const n = 3; // number of qubits
qubit[n] q; // a register 'q' of n qubits
bit[n] c; // a register 'c' of n classical bits
h q[0]; // Hadamard
for k in [0:n-1] {
cnot q[k], q[k+1]; // Controlled-NOT from control qubit q[k] to target qubit q[k+1]
}
c = measure q; // measure quantum register
Próximos passos
- Aprenda como gerar código OpenQASM no guia do IBM Quantum Composer.
- Consulte a tabela de funcionalidades do OpenQASM 3.
- Leia a referência da API OpenQASM 3 do Qiskit.
- Leia a referência da API OpenQASM 2 do Qiskit.
- Visite a Especificação ao Vivo do OpenQASM.