퀼(명령어 집합 아키텍처)
Quil (instruction set architecture) Quil은 공유 양자/클래식 메모리 모델을 처음 도입한 양자 명령 집합 아키텍처입니다.Robert Smith, Michael Curtis 및 William Zeng에 의해 A Practical Quantum Instruction Set [1]Architecture에서 소개되었습니다.많은 양자 알고리즘(양자 순간이동, 양자 오류 보정, 시뮬레이션 [2][3]및 최적화 알고리즘[4] 포함)에는 공유 메모리 아키텍처가 필요합니다.퀼은 리게티컴퓨팅이 [5][6]포레스트 양자 프로그래밍 API를 통해 개발한 초전도 양자 프로세서를 위해 개발 중이다.Python 라이브러리 이름:pyQuil퀼 프로그램을 개발하기 위해 도입되었습니다.Quil 백엔드는 다른 양자 프로그래밍 [7][8]환경에서도 지원됩니다.
기본 양자 추상 기계
Smith, Curtis 및 Zeng이 제시한 논문에서 Quille은 튜링 기계와 유사한 Quantum Abstract Machine(QAM, 양자 추상 기계) 명령 세트를 명시하고 있으며, "실제"[1] 작업을 수행하는 데 보다 실용적입니다.QAM 상태는 6-태플 C、 、 、 G )\ C , ' G ' , G ' , , \로 나타낼 수 있습니다.
- {\ { \rangle}은 0 기반의 인덱싱을 사용하여 색인화된 이지만 임의의 수의 N { q}의 (양자) 상태입니다.
- C C는 0 기반 인덱싱을 사용하여 인덱싱된 N의 클래식 메모리입니다.
- { G 고정적이지만 임의의 정적 게이트 목록(Hadamard 게이트와 같은 파라미터에 의존하지 않는 양자 게이트).
- G \ G는 고정적이지만 임의적인 파라미터 목록(위상 편이 게이트와 같이 각도 파라미터를 완전히 정의해야 하는 복잡한 파라미터에 따라 달라짐)입니다.
- 을 나타내는 일련의 Quil 명령어를 P P의 는 P P로 됩니다.
- \kappa 실행할 다음 명령을 가리키는 정수 프로그램 . \kappa}는 항상 0th} 을 )에서 시작하여(\P })에서 프로그램 중단을 나타냅니다(마지막 에는 P - 1(\ P 1)).프로그램 카운터는 특수 제어 흐름 지시(조건 및 무조건 점프) 및 특수 명령을 제외한 모든 지시 후에 증가합니다.
HALT를 " P 로 하여 프로그램을 중지하는 명령입니다.
QAM의 의미는 힐버트 공간의 텐서 곱과 그 [1]사이의 선형 맵을 사용하여 정의된다.
특징들
퀼은 매트릭스 형태로 가능한 파라메타화된 게이트를 정의하고(언어는 매트릭스가 단일한지 확인하는 방법을 포함하지 않으며, 정의된 게이트의 물리적 실현을 위해 필요한 조건이다) 큐비트에 적용할 수 있다.이 언어는 또한 가능한 매개 변수화된 양자 회로의 매크로와 같은 정의와 그 확장, 큐비트 측정 및 클래식 메모리에 결과의 기록, 기존 컴퓨터와의 동기화 및WAIT클래식 프로그램이 실행, 조건부 및 무조건 분기, 플러그마 지원 및 라이브러리로 사용할 파일 포함이 종료될 때까지 Quil 프로그램의 실행을 일시 중지하는 명령(표준 게이트 세트가 라이브러리의 하나로 제공됨)
리게티 QVM
Rigetti Computing은 정의된 Quantum Abstract Machine을 기존 컴퓨터에서 시뮬레이트하여 HTTP를 [9]통해 원격으로 실행할 수 있는 Quantum Virtual Machine을 개발했습니다.
예
다음 예시는 레지스터 [10][11]1을 등록하기 위해 레지스터 2의 큐비트를 양자 순간이동하는 데 필요한 고전적인 제어 흐름을 보여 줍니다.
# 클래식 메모리 선언 선언하다 로 조금[2] # 종짝 만들기 H 0 하지 않다 0 1 # 텔레포트 하지 않다 2 0 H 2 재다 2 로[0] 재다 0 로[1] # 측정치를 클래식하게 전달한다. 점프하지 않는 한 @건너뛰다. 로[1] X 1 라벨. @건너뛰다. 점프하지 않는 한 @끝. 로[0] Z 1 라벨. @끝. 양자 푸리에 변환과 변이 양자 에이겐솔버의 구현 예를 이 논문에서 제시한다.
레퍼런스
- ^ a b c Smith, Robert S.; Curtis, Michael J.; Zeng, William J. (2016-08-10). "A Practical Quantum Instruction Set Architecture". arXiv:1608.03355 [quant-ph].
- ^ McClean, Jarrod R.; Romero, Jonathan; Babbush, Ryan; Aspuru-Guzik, Alán (2016-02-04). "The theory of variational hybrid quantum-classical algorithms". New Journal of Physics. 18 (2): 023023. arXiv:1509.04279. Bibcode:2016NJPh...18b3023M. doi:10.1088/1367-2630/18/2/023023. ISSN 1367-2630. S2CID 92988541.
- ^ Rubin, Nicholas C. (2016-10-21). "A Hybrid Classical/Quantum Approach for Large-Scale Studies of Quantum Systems with Density Matrix Embedding Theory". arXiv:1610.06910 [quant-ph].
- ^ Farhi, Edward; Goldstone, Jeffrey; Gutmann, Sam (2014-11-14). "A Quantum Approximate Optimization Algorithm". arXiv:1411.4028 [quant-ph].
- ^ "Rigetti Launches Full-Stack Quantum Computing Service and Quantum IC Fab". IEEE Spectrum: Technology, Engineering, and Science News. 26 June 2017. Retrieved 2017-07-06.
- ^ "Rigetti Quietly Releases Beta of Forest Platform for Quantum Programming in the Cloud Quantum Computing Report". quantumcomputingreport.com. 8 March 2017. Retrieved 2017-07-06.
- ^ "XACC Rigetti Accelerator". ornl-qci.github.io. Retrieved 2017-07-06.
- ^ Doiron, Nick (2017-03-07), jsquil: Quantum computer instructions for JavaScript developers, retrieved 2017-07-06
- ^ The @rigetti high-performance quantum virtual machine.: rigetti/qvm, Rigetti Computing, 2019-04-26, retrieved 2019-04-28
- ^ Nielsen, Michael A.; Chuang, Isaac L. (2000). Quantum Computation and Quantum Information. Cambridge University Press. p. 27. ISBN 978-0-521-63503-5.
- ^ Computing, Rigetti (28 May 2019). "pyQuil Documentation" (PDF). pyQuil Documentaion. Retrieved 6 June 2019.