KR20210119533A - 양자 알고리즘의 런타임 검증 및 추정 - Google Patents

양자 알고리즘의 런타임 검증 및 추정 Download PDF

Info

Publication number
KR20210119533A
KR20210119533A KR1020217028759A KR20217028759A KR20210119533A KR 20210119533 A KR20210119533 A KR 20210119533A KR 1020217028759 A KR1020217028759 A KR 1020217028759A KR 20217028759 A KR20217028759 A KR 20217028759A KR 20210119533 A KR20210119533 A KR 20210119533A
Authority
KR
South Korea
Prior art keywords
quantum
parameters
data processing
computer
algorithm
Prior art date
Application number
KR1020217028759A
Other languages
English (en)
Inventor
알리 자바디아바리
제이 마이클 감베타
이스마엘 파로 세르타게
폴 낫존
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20210119533A publication Critical patent/KR20210119533A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/20Models of quantum computing, e.g. quantum circuits or universal quantum computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/60Quantum algorithms, e.g. based on quantum optimisation, quantum Fourier or Hadamard transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/70Quantum error correction, detection or prevention, e.g. surface codes or magic state distillation
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B82NANOTECHNOLOGY
    • B82YSPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
    • B82Y10/00Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Mathematical Optimization (AREA)
  • Artificial Intelligence (AREA)
  • Quality & Reliability (AREA)
  • Geometry (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

양자 알고리즘의 검증 및 런타임 추정을 위한 방법은 양자 알고리즘을 수신하는 단계 및 상기 양자 알고리즘을 시뮬레이션 하는 단계를 포함하고, 상기 양자 알고리즘은 한 세트의 양자 게이트 세트들을 포함한다. 상기 방법은 상기 양자 게이트들의 세트의 파라미터들의 제1 세트를 분석하는 단계와 상기 양자 게이트들의 세트를 수행하는 한 세트의 큐비트들의 파라미터들의 제2 세트를 분석하는 단계를 더 포함한다. 상기 방법은 상기 파라미터들의 제1 세트 또는 상기 파라미터들의 제2 세트 중 적어도 하나가 허용성 기준을 충족한다고 결정하는 것에 응답하여, 상기 양자 알고리즘을 상기 양자 게이트들의 제2 세트로 변환하는 단계를 더 포함한다.

Description

양자 알고리즘의 런타임 검증 및 추정
[0001] 본 발명은 일반적으로 양자 알고리즘의 컴파일(compilation) 방법과 관련된다. 특히, 본 발명은 양자 알고리즘의 런타임 검증 및 추정 방법과 관련된다.
[0002] 이하, 명세서의 문구의 단어에서 "Q" 접두어는 명백하게 구별되게 표시하지 않는 한 양자 컴퓨팅 컨텍스트에서 단어 또는 문구을 참조함을 표시한다.
[0003] 분자들과 아원자 입자들(Molecules and subatomic particles)은 양자역학의 법칙을 따르며, 양자역학은 물리 세계가 가장 근본적인 수준들에서 어떻게 작동하는지를 탐구하는 물리학의 한 분야이다. 이 수준에서 입자들은 둘 이상의 상태를 동시에 띠며 매우 멀리 있는 다른 입자와 상호작용하면서 이상한 방식으로 동작한다. 양자 컴퓨팅은 이러한 양자 현상을 이용하여 정보를 처리한다.
[0004] 오늘날 사용하는 컴퓨터들을 클래식 컴퓨터들(여기서는 "종래의" 컴퓨터들 또는 종래의 노드들. 또는"CN"이라고도 함)라고 한다. 종래의 컴퓨터는 반도체 재료들과 기술을 사용하여 제작된, Von Neumann 아키텍처로 알려져 있는, 종래의 프로세서, 반도체 메모리, 자기 또는 솔리드-스테이트 스토리지 디바이스를 사용한다. 특히 종래 컴퓨터들에서 프로세서는 이진 프로세서들로서, 즉, 1과 0으로 표시된 이진 데이터에 대해 연산한다.
[0005] 양자 프로세서(q-processor)는 컴퓨터 작업들을 수행하기 위해 얽힌 큐비트 디바이스들(여기서는 간단히 "큐비트", 복수 "큐비트들" 모두를 가리킴)의 특이한 특성(the odd nature of entangled qubit devices)을 사용한다. 양자역학이 작동하는 특정한 영역에서, 물질의 입자들은, "온(on)" 상태, "오프(off)" 상태, 그리고 동시에 "온" 상태 및 "오프" 상태와 같은, 여러 상태들로 존재할 수 있습니다. 반도체 프로세서를 이용한 바이너리 컴퓨팅은 단지 온과 오프 상태(이진 코드의 경우 1과 0에 해당)만 사용하도록 제한되지만, 양자 프로세서는 물질의 이들 양자 상태들을 이용하여 데이터 컴퓨팅에 사용할 수 있는 신호를 출력한다.
[0006] 종래 컴퓨터는 정보를 비트들로 인코드 한다. 각 비트는 1 또는 0의 값을 취할 수 있다. 이들 1들과 0들은 궁극적으로 컴퓨터 기능을 구동하는 온/오프 스위치 역할을 한다. 반면에 양자 컴퓨터는 양자 물리학의 두 가지 핵심 원리인 중첩과 얽힘(superposition and entanglement)에 따라 작동하는 큐비트를 기반으로 한다. 중첩은 각 큐비트가 1과 0을 동시에 나타낼 수 있음을 의미한다. 얽힘은 하나의 중첩에 있는 큐비트들이 비-고전적 방식으로(in a non-classical way) 서로 상관될 수 있음을 의미하며, 즉, 하나의 상태(1 또는 0 또는 둘 모두)는 다른 하나의 상태에 따라 달라질 수 있고, 두 개의 큐비트들이 개별적으로 처리될 때보다 서로 얽혔을 때 두 개의 큐비트들에 관해 확인될(ascertained) 수 있는 정보가 더 많다.
[0007] 이들 두 개의 원리들을 사용하여, 큐비트들은 보다 정교한 정보의 프로세서들로서 작동하며, 이는 양자 컴퓨터들이 종래의 컴퓨터를 사용하여 다루기 곤란한 어려운 문제들을 해결할 수 있도록 해주는 방식으로 작동할 수 있게 한다. IBM은 초전도 큐비트를 사용하여 양자 프로세서의 작동 가능성을 성공적으로 구축하고 보여주었다(IBM은 미국 및 기타 국가에서 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다).
[0008] 초전도 큐비트는 조셉슨 접합부(a Josephson junction)를 포함한다. 조셉슨 접합부는 비-초전도 물질에 의해서 두 개의 박막 초전도 금속 층들을 분리함으로써 형성된다. 초전도 층들의 금속이 초전도 상태가 되면(예를 들어, 금속의 온도를 특정 극저온(cryogenic temperature)으로 낮춤에 의해서) 전자 쌍들이 한 초전도 층으로부터 비-초전도 층을 통해 다른 초전도 층으로 터널링 할 수 있다. 하나의 큐비트에서, 분산형 비선형 인덕터(a dispersive nonlinear inductor)로서 기능을 하는 조셉슨 접합부는 비선형 마이크로파 오실레이터를 형성하는 하나 또는 그 이상의 정전 디바이스들(capacitive devices)과 전기적으로 병렬로 결합된다. 상기 오실레이터는 큐비트 회로의 인덕턴스 및 캐패시턴스 값에 의해서 결정되는 공진/전환 주파수를 갖는다. "큐비트"라는 용어는 사용되는 곳에서 명확하게 구별하여 사용되지 않는 한 조셉슨 접합부를 채용하는 초전도 큐비트 회로(a superconducting qubit circuitry)를 가리킨다.
[0009] 상기 큐비트들에 의해 처리된 정보는 마이크로파 주파수들 범위에서 마이크로파 신호들/광자들의 형태로 전달되거나 전송된다. 상기 마이크로파 신호들은 캡처되고, 처리되며, 분석되어 거기에 인코드 된 양자 정보가 해독된다. 판독 회로(A readout circuit)는 상기 큐비트와 결합된 회로이고, 큐비트의 양자 상태를 캡처하고, 읽고 그리고 측정한다. 상기 판독 회로의 출력은 q-프로세서가 계산을 수행하는 데 사용할 수 있는 정보이다.
[0010] 초전도 큐비트는 두 개의 양자 상태들 -|0> 및 |1을 갖는다. 이 두 개의상태들은 원자들의 두 개의 에너지 상태들, 예를 들어, 초전도 인공 원자의 접지(|g>) 및 제1 여기 상태(|e>)(the ground (|g>) and first excited state (|e>))(초전도 큐비트) 일 수 있다. 다른 예들은 핵 또는 전자 스핀들의 스핀-업 및 스핀-다운(spin-up and spin-down of the nuclear or electronic spins), 결정 결함의 두 위치들 및 양자 도트의 두 상태들(two states of a quantum dot)를 포함한다. 상기 시스템은 양자 성질을 갖고있기 때문에 두 개의 상태들의 모든 조합이 허용되고 유효하다.
[0011] 큐비트들을 사용하는 양자 컴퓨팅을 신뢰할 수 있으려면, 예를 들어 큐비트들 자체, 큐비트들 관련 판독 회로 및 양자 프로세서의 다른 부분들이 큐비트의 에너지 상태들을, 에너지를 주입하거나 또는 발산시키는 것과 같은 심각한 방식으로 변경시키거나 또는 큐비트의 |0> 및 |1> 사이의 상대 위상에 영향을 주어서는 안된다. 양자 정보로 동작하는 모든 회로에 대한 이러한 동작상의 제약(operational constraint)은 그러한 회로에 사용되는 반도체 및 초전도 구조물들의 조립에 특별한 고려를 필요로 한다.
[0012] 종래의 회로들에서는 연속적으로 배열된 부울 논리 게이트들은 일련의 비트들을 조작한다. 이진 계산을 위해 게이트 논리를 최적화하는 기술은 잘 알려져 있다. 종래의 회로들을 위한 회로 최적화 소프트웨어는 종래의 회로들의 효율성을 높이고 복잡성을 줄이는 것을 목표로 한다. 종래의 회로들을 위한 최적화 소프트웨어는 부분적으로 종래의 회로의 전반적인 원하는 동작을 더 간단한 기능들로 분해함으로써 최적화를 수행한다. 종래의 회로 최적화 소프트웨어는 더 간단한 기능들을 더 쉽게 조작하고 처리한다. 회로 최적화 소프트웨어는 종래의 회로에서 설계 엘리멘트들의 효율적인 배치를 생성한다. 그 결과 종래의 회로들을 위한 회로 최적화 소프트웨어는 자원 수요들을 크게 줄여 효율성을 높이고 복잡성을 줄여준다.
[0013] 예시적 실시 예들은 양자 회로들에서 양자 게이트들이 큐비트들을 조작하여 양자 계산을 수행한다는 것을 인식한다. 양자 게이트들은 큐비트들 상에 작용하는 유니터리 행렬 변환들(unitary matrix transformations)이다. 큐비트들의 중첩과 얽힘으로 인해(Due to the superposition and entanglement of qubits), 양자 게이트들은 2n x 2n 행렬을 나타내고, 여기서 n은 양자 게이트가 조작하는 큐비트들의 수이다. 예시적 실시예들은 큐비트들의 수에 따라 행렬 변환 크기가 기하급수적으로 증가하기 때문에 그러한 행렬 변환들의 분해가 신속하게 너무 복잡 해져서 수작업으로 수행할 수 없다는 것을 인식한다. 예를 들어, 2 큐비트들의 양자 컴퓨터들은 양자 게이트 표현을 위해 4 x 4 매트릭스 연산자(a 4 by 4 matrix operator for quantum gate representation)가 필요하다. 10 큐비트의 양자 컴퓨터는 양자 게이트를 표현하기 위해 1024x1024 매트릭스 연산자가 필요하다. 지수 증가의 결과로 수동 양자 논리 게이트 행렬 변환들은 큐비트들의 수가 증가함에 따라 신속하게 관리할 수 없는 상태가 되어버린다.
[0014] 양자 알고리즘은 양자 컴퓨터 상에서 수행될 한 세트의 명령들을 나타낸다. 예시적 실시 예들은 양자 알고리즘들이 양자 회로로 모델링 될 수 있다는 것을 인식한다. 양자 회로는 대응하는 양자 알고리즘의 단계들을 수행하는 양자 논리 게이트들의 세트로 형성된 계산 모델이다.
[0015] 양자 프로세서들은 클라우드 액세스 디바이스들이 될 수 있다. 양자 프로세서들의 제공자들은 백엔드 양자 프로세서가 실행할 양자 알고리즘을 생성하기 위한 프런트엔드 소프트웨어를 사용자들에게 제공한다.
[0016] 예시적 실시 예들은 또한 양자 게이트들이 양자 알고리즘 계산에 영향을 미치는 오류율을 포함하고 있음도 인식한다. 각 양자 게이트는 큐비트의 상태에 영향을 미치는 양자 노이즈를 양자 시스템에 도입한다. 양자 게이트 오류는 양자 프로세서가 양자 게이트에 의해 작동하는 큐비트의 상태 중첩을 얼마나 정확하게 제어하는지에 대응된다(correspond).
[0017] 예시적 실시 예들은 양자 프로세서들이 일정 기간에 걸쳐 가변의 물리적 특성을 보인다는 것을 인식한다. 예시적 실시 예들은 양자 프로세서들의 교정(calibration)이 양자 프로세서들의 관련 큐비트들 및 양자 게이트들에 대한 오류율을 결정한다는 것을 인식한다. 예시적 실시 예들은 양자 프로세서들이 하루에 한번 또는 두 번만 교정되는 경우가 종종 있음을 추가로 인식한다. 예시적 실시 예들은 특정 양자 알고리즘들이 관련 큐비트들 및 양자 게이트들에 대한 특정 오류율로 인해 주어진 양자 프로세서에서 실행되지 않을 수 있음을 추가로 인식한다.
[0018] 예시적 실시 예들은 양자 프로세서들을 위한 하드웨어 자원들이 제한되어 있음을 인식한다. 예시적 실시 예들은 양자 알고리즘을 양자 프로세서 상에서 실행할 양자 회로로 변환하는 컴파일러들이 기능적으로는 양자 알고리즘과 동일하지만 양자 하드웨어에서 최대 효율로 실행되는 회로를 생성하는 것을 목표로 하고 있다는 것을 추가로 인식한다. 예시적 실시 예들은 관련 없는 연산이나 불필요한 연산을 제거하면 보다 효율적인 양자 회로가 생성된다는 점을 추가로 인식한다.
[0019] 예시적 실시 예들은 양자 프로세서들을 위한 하드웨어 자원들이 제한되어 있음을 인식한다. 예시적 실시 예들은 양자 알고리즘을 양자 프로세서 상에서 실행할 양자 회로로 변환하는 컴파일러들이 기능적으로는 양자 알고리즘과 동일하지만 양자 하드웨어 상에서 증가된 효율성으로 실행되는 회로를 생성하는 것을 목표로 하고 있다는 것을 추가로 인식한다.
[0020] 예시적 실시 예들은 양자 알고리즘들의 검증 및 런타임 추정을 위한 방법을 제공한다. 양자 알고리즘의 검증 및 런타임 추정 방법은
양자 알고리즘을 수신하는 단계 및 상기 양자 알고리즘을 시뮬레이션 하는 단계를 포함하고, 상기 양자 알고리즘은 한 세트의 양자 게이트들을 형성한다. 일 실시 예에서, 상기 방법은 상기 양자 게이트들의 세트의 파라미터들의 제1세트를 분석하는 단계를 포함한다.
[0021] 일 실시 예에서, 상기 방법은 상기 양자 게이트들의 세트를 수행하는 한 세트의 큐비트들의 파라미터들의 제2 세트를 분석하는 단계를 포함한다. 일 실시 예에서, 상기 방법은, 상기 파라미터들의 제1 세트 또는 상기 파라미터들의 제2 세트 중 적어도 하나가 허용성 기준(an acceptability criterion)을 충족한다고 결정하는 것에 응답하여, 상기 양자 알고리즘을 양자 게이트들의 제2 세트로 변환하는 단계를 포함한다.
[0022] 일 실시 예에서, 상기 방법은 상기 양자 알고리즘의 런타임을 추정하기 위해 상기 양자 앨고리즘을 저장된 양자 알고리즘과 비교하는 단계를 포함한다. 일 실시 예에서, 상기 방법은, 상기 파라미터들의 제1 세트 또는 상기 파라미터들의 제2 세트 중 적어도 하나가 허용성 기준(an acceptability criterion)을 충족한다고 결정하는 것에 응답하여, 검증된 양자 알고리즘들을 실행하는 양자 프로세서를 위해 양자 알고리즘들의 대기열의 한 위치(a place in a queue)에 대응하는 검증 티켓(a validation ticket)을 생성하는 단계를 포함한다.
[0023] 일 실시 예에서, 상기 방법은, 사용자에 의해서 제출된 한 세트의 양자 알고리즘들의 총 런타임이 임계값 런타임을 초과하는 것에 응답하여, 상기 검증 티켓을 취소하는 단계를 포함한다. 일 실시 예에서, 상기 방법은, 상기 파라미터들의 제1 세트 또는 상기 파라미터들의 제2 세트 중 적어도 하나가 허용성 기준(an acceptability criterion)을 충족하는 것을 실패했다고 결정하는 것에 응답하여, 상기 실패한 적어도 하나의 파라미터를 사용자에게 통지하는 단계를 포함한다.
[0024] 일 실시 예에서, 상기 방법은 상기 제2 세트의 양자 게이트들을 사용하여 상기 양자 알고리즘을 실행하는 단계를 포함한다. 일 실시 예에서, 상기 허용 가능성 기준은 양자 게이트의 임계값 오류율이다. 일 실시 예에서, 상기 허용성 기준은 큐비트의 임계 일관성 시간(a threshold coherence time of a qubit)이다.
[0025] 일 실시 예는 컴퓨터 사용가능 프로그램 제품을 포함한다. 상기 컴퓨터 사용가능 프로그램 제품은 컴퓨터-판독가능 스토리지 디바이스, 및 상기 스토리지 디바이스에 저장된 프로그램 명령들을 포함한다.
[0026] 일 실시 예에서, 컴퓨터 사용가능 코드가 데이터 처리 시스템 내의 컴퓨터 판독가능 스토리지 디바이스에 저장되고, 상기 컴퓨터 사용가능 코드는 원격 데이터 처리 시스템으로부터 네트워크을 통해 전송된다. 일 실시 예에서, 상기 컴퓨터 사용가능 코드가 데이터 처리 시스템 내의 컴퓨터 판독가능 스토리지 디바이스에 저장되고, 상기 컴퓨터 사용가능 코드는 상기 원격 데이터 처리 시스템과 연관된 컴퓨터 판독가능 스토리지 디바이스에서 사용을 위해 상기 원격 데이터 처리 시스템으로 네트워크을 통해 다운로드 된다.
[0027] 일 실시 예는 컴퓨터 시스템을 포함한다. 상기 컴퓨터 시스템은 프로세서, 컴퓨터-판독가능 메모리, 및 컴퓨터-판독가능 스토리지 디바이스, 그리고 상기 메모리를 통해 상기 프로세서에 의한 실행을 위한 상기 스토리지 디바이스에 저장된 프로그램 명령들을 포함한다.
[0028] 본 발명의 새로운 특징들은 첨부된 청구항들에 제시되어 있다. 그러나 선호되는 사용 방식, 추가적인 목적 및 장점뿐만 아니라, 본 발명 자체는 첨부된 도면과 함께 읽을 때 예시적 실시 예들에 대한 다음의 상세한 설명을 참조함으로써 가장 잘 이해될 것이다.
[0029] 도 1은 예시적 실시 예들이 구현될 수 있는 데이터 처리 시스템들의 네트워크의 블록 다이어그램을 도시한다.
[0030] 도 2는 예시적 실시 예들이 구현될 수 있는 데이터 처리 시스템들의 블록 다이어그램을 도시한다.
[0031] 도 3은 예시적 실시 예들에 따른 양자 알고리즘들의 컴파일을 위한 상시 폴딩의 예시적 구성을 도시한다.
[0032] 도 4는 양자 알고리즘들의 컴파일을 위한 검증 및 런타임 추정의 예시적구성을 도시한다.
[0033] 도 5는 예시적 실시 예들에 따른 양자 알고리즘들의 검증 및 런타임 추정을 위한 예시적 방법의 플로를 도시한다.
[0034] 예시적 실시 예들은 양자 알고리즘들의 런타임 검증 및 추정 방법을 제공한다. 본 발명을 설명하기 위해 사용되는 예시적 실시 예들은 일반적으로 위에서 설명한 양자 알고리즘들의 컴파일에 대한 필요성들을 어드레스하고 해결한다. 예시적 실시 예들은 양자 알고리즘들의 검증 및 런타임 추정을 위한 방법을 제공한다.
[0035] 일 실시 예는 하이브리드 고전-양자 컴퓨팅 시스템(a hybrid classical-quantum computing system)을 사용하여 양자 알고리즘의 양자 회로 모델 컴파일(compilation of a quantum circuit model)을 개선하는 방법을 제공한다. 다른 실시 예는 컴퓨터 판독가능 스토리지 디바이스, 및 상기 스토리지 디바이스에 저장된 프로그램 명령들을 포함하는 종래의 또는 양자 컴퓨터 사용 가능 프로그램 제품을 제공하고, 상기 저장된 프로그램 명령들은 하이브리드 고전-양자 컴퓨팅 시스템(a hybrid classical-quantum computing system)을 사용하여 양자 회로 모델 컴파일(compilation of a quantum circuit model)을 개선하는 방법을 포함한다. 상기 명령들은 종래의 또는 양자 프로세서를 사용하여 실행할 수 있다. 또 다른 실시 예는 종래의 또는 양자 프로세서, 컴퓨터 판독가능 메모리 및 컴퓨터 판독가능 스토리지 디바이스 및 상기 메모리를 통해 상기 프로세서에 의한 실행을 위한 상기 스토리지 디바이스에 저장된 프로그램 명령들을 포함하는 컴퓨터 시스템을 제공하고, 상기 저장된 프로그램 명령들은 하이브리드 고전-양자 컴퓨팅 시스템(a hybrid classical-quantum computing system)을 사용하여 양자 회로 모델 컴파일(compilation of a quantum circuit model)을 개선하는 방법을 포함한다.
[0036] 하나 또는 그 이상의 실시 예들은 양자 알고리즘에 대응하는 양자 회로를 시뮬레이션 하는 혼합 고전 및 양자 방법론(a mixed classical and quantum methodology)을 제공한다. 상기 실시 예에서, 시뮬레이션은 실행의 각 단계에서 양자 알고리즘의 상태에 대한 이상적인 설명(an idealized account of the state of the quantum algorithm)을 제공한다. 상기 실시 예에서, 양자 회로는 양자 알고리즘의 단계들을 수행하는 한 세트의 양자 논리 게이트들에 대응한다. 상기 실시 예에서, 시뮬레이트 된 양자 회로의 각 단계에서 양자 논리 게이트들은 큐비트 상태를 조작(manipulate)한다.
[0037] 일 실시 예에서, 양자 알고리즘이 양자 회로 컴파일 애플리케이션에 제공된다. 상기 실시 예에서, 양자 회로 컴파일 애플리케이션은 양자 알고리즘의 단계들에 대응하는 한 세트의 양자 논리 게이트들 갖는 양자 회로를 형성한다. 상기 실시 예에서, 양자 회로 컴파일 애플리케이션은 양자 프로세서 상에서 한 세트의 큐비트들에 대한 한 세트의 큐비트 파라미터들을 결정한다. 상기 실시 예에서, 양자 회로 컴파일 애플리케이션은 상기 양자 논리 게이트들의 세트에 대해 한 세트의 양자 논리 게이트 파라미터들을 결정한다. 상기 실시 예에서, 양자 회로 컴파일 애플리케이션은 상기 양자 회로에 대해 한 세트의 양자 회로 파라미터들을 결정한다.
[0038] 상기 실시 예에서, 양자 회로 컴파일 애플리케이션은 상기 양자 회로 파라미터들의 세트 중 적어도 하나를 상기 큐비트 파라미터들의 세트 중 적어도 하나와 비교한다. 상기 실시 예에서, 양자 회로 컴파일 애플리케이션은 상기 양자 회로 파라미터들의 세트 중 적어도 하나를 상기 양자 논리 게이트 파라미터들의 세트 중 적어도 하나와 비교한다.
[0039] 설명의 명확성을 위해, 그리고 이에 대한 어떠한 제한도 암시함이 없이, 예시적 실시 예들은 구성들의 일부 예들을 사용하여 설명된다. 본 명세서로부터, 당업자들은 기술된 목적을 달성하기 위해 기술된 구성의 많은 변경들, 적응들 및 수정들을 생각해 낼 수 있을 것이며, 이들도 본 발명의 예시적 실시 예들 범위 내에 포함된다.
[0040] 또한, 예시적 논리 게이트들, 큐비트들 및 기타 회로 컴포넌트들의 단순화된 다이어그램들이 도면들 및 예시적 실시 예들에 사용된다. 실제 조립이나 회로에서, 여기에 도시되거나 설명되지 않은 추가 구조들이나 컴포넌트들, 또는 도시된 것과 다르지만 여기에 설명된 것과 유사한 기능을 위해 존재하는 구조들이나 컴포넌트들이 예시적 실시 예들의 범위를 벗어남이 없이 제공될 수 있다.
[0041] 예시적 실시 예들은 특정 유형의 양자 논리 게이트들, 큐비트들, 양자 프로세서들, 양자 회로들 및 애플리케이션들에 관해서 오직 예들로서만 기술된다. 이들 및 기타 유사한 실시 예들에 관한 특정 설명들은 본 발명을 제한하려고 의도된 것이 아니다. 이들 및 기타 유사한 실시 예들에 관한 적절한 설명들은 본 발명의 예시적 실시 예들의 범위 내에서 선택될 수 있다.
[0042] 본 명세서의 예들은 설명의 명확성을 위해서만 사용되며 본 발명의 예시적 실시 예들을 제한하지 않는다. 여기에 나열된 모든 장점들은 예일뿐이며 예시적 실시 예들을 제한하려고 의도된 것이 아니다. 추가적 또는 다른 장점들은 구체적인 예시적 실시 예들에 의해 실현될 수 있다. 더욱이, 특정한 예시적 실시 예는 위에 열거된 장점들 중 일부, 전부를 갖거나 또는 전혀 갖지 않을 수 있다.
[0043] 도면들, 특히 도 1과 2를 참조하면, 이 도면들은 예시적 실시 예들이 구현될 수 있는 데이터 처리 환경들의 예시적 다이어그램이다. 도 1과 2는 예일뿐이며, 서로 다른 실시 예들이 구현될 수 있는 환경과 관련하여 어떠한 제한을 주장하거나 암시하기 위한 것은 아니다. 특정 구현에서 다음의 설명에 기초하여 도시된 환경들에 대해 많은 수정들이 만들어질 수 있다.
[0044] 도 1은 예시적 실시 예들이 구현될 수 있는 데이터 처리 시스템들의 네트워크 블록 다이어그램을 나타낸다. 데이터 처리 환경(100)은 예시적 실시 예들이 구현될 수 있는 컴퓨터들의 네트워크이다. 데이터 처리 환경(100)은 네트워크 (102)를 포함한다. 네트워크(102)는 데이터 처리 환경(100) 내에서 다양한 디바이스들 및 함께 연결된 컴퓨터들 간의 통신 링크들을 제공하기 위해 사용되는 매체이다. 네트워크(102)는 유선, 무선 통신 링크들 또는 광섬유 케이블들과 같은 연결들이 포함될 수 있다.
[0045] 클라이언트들 또는 서버들은 네트워크(102)에 연결된 특정 데이터 처리 시스템들의 예시적 역할들일 뿐이고 이들 데이터 처리 시스템들에 대한 다른 구성들 또는 역할들을 배제하기 위해 의도된 것이 아니다. 고전적인 처리 시스템 (104)가 네트워크(102)와 결합한다. 고전적 처리 시스템(104)는 고전적 처리 시스템이다. 소프트웨어 애플리케이션들은 데이터 처리 환경(100) 내의 모든 양자 데이터 처리 시스템에서 실행될 수 있다. 도 1의 고전적 처리 시스템(104)에서 실행되는 것으로 설명된 모든 소프트웨어 애플리케이션은 비슷한 방식으로 다른 데이터 처리 시스템에서도 실행되도록 구성될 수 있다. 도 1의 고전적 처리 시스템(104)에 저장되거나 생성된 모든 데이터 또는 정보는 비슷한 방식으로 다른 데이터 처리 시스템에 저장되거나 생성되도록 구성될 수 있다. 고전적 처리 시스템 (104)와 같은, 고전적 데이터 처리 시스템은 데이터를 포함할 수 있으며, 상기 데이터 처리 시스템 상에서 고전적 컴퓨팅 프로세스들을 실행하는 소프트웨어 애플리케이션들 또는 소프트웨어 도구들을 가질 수 있다.
[0046] 서버(106)는 스토리지 유닛(108)과 함께 네트워크(102)에 결합된다. 스토리지 유닛(108)은 양자 회로 설계들, 양자 게이트 파라미터들, 양자 알고리즘들 및 큐비트 파라미터들을 저장하도록 구성된 데이터베이스(109)를 포함한다. 서버(106) 종래의 데이터 처리 시스템(고전적 처리 시스템)이다. 양자 처리 시스템 (140)은 네트워크(102)에 결합된다. 양자 처리 시스템(140)은 양자 데이터 처리 시스템이다. 소프트웨어 애플리케이션은 데이터 처리 환경(100)의 모든 양자 데이터 처리 시스템에서 실행될 수 있다. 도 1의 양자 처리 시스템(140)에서 실행되는 것으로 설명된 모든 소프트웨어 애플리케이션은 비슷한 방식으로 다른 양자 데이터 처리 시스템에서 실행되도록 구성될 수 있다. 도 1의 양자처리시스템(140)에 저장되거나 생성되는 모든 데이터나 정보는 비슷한 방식으로 다른 양자처리시스템에 저장되거나 생성되도록 구성될 수 있다. 양자 처리 시스템(140)과 같은 양자 데이터 처리 시스템은 데이터를 포함할 수 있으며, 양자 컴퓨팅 프로세스를 실행하는 소프트웨어 애플리케이션들 또는 소프트웨어 도구들을 가질 수 있다.
[0047] 클라이어트들(110, 112 및 114)도 또한 네트워크(102)에 결합된다. 서버 (106) 또는 클라이언트(110, 112 또는 114)와 같은 종래의 데이터 처리 시스템은 데이터를 포함할 수 있으며 상기 데이터 처리 시스템 상에서 종래의 컴퓨팅 프로세스들을 실행하는 소프트웨어 애플리케이션들 또는 소프트웨어 도구들을 가질 수 있다.
[0048] 오직 예로서만, 그리고 그러한 아키텍처에 대한 어떠한 제한도 암시함도 없이, 도 1은 일 실시 예의 예시적 구현에서 사용 가능한 특정 컴포넌트들을 도시한다. 예를 들어, 서버(106)과 클라이언트들(110, 112, 114)은 오직 예로서만 서버들 및 클라이언트들로 도시된 것이고 클라이언트-서버 아키텍처에 대한 제한을 암시하기 위해 도시된 것이 아니다. 또 다른 예로, 일 실시 예는 도시된 바와같이 몇 개의 종래의 데이터 처리 시스템들, 양자 데이터 처리 시스템들 및 데이터 네트워크에 걸쳐 분산될 수 있는 반면, 다른 실시 예는 예시적 실시 예들의 범위 내에서 단일의 종래 데이터 처리 시스템 또는 단일의 양자 데이터 처리 시스템 상에서 구현될 수 있다. 종래의 데이터 처리 시스템들(106, 110, 112 및 114)도 또한 일 실시 예에 적합한 클러스터, 파티션들 및 기타 구성들의 예시적 노드들을 나타낸다.
[0049] 디바이스(132)는 여기에서 설명하는 종래의 컴퓨팅 디바이스의 일 예이다. 예를 들어, 디바이스(132)는 스마트폰, 태블릿 컴퓨터, 노트북 컴퓨터, 정지 또는 휴대용 형태의 클라이언트(110), 웨어러블 컴퓨팅 디바이스 또는 기타 적합한 모든 디바이스의 형태를 취할 수 있다. 도 1의 다른 종래의 데이터 처리 시스템에서 실행되는 것으로 설명된 모든 소프트웨어 애플리케이션은 디바이스(132)에서 비슷한 방식으로 실행되도록 구성될 수 있다. 도 1의 다른 종래의 데이터 처리 시스템에 저장되거나 생성된 모든 데이터 또는 정보는 비슷한 방식으로 디바이스(132)에 저장되거나 생성되도록 구성될 수 있다.
[0050] 서버(106), 스토리지 유닛(108), 고전적 처리 시스템(104), 양자 처리 시스템(140) 및 클라이언트들(110, 112, 114) 및 디바이스(132)는 유선 연결들, 무선 통신 프로토콜들 또는 기타 적합한 데이터 연결을 사용하여 네트워크(102)에 결합될 수 있다. 클라이언트들(110, 112 및 114)는, 예를 들어, 개인용 컴퓨터들 또는 네트워크 컴퓨터들일 수 있다.
[0051] 상기 도시된 예에서, 서버(106)은 부팅 파일들, 운영 체제 이미지들 및 애플리케이션들과 같은 데이터를 클라이언트들(110, 112, 114)에 제공할 수 있다. 이 예에서, 클라이언트들(110, 112 및 114)은 서버(106)에 대한 클라이언트들일 수 있다. 클라이언트들(110, 112, 114) 또는 이들의 일부 조합은 자체 데이터, 부팅 파일들, 운영 체제 이미지들 및 애플리케이션들이 포함될 수 있다. 데이터 처리 환경(100)은 추가 서버들, 클라이언트들 및 도시되지 않는 기타 디바이스들이 포함될 수 있다.
[0052] 상기 도시된 예에서, 메모리(124)는 부팅 파일들, 운영 체제 이미지들 및 애플리케이션들과 같은 데이터를 고전적 프로세서(122)에 제공할 수 있다. 고전적 프로세서(122)는 자체 데이터, 부팅 파일들, 운영 체제 이미지들 및 애플리케이션들을 포함할 수 있다. 데이터 처리 환경(100)은 추가 메모리들, 양자 프로세서들 및 도시되지 않는 기타 디바이스들을 포함할 수 있다. 메모리(124)는 하나 또는 그 이상의 실시 예들에 따라 양자 알고리즘들을 컴파일하기 위해 여기에 설명된 하나 또는 그 이상의 고전적 프로세서 기능들을 구현하도록 구성될 수 있는 애플리케이션(105)를 포함한다.
[0053] 상기 도시된 예에서, 메모리(144)는 부팅 파일들, 운영 체제 이미지들 및 애플리케이션들과 같은 데이터를 양자 프로세서(142)에 제공할 수 있다. 양자 프로세서(142)는 자체 데이터, 부팅 파일들, 운영 체제 이미지들 및 애플리케이션들을 포함할 수 있다. 데이터 처리 환경(100)은 추가 메모리들, 양자 프로세서들 및 도시되지 않는 기타 디바이스들을 포함할 수 있다. 메모리(144)는 하나 또는 그 이상의 실시 예들에 따라 여기에 설명된 하나 또는 그 이상의 양자 프로세서 기능들을 구현하도록 구성될 수 있는 애플리케이션(146)을 포함한다.
[0054] 상기 도시된 예에서 데이터 처리 환경(100)은 인터넷일 수 있다. 네트워크 (102)는 서로 통신하기 위해 TCP/IP(Transmission Control Protocol/Internet Protocol) 및 기타 프로토콜들을 사용하는 네트워크들 및 게이트웨이들의 집합을 나타낼 수 있다. 인터넷의 중심에는 데이터와 메시지를 라우트 하는 수천 개의 상업, 정부, 교육 및 기타 컴퓨터 시스템들을 포함하여 주요 노드들 또는 호스트 컴퓨터들 간의 데이터 통신 링크들의 백본이 있다. 물론, 데이터 처리 환경(100)은 또한, 예를 들어, 인트라넷, 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)과 같은 다양한 유형들의 네트워크들로 구현될 수도 있다. 도 1은 예시로서 의도된 것이고, 다른 예시적 실시 예들에 대한 아키텍처 제한으로 의도된 것은 아니다.
[0055] 무엇보다도, 데이터 처리 환경(100)은 예시적 실시 예들이 구현될 수 있는 클라이언트-서버 환경을 구현하기 위해서 사용될 수 있다. 클라이언트-서버 환경은 종래의 클라이언트 데이터 처리 시스템과 종래의 서버 데이터 처리 시스템 간의 상호작용을 사용하여 애플리케이션이 작동하도록 소프트웨어 애플리케이션과 데이터를 네트워크을 통해 분산시키는 것을 가능하게 해준다. 데이터 처리 환경(100)은 또한 네트워크을 통해 배포되는 상호 운용 가능한 소프트웨어 컴포넌트들이 일관성 있는 비즈니스 애플리케이션들(coherent business applications)로서 함께 패키지 될 수 있는 서비스 지향 아키텍처(a service oriented architecture)를 채용할 수도 있다. 데이터 처리 환경(100)은 또한 클라우드의 형태를 취할 수도 있고, 구성 가능한 컴퓨팅 자원들(예: 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들 및 서비스들)의 공유 풀(a shared pool)에 대한 편리한, 온-디맨드 네트워크 액세스를 가능하게 하는 서비스 전달의 클라우드 컴퓨팅 모델을 채택할 수도 있으며, 상기 모델에서, 구성 가능한 컴퓨팅 자원들은 최소한의 관리 노력 또는 서비스 제공업체와의 상호 작용으로 신속하게 제공되고 제공이 해제될 수 있다.
[0056] 도 2를 참조하면, 이 도면은 예시적 실시 예들이 구현될 수 있는 데이터 처리 시스템의 블록 다이어그램을 도시한다. 데이터 처리 시스템(200)은 도 1의 고전적 처리 시스템(104), 서버(106) 또는 클라이언트들(110, 112, 114)와 같은 종래의 컴퓨터, 또는 본 발명의 예시적 실시 예들을 위해 프로세스들을 구현하는 컴퓨터 사용 가능 프로그램 코드 또는 명령들 위치될 수 있는 다른 유형의 디바이스의 예이다.
[0057] 데이터 처리 시스템(200)은, 본 발명의 예시적 실시 예들의 프로세스들을 구현하는 컴퓨터 사용 가능 프로그램 코드 또는 명령들 위치될 수 있는 도 1의 종래의 데이터 처리 시스템(132)와 같은, 종래의 데이터 처리 시스템 또는 그 안의 구성을 나타낸다. 데이터 처리 시스템(200)은 오직 하나의 예로서만, 컴퓨터로 기술되며, 이에 국한되지는 않는다. 도 1의 디바이스(132)와 같은, 다른 디바이스들의 형태의 구현들은, 여기서 설명한 데이터 처리 시스템(200)의 동작들 및 기능들의 일반적인 설명으로부터 벗어남이 없이, 데이터 처리 시스템(200)에 터치 인터페이스를 추가함과 같은 방식에 의해서 데이터 처리 시스템(200)을 수정할 수도 있고, 데이터 처리 시스템(200)으로 부터 특정의 도시된 컴포넌트들을 제거할 수도 있다.
[0058] 상기 도시된 예에서 데이터 처리 시스템(200)은 노스 브리지(North Bridge) 및 메모리 컨트롤러 허브(NB/MCH)(202)와 사우스 브리지(South Bridge) 및 I/O(입출력) 컨트롤러 허브(SB/ICH)(204)를 포함하는 허브 아키텍처를 채용한다. 처리 유닛(206), 메인 메모리(208), 그래픽 프로세서(210)은 노스 브리지 및 메모리 컨트롤러 허브(NB/MCH)(202)에 결합된다. 처리 유닛(206)은 하나 또는 그 이상의 프로세서들을 포함할 수 있으며, 하나 또는 그 이상의 이기종 프로세서 시스템들을 사용하여 구현될 수도 있다. 처리 유닛(206)은 멀티-코어 프로세서일 수 있다. 그래픽 프로세서(210)은 특정 구현들에서 가속 그래픽 포트(AGP)를 통해 NB/MCH(202)에 결합될 수 있다.
[0059] 상기 도시된 예에서, 근거리 네트워크(LAN) 어댑터(212)는 사우스 브리지(South Bridge) 및 I/O컨트롤러 허브(I/O Controller Hub)(SB/ICH)(204)에 결합된다. 오디오 어댑터(216), 키보드 및 마우스 어댑터(220), 모뎀(222), 판독 전용 메모리(ROM)(224), 범용 직렬 버스(USB) 및 기타 포트(232) 및 PCI/PCIe 디바이스들(234)은 사우스 브리지 및 I/O 컨트롤러 허브(204)에 버스(238)를 통해 결합된다. 하드 디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD)(226) 및 CD-ROM(230)은 버스(240)를 통해 사우스 브리지 및 I/O 컨트롤러 허브(204)에 결합된다. PCI/PCIe 디바이스들(234)은, 예를 들어, 이더넷 어댑터들, 애드-인 카드들(add-in cards), 및 노트북 컴퓨터들을 위한 PC 카드들을 포함할 수 있다. PCI는 카드 버스 컨트롤러를 사용하지만, PCIe는 사용하지 않는다. ROM(224)는, 예를 들어, 플래시 이진 입출력 시스템(BIOS)일 수 있다. 하드 디스크 드라이브(226) 및 CD-ROM(230)은, 예를 들어, 통합 드라이브 전자 장치(IDE), 직렬 고급 기술 부착 장치(SATA) 인터페이스, 또는 외장-SATA(eSATA) 및 마이크로-SATA(micro-SATA)와 같은 변종들을 사용할 수 있다. 수퍼(Super) I/O(SIO) 디바이스(236)은 버스(238)를 통해 사우스 브리지 및 I/O 컨트롤러 허브(SB/ICH)(204에 결합될 수 있다.
[0060] 메인 메모리(208), ROM(224) 또는 플래시 메모리(도시되지 않음)와 같은, 메모리들은 컴퓨터 사용 가능 스토리지 디바이스들의 일부 예들이다. 하드 디스크 드라이브 또는 솔리드 스테이트 드라이브(226), CD-ROM(230) 및 기타 유사한 사용 가능 디바이스들도 컴퓨터 사용 가능 스토리지 매체를 포함한 컴퓨터 사용 가능 스토리지 디바이스들의 일부 예들이다.
[0061] 운영 체제는 처리 유닛(206)에서 실행된다. 운영 체제는 도 2의 데이터 처리 시스템(200) 내에서 다양한 컴포넌트들을 조정하고 컨트롤한다. 운영 체제는 서버 시스템들, 개인용 컴퓨터들 및 모바일 디바이스들을 포함하되 이에 국한되지 않는 모든 유형의 컴퓨팅 플랫폼을 위한 상업적으로 사용할 수 있는 운영 체제일 수 있다. 객체 지향 또는 다른 유형의 프로그래밍 시스템이 상기 운영 체제와 함께 운영될 수 있으며 데이터 처리 시스템(200)에서 실행되는 프로그램들 또는 애플리케이션 들로부터 상기 운영 체제에 호출들을 제공할 수 있다.
[0062] 운영 체제, 객체 지향 프로그래밍 시스템 및 도 1의 애플리케이션(105)와 같은 애플리케이션들 또는 프로그램들을 위한 명령들은 하드 디스크 드라이브(226) 상의 코드(226A) 형태로, 스토리지 디바이스들 상에 위치될 수 있고, 처리 유닛(206)에 의한 실행을 위해, 메인 메모리(208)과 같은, 하나 또는 그 이상의 메모리들 중 적어도 하나에 로드 될 수 있다. 예시적 실시 예들의 프로세스들은 컴퓨터 구현 명령들을 사용하여 처리 유닛(206)에 의해서 수행될 수 있고, 상기 컴퓨터 구현 명령들은, 예를 들어, 메인 메모리(208), 판독 전용 메모리(224) 또는 하나 또는 그 이상의 주변 장치들에 위치할 수 있다.
[0063] 또한, 하나의 경우에서, 코드(226A)는 원격 시스템(201B)으로부터 네트워크(201A)을 통해 다운로드 될 수 있으며, 유사한 코드(201C)는 원격 시스템(201B)의 스토리지 디바이스(201D)에 저장되어 있다. 다른 경우에서는, 코드(226A)가 네트워크(201A)를 통해 원격 시스템(201B)으로 다운로드 될 수 있으며, 다운로드 된 코드(201C)는 스토리지 디바이스 (201D)에 저장된다.
[0064] 도 1-2의 하드웨어는 구현에 따라 달라질 수 있다. 플래시 메모리, 동급 비-휘발성 메모리 또는 광 디스크 드라이브들 등과 같은 기타 내장 하드웨어 또는 주변 장치들이 도 1-2에 도시된 하드웨어 대신에 또는 추가로 사용될 수 있다. 또한, 예시적 실시 예들의 프로세스들은 멀티프로세서 데이터 처리 시스템에 적용될 수도 있다.
[0065] 일부 예시적 예들에서, 데이터 처리 시스템(200)은, 운영 체제 파일들 및/또는 사용자 생성 데이터를 저장하기 위한 비-휘발성 메모리를 제공하기 위해 일반적으로 플래시 메모리로 구성되는, 개인 디지털 지원장치(Personal Digital Assistant: PDA)일 수 있다. 버스 시스템은 시스템 버스, I/O 버스 및 PCI 버스와 같은, 하나 또는 그 이상의 버스들로 구성될 수 있다. 물론, 상기 버스 시스템은 패브릭 또는 아키텍처에 부착된 서로 다른 컴포넌트들 또는 디바이스들 간의 데이터 전송을 제공하는 모든 유형의 통신 패브릭 또는 아키텍처를 사용하여 구현될 수 있다.
[0066] 통신 유닛은, 모뎀이나 네트워크 어댑터와 같은, 데이터 전송 및 수신에 사용되는 하나 또는 그 이상의 디바이스들을 포함할 수 있다. 메모리는, 예를 들어, 메인 메모리(208)이거나, 노스 브리지 및 메모리 컨트롤러 허브(202)에서 발견되는 캐시와 같은, 캐시일 수 있다. 처리 유닛은 하나 또는 그 이상의 프로세서들 또는 CPU들을 포함할 수 있다.
[0067] 도 1-2에 도시된 예들과 위에서 설명한 예들은 아키텍처의 제한들을 암시하려고 한 것이 아니다. 예를 들어, 데이터 처리 시스템(200)은 모바일 또는 웨어러블 디바이스 형태 외에 태블릿 컴퓨터, 노트북 컴퓨터 또는 전화 디바이스일 수도 있다.
[0068] 컴퓨터 또는 데이터 처리 시스템이 가상 시스템, 가상 디바이스 또는 가상 컴포넌트로 설명되는 경우, 상기 가상 시스템, 상기 가상 디바이스 또는 상기 가상 컴포넌트는 데이터 처리 시스템(200)에 설명된 일부 또는 모든 컴포넌트들의 가상화 된 표현(manifestation)을 사용하여 데이터 처리 시스템(200)의 방식으로 동작하는 것으로 설명된다. 예를 들어, 가상 시스템, 가상 디바이스 또는 가상 컴포넌트에서, 처리 유닛(206)은 호스트 데이터 처리 시스템에서 이용 가능한 하드웨어 처리 유닛들(206)의 전부 또는 일부의 가상화 된 인스턴스로서 표현되고(manifested as a virtualized instance), 메인 메모리(208)은 호스트 데이터 처리 시스템에서 이용 가능한 메인 메모리(208)의 전부 또는 일부의 가상화 된 인스턴스로서 표현되며, 그리고 디스크(226)는 호스트 데이터 처리 시스템에서 이용할 수 있는 디스크(226) 전체 또는 일부의 가상화 된 인스턴스로서 표현된다. 그러한 경우들에서, 상기 호스트 데이터 처리 시스템은 데이터 처리 시스템(200)을 나타낸다.
[0069] 도 3을 참조하면, 이 도면은 예시적 실시 예들에 따른 양자 프로세서의 교정(calibration)을 위한 예시적 구성을 도시한다. 상기 예시적 실시예는 애플리케이션(302)을 포함한다. 특정 실시 예에서, 애플리케이션(302)는 도 1의 애플리케이션(105)의 예이다.
[0070] 애플리케이션(302)는 교정 컴포넌트(304)를 포함한다. 교정 컴포넌트(304)는 교정 연산자 컴포넌트(calibration operator component)(306), 큐비트 파라미터 분석 컴포넌트(308) 및 양자 게이트 파라미터 분석 컴포넌트(310)를 포함한다. 애플리케이션들(302)는 교정 연산(312)을 수신한다.
[0071] 교정 연산자(306)는 교정 연산(312)를 실행한다. 일 실시 예에서, 교정 연산(312)는 양자 프로세서(314)의 복수의 큐비트들 Q1, Q2, Q3, ..., Qn에 관하여 한 세트의 연산들을 수행한다. 일 실시 예에서, 교정 연산(312)은 복수의 큐비트들에 관하여 랜덤화 된 벤치마킹 방법(a method of randomized benchmarking)을 수행한다. 예를 들어, 교정 연산(312)은 양자 프로세서(314)의 복수의 큐비트들에 관하여 한 세트의 미리-결정된 연산들을 수행할 수 있다. 상기 미리 결정된 연산들의 세트를 수행하는 것에 응답하여, 상기 미리 결정된 연산들의 세트는 각 큐비트에 대해 한 세트의 값들을 생성한다. 일 실시 예에서, 교정 연산자(312)는 각 큐비트에 대한 상기 값들의 세트를 상기 미리-결정된 연산들의 세트 중 적어도 하나의 예상 대답(an expected answer)과 비교한다.
[0072] 일 실시 예에서, 교정 연산(312)은 양자 프로세서(314)의 복수의 큐비트들에 대한 한 세트의 큐비트 파라미터 값들(316)을 리턴 한다. 예를 들어, 큐비트 일관성 시간(qubit coherence time), 큐비트 이완 시간(qubit relaxation time), 측정 오류(measurement error) 및 기타 큐비트 파라미터 값들이 상기 교정 연산에 의해서 결정될 수 있다. 양자 프로세서(314)의 각 큐비트는 상기 파라미터 값들 세트의 서브 세트를 포함할 수 있다. 예를 들어, 큐비트 Q1은 연관된 파라미터 값들 P1, P2, ..., Pn 등을 포함할 수 있다. 이들 큐비트 파라미터 값들의 예들은 제한하려고 의도된 것이 아니다. 본 명세서로부터, 당업자들은 한 세트의 큐비트들을 교정하기 위한 적합한 많은 다른 큐비트 파라미터 값들을 구상할 수 있을 것이고, 그러한 값들은 본 발명의 예시적 실시 예들의 범위 내 포함될 수 있다.
[0073] 일 실시 예에서, 교정 연산(312)은 한 세트의 양자 게이트 파라미터들을 리턴 한다. 예를 들어, 교정 연산(312)은 양자 프로세서(314)의 각 양자 게이트에 대한 오류율에 대응하는 파라미터를 리턴 할 수 있다. 일 실시 예에서, 교정 연산(312)은 양자 프로세서(314)의 각각 하나 및 둘의 큐비트 게이트(each one and two qubit gate)(원시 게이트)에 대한 오류율에 대응하는 파라미터를 리턴 한다.
[0074] 컴포넌트(308)는 상기 큐비트 파라미터 값들의 세트(316)의 세트를 분석한다. 일 실시 예에서, 컴포넌트(308)는 한 세트의 큐비트 허용성 기준들(318) 중 적어도 하나에 따라 상기 큐비트 파라미터 값들의 세트(316)를 분석한다. 예를 들어, 컴포넌트(308)는 하나의 큐비트의 파라미터 값을 하나의 큐비트 허용성 기준과 비교할 수 있다. 예를 들어, 컴포넌트(308)는 큐비트의 일관성 시간이 한 세트의 연산들을 수행하기 위한 임계 값 일관성 시간을 충족하는데 실패하는 지를 결정할 수 있다. 다른 예로서, 컴포넌트(308)는 다른 큐비트의 일관성 시간이 상기 연산들의 세트를 수행하기 위한 임계 값 일관성 시간을 충족하는지를 결정할 수 있다.
[0075] 컴포넌트(310)는 한 세트의 양자 게이트 파라미터들을 분석한다. 일 실시예에서, 양자 게이트 파라미터들은 양자 게이트를 구성하는 큐비트들의 세트와 양자 프로세서 상의 큐비트들의 배치(layout)에 대응한다. 일 실시 예에서, 교정 연산(312)은 양자 프로세서(314)의 복수의 양자 게이트들에 대한 한 세트의 양자 게이트 파라미터 값들을 리턴 한다. 예를 들어, 게이트 오류율들, 게이트 속도들, 게이트 교차 토크 행렬(gate cross talk matrix) 및 기타 양자 게이트 파라미터 값들이 상기 교정 연산에 의해서 결정될 수 있다. 양자 프로세서(314)의 각 양자 게이트는 상기 양자 게이트 파라미터 값들 세트의 서브 세트를 포함할 수 있다. 이들 양자 게이트 파라미터들의 예들은 제한하려고 의도된 것이 아니다. 본 명세서로부터, 당업자들은 한 세트의 양자 게이트들을 교정하는 데 적합한 다른 많은 양자 게이트 파라미터 값들을 구상할 수 있을 것이며, 이들 값들도 본 발명의 예시적 실시 예들의 범위 내에 포함될 수 있다.
[0076] 컴포넌트(310)은 상기 양자 게이트 파라미터 값들의 세트를 분석한다. 일 실시예에서, 컴포넌트(310)은 한 세트의 양자 게이트 허용성 기준들(320) 중 적어도 하나에 따라 상기 양자 게이트 파라미터 값들의 세트를 분석한다. 예를 들어, 컴포넌트(310)는 하나의 양자 게이트의 파라미터 값을 하나의 양자 게이트 허용성 기준과 비교할 수 있다. 예를 들어, 컴포넌트(310)는 양자 게이트의 게이트 오류율이 상기 양자 게이트를 수행하기 위한 임계 값 오류율을 만족시키는데 실패하는 지를 결정할 수 있다.
[0077] 일 실시 예에서, 컴포넌트(310)는 한 세트의 원시 게이트 오류율들(a set of primitive gate error rates)로부터 하나의 복합 게이트(a composite gate)를 위한 복합 게이트 오류율을 생성하고, 상기 복합 게이트는 상기 원시 게이트 오류율들에 대응하는 한 세트의 원시 게이트들로부터 형성된다. 일 실시 예에서, 컴포넌트(310)는 공식
Figure pct00001
로부터 세 개의 큐비트들을 사용하여 형성된 복합 게이트에 대한 복합 게이트 오류율을 생성하고, 여기서 Axy와 Bxy는, 각각, 제1 교정 연산 및 제2 교정 연산 동안에 큐비트들 x및 y로부터 형성된 양자 게이트에 대한 원시 게이트 오류율이다.
[0078] 도 4를 참조하면, 이 도면은 양자 알고리즘들의 컴파일을 위한 검증 및 런타임 추정의 일 예를 도시한다. 예시적 실시 예는 애플리케이션(402)를 포함한다. 특정 실시 예에서, 애플리케이션(402)은 도 1의 애플리케이션(105)의 일 예이다. 애플리케이션(402)은 양자 회로 구축 컴포넌트(404)를 포함한다. 양자 회로 구축 컴포넌트(404)는 출력 양자 회로 설계(420)를 여기에 설명된 예시적 방법에 따라 컴파일한다. 컴파일러 컴포넌트(406)는 입력 양자 알고리즘(418)을 최적화된 양자 회로 설계(420)로 변환(transform)하도록 구성된다. 컴포넌트(406)은 알고리즘 변환 컴포넌트(408)과 양자 회로 시뮬레이션 컴포넌트(410), 및 양자 회로 런타임 추정 컴포넌트(416)를 포함한다.
[0079] 컴포넌트(408)는 양자 앨고리즘 코드를 양자 알고리즘에 의해 수행되는 연산들에 대응하는 제1 양자 회로 설계로 변환한다. 컴포넌트(410)는 상기 양자 알고리즘을 양자 회로로 시뮬레이션 한다. 일 실시 예에서, 컴포넌트들(412 및 414)은 상기 제1 양자 회로를 분석하여 상기 제1 양자 회로에서 사용된 큐비트들의 세트와 양자 게이트들의 세트를 결정한다. 예를 들어, 컴포넌트(414)는 제1 양자 게이트로부터 제1 큐비트 및 제2 큐비트를 결정한다. 일 실시 예에서, 컴포넌트(412)는 상기 제1 큐비트가 한 세트의 연산들을 수행하는지를 결정한다.
[0080] 컴포넌트(412)는 적어도 하나의 큐비트가 한 세트의 큐비트 허용성 기준들로부터의 적어도 하나의 기준을 충족하는지를 결정한다. 예를 들어, 컴포넌트(412)는 큐비트의 일관성 시간이 한 세트의 허용성 기준들 중 적어도 하나에 따른 양자 회로에서 한 세트의 연산들을 수행하기 위한 임계 값 일관성 시간을 충족하는 것에 실패하는 지를 결정할 수 있다.
[0081] 컴포넌트(414)는 상기 양자 게이트 파라미터 값들의 세트를 분석한다. 일실시 예에서, 컴포넌트(414)는 한 세트의 양자 게이트 허용성 기준들 중 적어도 하나에 따라 상기 양자 게이트 파라미터 값들의 세트를 분석한다. 예를 들어, 컴포넌트(414)는 양자 게이트의 파라미터 값을 양자 게이트 허용성 기준과 비교할 수 있다. 예를 들어, 컴포넌트(414)는 양자 게이트의 게이트 오류율이 양자 게이트를 수행하기 위한 임계 값 오류율을 만족하는 것에 실패하는지를 결정할 수 있다.
[0082] 시뮬레이트 된 양자회로가 상기 양자 게이트 허용성 기준들 세트의 서브세트와 상기 큐비트 허용성 기준들 세트의 제2 서브 세트를 충족한다고 결정하는 것에 응답하여, 애플리케이션(402)은 상기 양자 알고리즘을 양자회로(420)로 변환하고, 양자회로(420)는 상기 양자 알고리즘의 연산들을 수행한다. 애플리케이션(402)는 검증 티켓(validation ticket)(422)을 출력하고 사용자에게 검증을 통지한다. 검증 티켓(422)은 검증된 양자 알고리즘들을 실행하는 양자 프로세서를 위한 양자 알고리즘들의 대기 열의 위치(a place in a queue)에 대응한다.
[0083] 양자 회로 런타임 추정 컴포넌트(416)는 출력 양자 회로(420)을 수행하기 위한 런타임을 추정한다(estimate). 일 실시 예에서, 컴포넌트(416)는 제출된 양자 알고리즘 추정하기 위해 제출된 양자 알고리즘의 런타임을 저장된 양자 알고리즘과 비교한다. 예를 들어, 컴포넌트(416)는 양자 게이트들의 수, 양자 게이트들의 유형 및 양자 게이트 파라미터들을 비교하여 제출된 양자 알고리즘에 대한 런타임을 결정할 수 있다. 컴포넌트(416)는 단일 사용자에 의해서 제출된 모든 양자 알고리즘의 총 런타임을 결정한다. 컴포넌트(416)는 총 런타임과 임계 값 런타임(예: 1시간)을 비교한다. 예를 들어, 컴포넌트(416)는 단일 사용자에 의해서 제출된 양자 알고리즘들에 대한 총 런타임을 2시간으로 결정할 수 있다. 컴포넌트(416)는 총 런타임이 임계 값 런타임을 초과하는지를 결정한다. 컴포넌트 (416)는 총 런타임이 임계 값 런타임을 초과한다고 결정하는 것에 응답하여 티켓(422)를 취소한다(revoke).
[0084] 도 5를 참조하면, 이 도면은 예시적 실시 예들에 따른 양자 알고리즘의 검증 및 런타임 추정을 위한 예시적 방법의 플로를 도시한다. 애플리케이션(105)은 일 실시 예에서 방법(500)을 수행한다. 블록(502)에서, 애플리케이션(105)은 사용자로부터의 양자 알고리즘과 한 세트의 사용자 파라미터들을 수신한다. 블록(504)에서, 애플리케이션(105)은 양자 알고리즘의 연산들을 수행하는 한 세트의 양자 게이트들을 형성하는 양자 알고리즘을 시뮬레이션 한다. 블록(506)에서, 애플리케이션(105)은 양자 게이트들 세트의 파라미터들 세트를 분석한다. 블록(508)에서, 애플리케이션(105)은 양자 게이트 세트를 수행하는 큐비트들 세트의 파라미터들의 제2 세트를 분석한다. 블록(510)에서, 애플리케이션(105)은 파라미터들 중 적어도 하나가 허용성 기준을 충족하는지를 결정한다. 상기 적어도 하나의 파라미터가 허용성 기준을 충족하는 것을 실패한다고 결정하는 것에 응답하여(블록 510의 NO 경로), 애플리케이션(105)은 블록(516)으로 이동하여 사용자에게 파라미터 실패를 통지한다. 그 후 애플리케이션(105)은 프로세스(500)를 종료한다.
[0085] 상기 적어도 하나의 파라미터가 허용성 기준을 충족한다고 결정하는 것에 응답하여(블록 510의 YES 경로), 애플리케이션(105)은 블록(512)으로 이동한다. 그 후 애플리케이션(105)은 프로세스(500)를 종료한다 블록(512)에서, 애플리케이션(105)는 양자 알고리즘의 런타임을 추정한다. 블록(514)에서, 애플리케이션(105)는 양자 알고리즘을 양자 게이트들의 제2 세트로 변환한다. 그 후 애플리케이션(105)은 프로세스(500)를 종료한다
[0086] 본 발명의 다양한 실시 예들이 관련된 도면들을 참조하여 설명된다. 본 발명의 범위를 벗어남이 없이 본 발명의 대안적인 실시예들이 고안될 수 있다. 다양한 연결들 및 위치 관계들(예를 들어, 위, 아래, 인접 등)는 다음 설명 및 도면에서 엘리멘트들 사이에 설명되지만, 당업자들은 여기서 설명된 많은 위치 관계들은 비록 방향이 변경되더라도 설명된 기능이 유지될 때 방향에 무관함을 인식할 것이다. 이들 연결들 및/도는 위치 관계들은, 달리 명시되지 않는 한, 직접적 또는 간접적일 수 있으며, 본 발명은 이와 관련하여 제한하려는 의도가 없다. 따라서 주체들의 결합은 직접적 또는 간접적인 결합을 의미할 수 있으며, 주체들 간의 위치 관계는 직접적 또는 간접적인 위치 관계일 수 있다. 간접 위치 관계의 예로서, 계층"B"에 대해 계층"A"를 형성하는 것에 대한 본 명세서의 참조들은 계층"A"및 계층"B"의 관련 특성들 및 기능들이 상기 중간 계층(들)에 의해서 실질적으로 변경되지 않는 한 하나 또는 그 이상의 중간 계층들이 계층"A"및 계층"B"사이에 존재하는 상황들을 포함한다.
[0087] 다음의 정의들 및 약어들은 명세서 및 청구 범위의 해석에 사용될 수 있다. 본 명세서에서 사용된 용어 "포함하다(comprise)", "포함하는 (comprising)", "포함한다(include)", "포함하는(including)", "갖는다(has) ", "갖는(having)", "포함하다(contain)" 또는 "포함하는(containing)", 또는 이들의 다른 변형들은 비-배타적인 포함(a non-exclusive inclusion)을 커버하기 위한 것이다. 예를 들어, 엘리멘트들의 목록을 포함하는 구성, 혼합물, 공정, 방법, 물품 또는 장치는 반드시 그러한 엘리멘트들에만 제한되는 것은 아니며, 명시적으로 나열되지 않거나 또는 그러한 구성, 혼합물, 프로세스, 방법, 물품 또는 장치에 고유한 다른 엘리멘트들도 포함될 수 있다.  
[0088] 또한, 용어 "예시적인"은 "예, 사례, 예시"라는 의미로 사용되었다. 본 명세서에서 "예시적인" 것으로 설명된 임의의 실시예 또는 설계는 반드시 다른 실시예 또는 설계에 비해 선호되거나 유리한 것으로 해석되어서는 안 된다. "적어도 하나" 및 "하나 또는 그 이상"이라는 용어는 1 보다 크거나 같은 임의의 정수, 즉 1, 2, 3, 4 등을 포함 하는 것으로 이해될 수 있다. 용어 "복수"는 2보다 크거나 같은 정수, 즉 2, 3, 4, 5 등을 포함하는 것으로 이해될 수 있다. 용어 "연결"은 간접적인 "연결"과 직접적인 "연결"을 모두 포함할 수 있다.
[0089] "한 실시 예", "하나의 실시 예", "예시적 실시 예", 등에 대한 본 명세서의 참조들은 설명된 상기 실시 예가 특정 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시 예가 상기 특정 특징, 구조, 또는 특성을 포함할 수 있거나 또는 포함하지 않을 수도 있음을 표시한다. 더 나아가, 그러한 문구들은 반드시 동일 실시 예를 가리키는 것은 아니다. 또한, 특정 특징, 구조, 또는 특성이 하나의 실시 예와 관련하여 기술될 때, 그 것은 명시적으로 기술되었던지 또는 아니던 간에 다른 실시 예들과 관련하여 그러한 특징, 구조, 또는 특성에 영향을 주는 당업자의 지식 내에 있음이 제출된 것이다.
[0090] 용어들 "약", "실질적으로", "대략" 및 이들의 변형들은 출원 당시에 이용 가능했던 장비에 기초한 특정 양의 측정과 연관된 오차의 정도를 포함하기 위해 의도된 것이다. 예를 들어, "약"은 주어진 값의 ± 8% 또는 5% 또는 2%의 범위를 포함할 수 있다. 
[0091] 본 발명의 다양한 실시 예들에 대한 설명들은 예시의 목적들로 제공되는 것이며, 빠짐없이 총 망라하거나 개시된 실시 예들로 한정하려고 의도된 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자들에게 기술된 실시 예들의 범위와 정신을 벗어남이 없이 많은 수정들 및 변형들이 있을 수 있다는 것이 명백하다. 여기서 사용된 용어는 시장에서 발견된 기술들에 대한 본 발명의 실시 예들의 원리들, 실제 응용 또는 기술적 개선을 가장 잘 설명하기 위해, 또는 여기서 설명한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해 선택되었다.
[0092] 본 발명의 다양한 실시 예들에 대한 설명들은 예시의 목적들로 제공되는 것이며, 빠짐없이 총 망라하거나 개시된 실시 예들로 한정하려고 의도된 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자들에게 기술된 실시 예들의 범위와 정신을 벗어남이 없이 많은 수정들 및 변형들이 있을 수 있다는 것이 명백하다. 여기서 사용된 용어는 시장에서 발견된 기술들에 대한 본 발명의 실시 예들의 원리들, 실제 응용 또는 기술적 개선을 가장 잘 설명하기 위해, 또는 여기서 설명한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해 선택되었다.
[0093] 따라서, 컴퓨터 구현 방법, 시스템, 또는 장치, 및 컴퓨터 프로그램 제품이 온라인 공동체들 및 기타 관련 특징들, 기능들, 또는 연산들의 참여를 관리하기 위한 예시 적 실시 예들에 제공된다. 하나의 실시 예 또는 그 일부분이 디바이스의 유형과 관련하여 기술되는 경우, 컴퓨터 구현 방법, 시스템, 또는 장치, 컴퓨터 프로그램 제품, 또는 그 일부분은 디바이스의 해당 유형에 대한 적합하고 비교 가능한 표현으로 사용을 위해 구체화되거나 구성된다.
[0094] 실시 예가 애플리케이션으로 기술되는 경우, 소프트웨어 서비스(Software as a Service)(SaaS)로 상기 애플리케이션의 전달이 예시적 실시 예들의 범위 내에서 고려된다. SaaS 모델에서, 실시 예를 구현하는 애플리케이션의 능력이 클라우드 인프라스트럭처에서 상기 애플리케이션을 실행함으로써 사용자에게 제공된다. 사용자는 웹브라우저(예를들어, 웹-기반 이-메일)와 같은 씬 클라이언트 인터페이스 또는 기타 경량의 클라이언트-애플리케이션들을 통한 다양한 클라이언트 디바이스들을 사용하여 상기 애플리케이션에 액세스할 수 있다. 사용자는 네트워크, 서버들, 운영체제들, 또는 클라우드 인프라스트럭처의 스토리지를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 일부 경우들에서, 사용자는 SaaS 애플리케이션의 능력도 관리하거나 제어하지 못할 수 있다. 일부 다른 경우들에서, 상기 애플리케이션의 SaaS 구현은 제한된 사용자-특화 애플리케이션 구성 세팅들의 가능한 예외를 허용할 있다.
[0095] 본 발명은 시스템, 방법, 및/또는 통합의 모든 가능한 기술적 세부 레벨에서 컴퓨터 프로그램 제품 일 수 있다. 컴퓨터 프로그램 제품은 프로세서로 하여금 본 발명의 실시 예들을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령을 갖는 컴퓨터 판독가능 저장 매체(또는 매체)를 포함할 수 있다.
[0096] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 히스토리된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0097] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0098] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크을 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 논리 회로, 필드-프로그램 가능 게이트 어레이들(FPGA),또는 프로그램 가능 논리 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0099] 본 명세서에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들을 기술한다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[00100] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[00101] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00102] 도면들 내 플로 차트 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 연관된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.

