OpenQASM

OpenQASM
최근 버전3.1.0
최근 버전 출시일2024년 5월 15일(2년 전)(2024-05-15)
구현 언어Python
라이선스아파치 라이선스 2.0
파일 확장자.qasm
웹사이트openqasm.com

OpenQASM(OpenQASM; 오픈 카즘으로 발음)은 양자 컴퓨터에서 실행하기 위한 양자 회로와 양자 알고리즘을 기술하기 위해 설계된 프로그래밍 언어이다.

언어

이 언어는 상위 수준의 컴파일러가 양자 하드웨어와 통신하는 데 사용할 수 있는 중간 표현으로 설계되었으며, 다양한 양자 연산은 물론 측정 결과에 기반한 고전적인 피드포워드 흐름 제어를 기술할 수 있게 한다.

이 언어는 명령어의 명시적인 타이밍을 기술하기 위한 메커니즘을 포함하며, 보정과 같은 작업을 위해 게이트에 저수준 정의를 첨부할 수 있도록 한다. OpenQASM은 범용적인 고전 계산을 위한 것이 아니며, 이 언어의 하드웨어 구현은 사양에 기술된 모든 범위의 데이터 조작을 지원하지 않을 수 있다. OpenQASM용 컴파일러는 컴파일 타임 상수에 대한 광범위한 고전적 연산을 지원할 것으로 예상되지만, 런타임 값에 대한 이러한 연산의 지원 여부는 구현마다 다를 수 있다.

이 언어는 2017년 7월에 발표된 논문에서 처음 기술되었으며, 참조 소스 코드 구현은 IBM의 양자 정보 소프트웨어 키트(Qiskit)의 일부로 공개되어 그들의 IBM 퀀텀 익스피리언스 클라우드 양자 컴퓨팅 플랫폼에서 사용되도록 하였다. 이 언어는 베릴로그와 같은 전통적인 하드웨어 기술 언어와 유사한 특징을 가지고 있다.

OpenQASM은 소스 파일의 맨 앞에 다음과 같이 선언을 통해 버전을 숫자로 정의한다:

OPENQASM 3;

OpenQASM의 원래 공개된 구현 수준은 OpenQASM 2.0이다. 현재 사양은 버전 3.0이며 깃허브의 OpenQASM 저장소에서 확인할 수 있다.

예시

다음은 공식 라이브러리에서 가져온 OpenQASM 소스 코드 예시이다. 이 프로그램은 두 개의 4비트 숫자를 더한다.

/*
 * quantum ripple-carry adder
 * Cuccaro et al, quant-ph/0410184
 */
OPENQASM 3;
include "stdgates.inc";

gate majority a, b, c {
    cx c, b;
    cx c, a;
    ccx a, b, c;
}

gate unmaj a, b, c {
    ccx a, b, c;
    cx c, a;
    cx a, b;
}

qubit[1] cin;
qubit[4] a;
qubit[4] b;
qubit[1] cout;
bit[5] ans;
uint[4] a_in = 1;  // a = 0001
uint[4] b_in = 15; // b = 1111
// initialize qubits
reset cin;
reset a;
reset b;
reset cout;

// set input states
for i in [0: 3] {
  if(bool(a_in[i])) x a[i];
  if(bool(b_in[i])) x b[i];
}
// add a to b, storing result in b
majority cin[0], b[0], a[0];
for i in [0: 2] { majority a[i], b[i + 1], a[i + 1]; }
cx a[3], cout[0];
for i in [2: -1: 0] { unmaj a[i], b[i + 1], a[i + 1]; }
unmaj cin[0], b[0], a[0];
measure b[0:3] -> ans[0:3];
measure cout[0] -> ans[4];

같이 보기

각주

  1. 1 2 3 Cross, Andrew W.; Bishop, Lev S.; Smolin, John A.; Gambetta, Jay M. (2017). “Open Quantum Assembly Language”. arXiv:1707.03429 [quant-ph].
  2. ↑ “OpenQASM Live Specification”. 2022년 12월 26일에 확인함.
  3. ↑ 《qiskit-openqasm: OpenQASM specification》, International Business Machines, 2017년 7월 4일, 2020년 11월 10일에 원본 문서에서 보존된 문서, 2017년 7월 6일에 확인함
  4. ↑ https://github.com/openqasm/openqasm OpenQASM
  5. ↑ “openqasm/adder.qasm at master · openqasm/openqasm · GitHub”. 《깃허브》. 2022년 1월 29일.

외부 링크