Introdução ao OpenQASM
OpenQASM (open quantum assembly language), uma interface de programação independente de máquina compatível com IBM® QPUs, é uma linguagem de programação imperativa para a descrição de circuitos quânticos. OpenQASM usa o modelo de circuito quântico para expressar programas quânticos como sequências ordenadas de operações parametrizadas (como portas, medições e redefinições) e computação clássica em tempo real. Além dos algoritmos quânticos, o site OpenQASM pode descrever circuitos destinados a caracterizar, validar ou depurar processadores quânticos.
À medida que as necessidades de desenvolvimento da QPU evoluíram, a lista de recursos do OpenQASM's se expandiu em resposta; a versão mais recente, OpenQASM 3, incorpora extensões, incluindo controle de fluxo feed-forward clássico, modificadores de porta e implementações de pulso.
OpenQASM é a escolha para uma variedade de públicos devido à sua versatilidade. A introdução do documento OpenQASM 31 fornece exemplos:
"Embora o OpenQASM não seja uma linguagem de alto nível, muitos usuários gostariam de escrever circuitos quânticos simples manualmente usando uma linguagem expressiva específica do domínio. Os pesquisadores que estudam a compilação de circuitos precisam de informações de alto nível registradas nas representações intermediárias para informar os algoritmos de otimização e síntese. Os experimentalistas preferem a conveniência de escrever circuitos em um nível relativamente alto, mas muitas vezes precisam modificar manualmente o tempo ou as descrições de porta de nível de pulso em vários pontos do circuito. Os engenheiros de hardware que projetam os controladores clássicos e os geradores de forma de onda preferem linguagens que sejam práticas de compilar, considerando as restrições de hardware, e que tornem explícita a estrutura do circuito da qual os controladores possam tirar proveito."
OpenQASM é o formato de intercâmbio comum entre as ferramentas de software quântico independentes. Para os desenvolvedores que preferem uma ferramenta para a construção de circuitos, outra para a transpilação e assim por diante, o OpenQASM é a língua franca que funciona como uma ponte entre elas.
O Qiskit SDK oferece maneiras de converter entre OpenQASM e a classe QuantumCircuit (consulte OpenQASM 2 e Qiskit e OpenQASM 3 e Qiskit para obter instruções).
Para obter mais informações, consulte a especificação ao vivo do OpenQASM.
OpenQASM exemplo de código: estado do gato
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óximas etapas
- Saiba como gerar o código OpenQASM no guia IBM Quantum Composer.
- Consulte a tabela de recursos do OpenQASM 3.
- Leia a referência da API do Qiskit em OpenQASM 3.
- Leia a referência da API do Qiskit em OpenQASM 2.
- Visite o site OpenQASM Live Specification.
Footnotes
-
Andrew W. Cross et al. ""OpenQASM 3: A broader and deeper quantum assembly language," ACM Transactions on Quantum Computing, Volume 3, Issue 3 (2022). https://doi.org/10.48550/arXiv.2104.14722 ↩