Skip to main content
IBM Quantum Platform

소개 OpenQASM

OpenQASM (개방형 양자 어셈블리 언어)는 IBM® QPU와 호환되는 기계 독립적인 프로그래밍 인터페이스로, 양자 회로를 설명하는 데 필수적인 프로그래밍 언어입니다. OpenQASM 는 양자 회로 모델을 사용하여 양자 프로그램을 매개변수화된 연산(예: 게이트, 측정, 리셋)과 실시간 클래식 계산의 정렬된 시퀀스로 표현합니다. 양자 알고리즘 외에도 OpenQASM 에서 양자 프로세서의 특성화, 검증 또는 디버깅을 위한 회로를 설명할 수 있습니다.

퀀텀 프로세서 유닛(QPU) 개발 요구사항이 진화함에 따라, OpenQASM's 기능 목록도 이에 대응하여 확장되었습니다. 최신 버전인 OpenQASM 3에는 클래식 피드포워드 흐름 제어, 게이트 수정자, 펄스 구현 등의 확장 기능이 포함되어 있습니다.

OpenQASM 는 다재다능한 기능으로 인해 다양한 대상에게 선택받고 있습니다. OpenQASM 3 논문1 의 소개에 예시가 나와 있습니다:

" OpenQASM 은 고급 언어는 아니지만, 많은 사용자가 표현력이 풍부한 도메인 전용 언어를 사용하여 간단한 양자 회로를 직접 작성하고 싶어 합니다. 회로 컴파일을 연구하는 연구원들은 최적화 및 합성 알고리즘에 정보를 제공하기 위해 중간 표현에 기록된 높은 수준의 정보가 필요합니다. 실험가들은 비교적 높은 수준의 회로 작성의 편리함을 선호하지만, 회로의 여러 지점에서 타이밍 또는 펄스 레벨 게이트 설명을 수동으로 수정해야 하는 경우가 많습니다. 기존 컨트롤러와 파형 발생기를 설계하는 하드웨어 엔지니어는 하드웨어 제약 조건을 고려할 때 컴파일이 실용적이고 컨트롤러가 활용할 수 있는 명시적인 회로 구조를 만들 수 있는 언어를 선호합니다."

OpenQASM 는 독립적인 양자 소프트웨어 도구 간의 일반적인 교환 형식입니다. 회로 구성에는 한 가지 도구를, 번역에는 다른 도구를 선호하는 개발자에게는 OpenQASM 이 둘을 연결하는 가교 역할을 하는 언어입니다.

키스킷 SDK는 OpenQASM 와 클래스 사이를 변환하는 방법을 제공한다 QuantumCircuit 클래스를 변환하는 방법을 제공한다( OpenQASM 2와 키스킷, OpenQASM 3과 키스킷 참조).

자세한 내용은 OpenQASM 라이브 사양을 참조하십시오.


OpenQASM 코드 예시: 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

다음 단계

권장사항

Footnotes

  1. Andrew W. Cross 외. ""OpenQASM 3: 더 광범위하고 심층적인 양자 어셈블리 언어," ACM 트랜잭션스 온 퀀텀 컴퓨팅, 3권 3호(2022). https://doi.org/10.48550/arXiv.2104.14722

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.