Claims (10)

  1. 방법에 있어서, 상기 방법은:
    양자 알고리즘을 수신하는 단계;
    상기 양자 알고리즘을 시뮬레이션 하는 단계-상기 양자 알고리즘은 한 세트의 양자 게이트들을 형성함-;
    상기 양자 게이트들의 세트의 파라미터들의 제1세트를 분석하는 단계;
    상기 양자 게이트들의 세트를 수행하는 한 세트의 큐비트들의 파라미터들의 제2 세트를 분석하는 단계; 및
    상기 파라미터들의 제1 세트 또는 상기 파라미터들의 제2 세트 중 적어도 하나가 허용성 기준(an acceptability criterion)을 충족한다고 결정하는 것에 응답하여, 상기 양자 알고리즘을 양자 게이트들의 제2 세트로 변환하는 단계를 포함하는
    방법.
  2. 제1항에 있어서, 상기 방법은:
    상기 양자 알고리즘의 런타임을 추정하기 위해 상기 양자 앨고리즘을 저장된 양자 알고리즘과 비교하는 단계를 더 포함하는
    방법.
  3. 제1항에 있어서, 상기 방법은:
    상기 파라미터들의 제1 세트 또는 상기 파라미터들의 제2 세트 중 적어도 하나가 허용성 기준(an acceptability criterion)을 충족한다고 결정하는 것에 응답하여, 검증된 양자 알고리즘들을 실행하는 양자 프로세서를 위해 양자 알고리즘들의 대기열의 한 위치(a place in a queue)에 대응하는 검증 티켓(a validation ticket)을 생성하는 단계를 더 포함하는
    방법.
  4. 제3항에 있어서, 상기 방법은:
    사용자에 의해서 제출된 한 세트의 양자 알고리즘들의 총 런타임이 임계값 런타임을 초과하는 것에 응답하여 상기 검증 티켓을 취소하는 단계를 더 포함하는
    방법.
  5. 제1항에 있어서, 상기 방법은:
    상기 파라미터들의 제1 세트 또는 상기 파라미터들의 제2 세트 중 적어도 하나가 허용성 기준(an acceptability criterion)을 충족하는 것을 실패했다고 결정하는 것에 응답하여, 상기 실패한 적어도 하나의 파라미터를 사용자에게 통지하는 단계를 더 포함하는
    방법.
  6. 제1항에 있어서, 상기 방법은:
    상기 제2 세트의 양자 게이트들을 사용하여 상기 양자 알고리즘을 실행하는 단계를 더 포함하는
    방법.
  7. 제1항에 있어서, 상기 허용 가능성 기준은 양자 게이트의 임계값 오류율인
    방법.
  8. 제1항에 있어서, 상기 허용성 기준은 큐비트의 임계 일관성 시간(a threshold coherence time of a qubit)인
    방법.
  9. 시스템에 있어서, 상기 시스템은:
    이전의 방법 청구항들 중 어느 한 항에 따른 상기 방법의 모든 단계들을 수행하도록 구성된 수단들을 포함하는
    시스템.
  10. 컴퓨터 프로그램에 있어서, 상기 컴퓨터 프로그램은:
    상기 컴퓨터 프로그램이 컴퓨터 시스템에서 실행될 때, 이전의 방법 청구항들 중 어느 한 항에 따른 상기 방법의 모든 단계들을 수행하기 위한 명령들을 포함하는
    컴퓨터 프로그램.
