Skip to main content
IBM Quantum Platform

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

Recomendações

Footnotes

  1. 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

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