KR1020217028759A 2019-03-09 2020-02-28 양자 알고리즘의 런타임 검증 및 추정 KR20210119533A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/297,604 2019-03-09
US16/297,604 US11580433B2 (en) 2019-03-09 2019-03-09 Validating and estimating runtime for quantum algorithms
PCT/EP2020/055256 WO2020182489A1 (en) 2019-03-09 2020-02-28 Validating and estimating runtime for quantum algorithms

Publications (1)

Publication Number Publication Date
KR20210119533A true KR20210119533A (ko) 2021-10-05

Family

ID=69743224

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217028759A KR20210119533A (ko) 2019-03-09 2020-02-28 양자 알고리즘의 런타임 검증 및 추정

Country Status (7)

Country Link
US (2) US11580433B2 (ko)
EP (1) EP3938971A1 (ko)
JP (1) JP7315684B2 (ko)
KR (1) KR20210119533A (ko)
CN (1) CN113614752A (ko)
AU (1) AU2020233909B2 (ko)
WO (1) WO2020182489A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474867B2 (en) * 2019-07-11 2022-10-18 Microsoft Technology Licensing, Llc Measurement sequence determination for quantum computing device
US11853731B2 (en) * 2020-03-24 2023-12-26 IonQ, Inc. Pulse generation
CN114757225B (zh) * 2022-03-31 2023-05-30 北京百度网讯科技有限公司 信号采样质量的确定方法、装置、设备及存储介质
CN117744819A (zh) * 2022-09-14 2024-03-22 本源量子计算科技(合肥)股份有限公司 评测量子设备性能的方法、装置、存储介质及电子装置
CN115934346B (zh) * 2022-12-28 2023-10-20 北京大学 算子的自动检测方法、装置、电子设备及介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030121028A1 (en) * 2001-12-22 2003-06-26 Michael Coury Quantum computing integrated development environment
US20060224547A1 (en) * 2005-03-24 2006-10-05 Ulyanov Sergey V Efficient simulation system of quantum algorithm gates on classical computer based on fast algorithm
US8832165B2 (en) 2007-12-12 2014-09-09 Lockheed Martin Corporation Computer systems and methods for quantum verification and validation
ES2792898T3 (es) * 2014-09-24 2020-11-12 Quantum Valley Invest Fund Lp Generación de una secuencia de control para control cuántico
US11113084B2 (en) 2015-04-10 2021-09-07 Microsoft Technology Licensing, Llc Method and system for approximate quantum circuit synthesis using quaternion algebra
US10140404B2 (en) * 2015-11-06 2018-11-27 Rigetti & Co, Inc. Analyzing quantum information processing circuits
US10664249B2 (en) 2015-11-20 2020-05-26 Microsoft Technology Licensing, Llc Verified compilation of reversible circuits
EP3593298A4 (en) 2017-03-10 2021-01-20 Rigetti & Co., Inc. PERFORMING A CALIBRATION PROCESS IN A QUANTUM DATA PROCESSING SYSTEM
US10275721B2 (en) 2017-04-19 2019-04-30 Accenture Global Solutions Limited Quantum computing machine learning module
US10430162B2 (en) 2017-05-18 2019-10-01 Microsoft Technology Licensing, Llc Quantum resource estimates for computing elliptic curve discrete logarithms
EP3642765A4 (en) 2017-06-19 2021-04-07 Rigetti & Co., Inc. DISTRIBUTED QUANTUM COMPUTER SYSTEM
US11580000B2 (en) 2017-07-23 2023-02-14 Keysight Technologies Canada Inc. Systems and methods for local randomized benchmarking
US11367010B2 (en) * 2018-05-02 2022-06-21 IonQ, Inc. Quantum computer simulator characterization
US11374594B2 (en) 2018-05-05 2022-06-28 Intel Corporation Apparatus and method including neural network learning to detect and correct quantum errors
US11531922B2 (en) 2018-09-27 2022-12-20 Intel Corporation Apparatus and method for scalable qubit addressing
US11354460B2 (en) * 2018-10-16 2022-06-07 Red Hat, Inc. Validator and optimizer for quantum computing simulator

Also Published As

Publication number Publication date
JP2022522101A (ja) 2022-04-14
US11580433B2 (en) 2023-02-14
AU2020233909A1 (en) 2021-09-30
JP7315684B2 (ja) 2023-07-26
WO2020182489A1 (en) 2020-09-17
US20230409938A1 (en) 2023-12-21
AU2020233909B2 (en) 2023-04-13
US20200285986A1 (en) 2020-09-10
CN113614752A (zh) 2021-11-05
EP3938971A1 (en) 2022-01-19

Similar Documents

Publication Publication Date Title
JP7493526B2 (ja) 量子コンピューティングにおける適応エラー修正
US10831455B2 (en) Quantum circuit compilation with quantum libraries as a service
KR20210119533A (ko) 양자 알고리즘의 런타임 검증 및 추정
US11620534B2 (en) Automatic generation of Ising Hamiltonians for solving optimization problems in quantum computing
US11645132B2 (en) Noise and calibration adaptive compilation of quantum programs
JP2020535517A (ja) 量子計算対応のクラウド環境におけるジョブ処理のための方法、量子クラウド環境(qce)、およびコンピュータ・プログラム
US11874838B2 (en) Automatic quantum searching of object databases
WO2020126541A1 (en) Adaptive quantum circuit construction for multiple-controlled-not gates
AU2020237590B2 (en) Compilation of quantum algorithms

Legal Events

Date Code Title Description
A201 Request for examination