KR102696751B1 - 복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버 - Google Patents

복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버 Download PDF

Info

Publication number
KR102696751B1
KR102696751B1 KR1020240024877A KR20240024877A KR102696751B1 KR 102696751 B1 KR102696751 B1 KR 102696751B1 KR 1020240024877 A KR1020240024877 A KR 1020240024877A KR 20240024877 A KR20240024877 A KR 20240024877A KR 102696751 B1 KR102696751 B1 KR 102696751B1
Authority
KR
South Korea
Prior art keywords
quantum
gate
processing time
simulator
test
Prior art date
Application number
KR1020240024877A
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 (주)노르마
Priority to KR1020240024877A priority Critical patent/KR102696751B1/ko
Application granted granted Critical
Publication of KR102696751B1 publication Critical patent/KR102696751B1/ko

Links

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
    • 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/40Physical realisations or architectures of quantum processors or components for manipulating qubits, e.g. qubit coupling or qubit control
    • 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/80Quantum programming, e.g. interfaces, languages or software-development kits for creating or handling programs capable of running on quantum computers; Platforms for simulating or accessing quantum computers, e.g. cloud-based quantum computing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명의 기술적 사상은 복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버에 관한 것이다. 본 개시의 일 실시예에 따른 서버에 의해 수행되는 양자 시뮬레이터를 테스트하는 방법은, 양자 소자들을 포함하는 양자 라이브러리를 로드하는 단계; 복수의 시뮬레이터들에 대한 정보를 포함하는 시뮬레이터 리스트를 획득하는 단계; 상기 시뮬레이터 리스트를 기초로 상기 복수의 시뮬레이터들 중 테스트 시뮬레이터가 지원하는 양자 게이트에 대한 정보를 획득하는 단계; 상기 양자 라이브러리로부터 상기 양자 게이트를 획득하고, 상기 양자 게이트를 양자 회로에 배치하는 단계; 상기 양자 회로를 상기 테스트 시뮬레이터로 시뮬레이션 시킴으로써 소요된 처리 시간을 획득하는 단계;및 상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계;를 포함할 수 있다.

Description

복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버{A QUANTUM CIRCUIT TEST METHOD OBTAINING PROCESS TIME BY GATE USING A PLURALITY OF THE SIMULATORS AND A SERVER PERFORMING THEREOF}
본 발명은 복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득 하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버에 관한 것이다.
양자 컴퓨터는 양자역학의 원리를 기반으로 하여 정보 처리를 수행하는 컴퓨팅 장치이다. 일반적인 디지털 컴퓨팅과는 달리, 양자 비트 또는 큐비트라고 불리는 양자 상태(superposition)를 활용한다.
양자 컴퓨터는 얽힘(entanglement) 현상을 활용하여 복수의 큐비트 간 상호작용을 조절하며, 이를 통해 병렬적인 계산을 실행할 수 있다. 이러한 특성은 특정 문제의 해결에 있어 전통적인 컴퓨팅 방식보다 뛰어난 성능을 제공할 수 있다.
양자 컴퓨팅 기술의 개발은 여러 기술적인 어려움과 도전에 직면하고 있으며, 현재는 실험실 수준의 연구가 주를 이루고 있다. 이러한 문제점은 양자 컴퓨터를 활용하기 위해서 시간당 수억에 달하는 고가의 비용을 지불해야 하는 점이 가장 주된 원인이라고 할 수 있다. 따라서, 양자 컴퓨터를 활용하기 전에 고전 컴퓨터에서 양자 회로를 설계하고 시뮬레이션 하는 시뮬레이터가 개발되었다. 하지만 시뮬레이터 별로 처리 방식과 아웃풋 타입이 전혀 상이함에 따라서 처리 시간도 전혀 상이하여 사용자가 여러 시뮬레이터를 활용하는데 문제점이 발생하였다.
본 발명의 목적은, 복수의 시뮬레이터들을 이용하여 게이트 별 처리 시간을 획득하는 양자 시뮬레이터 테스트 방법을 제공하는데 있다.
본 발명의 또 다른 목적은, 복수의 시뮬레이터들의 다양한 조건 별로 달라지는 처리 시간을 데이터 베이스에 함께 기록하는 양자 시뮬레이터 테스트 방법을 제공하는데 있다.
본 개시의 일 실시예에 따른 서버에 의해 수행되는 양자 시뮬레이터를 테스트하는 방법은, 양자 소자들을 포함하는 양자 라이브러리를 로드하는 단계; 복수의 시뮬레이터들에 대한 정보를 포함하는 시뮬레이터 리스트를 획득하는 단계; 상기 시뮬레이터 리스트를 기초로 상기 복수의 시뮬레이터들 중 테스트 시뮬레이터가 지원하는 양자 게이트에 대한 정보를 획득하는 단계; 상기 양자 라이브러리로부터 상기 양자 게이트를 획득하고, 상기 양자 게이트를 양자 회로에 배치하는 단계; 상기 양자 회로를 상기 테스트 시뮬레이터로 시뮬레이션 시킴으로써 소요된 처리 시간을 획득하는 단계;및 상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계;를 포함할 수 있다.
일 실시예에서, 상기 양자 회로는, 제1 큐비트의 양자 상태를 나타내는 제1 양자 선; 제2 큐비트의 양자 상태를 나타내는 제2 양자 선;및 상기 제1 큐비트 및 상기 제2 큐비트 중 적어도 하나에 대한 연산을 수행하는 양자 게이트;를 포함할 수 있다.
일 실시예에서, 상기 양자 게이트는, 큐비트의 '0'또는'1'에 해당하는 상태 확률을 교환하거나, 확률 진폭 또는 확률 위상을 변경하는 파울리 게이트; 큐비트를 '0'및'1'의 중첩 상태로 고정시키는 아다마르 게이트; 복수의 큐비트들을 얽힘 상태로 만드는 CNOT 게이트; 복수의 큐비트들의 상태를 스왑하는 스왑 게이트; 제1 큐비트 및 제2 큐비트의 상태에 기초하여 제3 큐비트의 상태를 반전시키는 토폴리 게이트;및 제1 큐비트의 상태에 기초하여 제2 큐비트 및 제3 큐비트의 상태를 스왑하는 프레드킨 게이트;를 포함할 수 있다.
일 실시예에서, 상기 양자 게이트를 양자 회로에 배치하는 단계는, 상기 시뮬레이터 리스트로부터 상기 테스트 시뮬레이터가 지원하는 큐비트의 개수 및 복수의 지원 게이트들에 대한 정보를 획득하는 단계;및 상기 큐비트의 개수를 최대 값으로 하여, 상기 테스트 시뮬레이터가 지원하는 상기 복수의 지원 게이트들을 병렬로 배치하는 단계;를 포함할 수 있다.
일 실시예에서, 상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계는, 상기 게이트 별 처리 시간 DB에 상기 복수의 지원 게이트들의 병렬 구조에 대응하도록 상기 처리 시간을 저장하는 단계;를 포함할 수 있다.
일 실시예에서, 상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계는, 상기 시뮬레이터 리스트로부터 상기 테스트 시뮬레이터가 지원하는 복수의 지원 게이트들에 대한 정보를 획득하는 단계; 상기 시뮬레이션 결과 상기 복수의 지원 게이트들 각각에 대한 처리 시간을 상기 게이트 별 처리 시간 DB에 저장하는 단계; 상기 복수의 지원 게이트 중 적어도 두개로 이루어지는 병렬 구조에 대한 처리 시간을 상기 병렬 구조를 구성하는 지원 게이트 각각에 대한 처리 시간 중 최대 값으로 결정하는 단계;및 상기 결정된 병렬 구조에 대한 처리 시간을 상기 병렬 구조에 대응되도록 상기 게이트 별 처리 시간 DB에 저장하는 단계;를 포함할 수 있다.
일 실시예에서, 상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계는, 상기 시뮬레이터 리스트로부터 상기 테스트 시뮬레이터가 지원하는 아웃풋 타입에 대한 정보를 획득하는 단계;및 상기 게이트 별 처리 시간 DB에 상기 아웃풋 타입에 대응하도록 상기 처리 시간을 저장하는 단계;를 포함할 수 있다.
일 실시예에서, 상기 아웃풋 타입은 양자 비트열이고, 상기 게이트 별 처리 시간 DB에 상기 아웃풋 타입에 대응하도록 상기 처리 시간을 저장하는 단계는, 상기 게이트 별 처리 시간 DB에 상기 시뮬레이션을 수행한 측정 횟수 및 양자 비트열의 측정 확률을 함께 저장하는 단계;를 포함하는 테스트 방법.
일 실시예에서, 제1 양자 게이트에 대한 테스트 결과 제1 테스트 시뮬레이터에 대한 제1 처리 시간을 획득하는 단계; 상기 제1 양자 게이트에 대한 테스트 결과 제2 테스트 시뮬레이터에 대한 상기 제1 처리 시간보다 긴 제2 처리 시간을 획득하는 단계;및 상기 제2 테스트 시뮬레이터에 대응하는 제2 게이트 별 처리시간 DB에 상기 제1 양자 게이트에 대해서 상기 제1 테스트 시뮬레이터가 더 신속함을 나타내는 정보를 저장하는 단계;를 더 포함할 수 있다.
본 개시의 일 실시예에 따른 양자 회로를 시뮬레이션하기 위해 사용자에게 소프트웨어 개발 키트를 제공하는 서버는 상기 소프트웨어 개발 키트를 구성하는 적어도 하나의 명령어를 저장하는 메모리;및 상기 적어도 하나의 명령어를 활용하여 상기 사용자에게 소프트웨어 개발 환경을 제공하는 프로세서;를 포함하고, 상기 프로세서는, 양자 소자들을 포함하는 양자 라이브러리를 로드하고, 복수의 시뮬레이터들에 대한 정보를 포함하는 시뮬레이터 리스트를 획득하고, 상기 시뮬레이터 리스트를 기초로 상기 복수의 시뮬레이터들 중 테스트 시뮬레이터가 지원하는 양자 게이트에 대한 정보를 획득하고, 상기 양자 라이브러리로부터 상기 양자 게이트를 획득하고, 상기 양자 게이트를 양자 회로에 배치하고, 상기 양자 회로를 상기 테스트 시뮬레이터로 시뮬레이션 시킴으로써 소요된 처리 시간을 획득하고, 상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 것을 특징으로 할 수 있다.
본 발명의 기술적 사상에 따르면, 양자 회로를 구성하는 양자 게이트에 대해서 양자 시뮬레이터를 이용하여 구동 조건 별로 테스트를 수행하고, 테스트 한 결과를 데이터베이스화 함으로써 사용자가 시뮬레이터를 구동하기 전에 가장 최적의 시뮬레이터가 무엇인지 확인할 수 있고, 처리 시간을 예측할 수 있다. 또한, 그렇게 결정된 최적의 시뮬레이터를 활용하여 시뮬레이션을 수행함으로써 양자 컴퓨터를 활용하기 전에 최적의 양자 회로를 설계할 수 있고, 결과적으로 한정되고 고가의 자원인 양자 컴퓨터를 효율적으로 활용할 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 양자 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이다.
도 3은 본 개시의 예시적 실시예에 따른 양자 회로를 나타내는 도면이다.
도 4는 본 개시의 예시적 실시예에 따른 시뮬레이터 리스트를 나타내는 표이다.
도 5는 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이다.
도 6은 본 개시의 예시적 실시예에 따른 테스트 회로를 나타내는 도면이다.
도 7은 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이다.
도 8은 본 개시의 예시적 실시예에 따른 게이트 별 처리시간 DB를 나타내는 표이다.
도 9는 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이다.
도 10은 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이다.
도 11은 본 개시의 예시적 실시예에 따른 게이트 별 처리 속도 DB를 나타내는 표이다.
도 12는 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 발명의 기술적 사상을 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
본 발명에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
어느 하나의 실시예에 포함된 구성요소와, 공통적인 기능을 포함하는 구성 요소는, 다른 실시예에서 동일한 명칭을 사용하여 설명될 수 있다. 반대되는 기재가 없는 이상, 어느 하나의 실시예에 기재된 설명은 다른 실시예에도 적용될 수 있으며, 중복되는 범위 또는 당해 기술 분야에 속한 통상의 기술자가 자명하게 이해할 수 있는 범위 내에서 구체적인 설명은 생략될 수 있다.
이하, 본 발명의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
이하, 본 발명의 바람직한 실시예 및 첨부한 도면을 참조하여 본 발명에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시예에 따른 양자 컴퓨팅 시스템을 나타내는 블록도이다.
도 1을 참조하면, 양자 컴퓨팅 시스템(1)은 서버(10), 사용자 단말(20) 및 양자 컴퓨터(30)를 포함할 수 있다. 서버(10)는 양자 SDK 모듈(100) 및 양자 시뮬레이터 모듈(200)을 포함할 수 있다. 양자 SDK 모듈(100) 및 양자 시뮬레이터 모듈(200)은 소프트웨어 모듈 또는 하드웨어 모듈로서 구현될 수 있고, 하나의 서버 또는 두 개 이상의 서버에 의해 운용될 수 있다. 서버(10)는 사용자 단말(20)의 제어 아래 양자 컴퓨팅 시뮬레이션 전반을 수행할 수 있고, 서버(Server) 및 상기 서버를 운용하는 운용 컴퓨터 등을 통칭할 수 있으며, 일 예시에서 클라우드 내에서 구현될 수 있다. 일 실시예에서, 서버(10)는 웹사이트, 어플리케이션(Application) 등의 응용 프로그램을 이용하여 게이트 별 처리시간 DB(GDB)와 같은 데이터를 사용자 단말(20)에 전송할 수 있다.
사용자 단말(20)은 양자 회로를 설계하고, 설계된 양자 회로를 시뮬레이션 한 이후 실제 양자 컴퓨터(30)를 이용해 연산하고자 하는 사용자에 의해 운용될 수 있고, 셀룰러 폰(Cellular Phone), 스마트 폰(Smart phone), 랩탑(Laptop), PC(Personal Computer), 네비게이션, PCS(Personal Communication System), GSM(Global System for Mobile communications), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet) 단말, 스마트 패드(Smartpad), 타블렛 PC(Tablet PC) 등 통신 가능한 각종 단말 장치를 포함할 수 있다.
양자 컴퓨팅 시스템(1)의 각 구성은 유무선으로 서로 통신 가능하도록 연결될 수 있고, 유선으로 연결되는 경우에, 양자 컴퓨팅 시스템(1)에 포함되는 각 구성은 시리얼 방식을 이용하여 통신할 수 있고, 무선으로 연결되는 경우에, 양자 컴퓨팅 시스템(1)에 포함되는 각 구성은 무선 통신망을 이용하여 서로 통신할 수 있고, 무선 통신망에는 근거리 통신망(LAN: Local Area Network), 광역 통신망(WAN: Wide Area Network), 인터넷(WWW: World Wide Web), 유무선 데이터 통신망, 전화망, 유무선 텔레비전 통신망, 3G, 4G, 5G, 3GPP(3rd Generation Partnership Project), 5GPP(5th Generation Partnership Project), LTE(Long Term Evolution), WIMAX(World Interoperability for Microwave Access), 와이파이(Wi-Fi), 인터넷(Internet), LAN(Local Area Network), Wireless LAN(Wireless Local Area Network), WAN(Wide Area Network), PAN(Personal Area Network), RF(Radio Frequency), 블루투스(Bluetooth) 네트워크, NFC(Near-Field Communication) 네트워크, 위성 방송 네트워크, 아날로그 방송 네트워크, DMB(Digital Multimedia Broadcasting) 네트워크 등이 포함되나 이에 한정되지는 않는다.
양자 SDK 모듈(100)은 양자 라이브러리를 기초로 사용자에게 양자 회로를 설계하기 위한 소프트웨어 개발 키트를 제공할 수 있다. 소프트웨어 개발 키트(Software Development Kit; SDK)는, 양자 회로를 설계하고 시뮬레이션하기 위해 개발된 소프트웨어 개발 도구의 모음이다. SDK는 사용자가 양자 회로를 쉽고 빠르게 개발할 수 있도록 지원하는 API(응용 프로그래밍 인터페이스), 라이브러리, 개발 도구, 문서, 예제 코드 등을 포함한다. 이를 통해 사용자는 플랫폼의 기본적인 설정이나 기능을 깊게 이해하지 않아도 애플리케이션을 구축할 수 있으며, 개발 과정을 단순화하고 가속화할 수 있다.
본 명세서에서, 양자 라이브러리는 양자 게이트, 양자선 등의 양자 소자들과, 시뮬레이터에 대한 정보 등 양자 회로를 설계하기 위한 각종 정보를 포함할 수 있다. 양자 SDK 모듈(100)은 사용자 단말(20)에게 양자 라이브러리를 제공하고, 사용자 단말(20)의 제어 하에 설계된 양자 회로(QC)를 양자 시뮬레이터 모듈(200)에 전송하여 시뮬레이션 할 수 있다.
양자 SDK 모듈(100)은 사용자 단말(20)에게 양자 라이브러리와 함께 게이트 별 처리시간 DB(GDB)를 전송할 수 있다. 게이트 별 처리시간 DB(GDB)는 양자 회로를 설계하는데 활용하는 양자 게이트 별로 시뮬레이션 하는데 필요한 시간에 대한 정보를 포함할 수 있다. 일 실시예에서, 시뮬레이터 별로 양자 게이트 처리 시간이 다르기 때문에, 게이트 별 처리시간 DB(GDB)는 시뮬레이터 별로 생성될 수 있다.
양자 시뮬레이터 모듈(200)은 양자 컴퓨팅의 작동원리나 양자 알고리즘을 모사하기 위해 설계된 소프트웨어 또는 하드웨어 시스템으로서 소프트웨어 기반 양자 시뮬레이터 및 하드웨어 기반 양자 시뮬레이터를 포함할 수 있고, 일 예로서, Qasm 시뮬레이터, Statevector 시뮬레이터, Unitary 시뮬레이터, QPlayer 시뮬레이터, 광학 기반 시뮬레이터, 초전도 회로 시뮬레이터 등을 포함할 수 있다. 양자 시뮬레이터 모듈(200)은 복수의 시뮬레이터들을 포함할 수 있고 일 예시로서 제1 시뮬레이터(SM1) 및 제2 시뮬레이터(SM2)를 포함할 수 있다.
양자 시뮬레이터 모듈(200)은 복수의 시뮬레이터들(SM1, SM2) 중 양자 SDK 모듈(100)에 의해 선택된 시뮬레이터를 활용하여 양자 회로(QC)를 시뮬레이션 하고 결과 값(Res)를 양자 SDK 모듈(100)에 전송할 수 있다. 결과 값(Res)은 다양한 형태의 데이터 타입을 포함할 수 있으며, 일 예시에서, 양자 비트 스트림, 상태 벡터, 기대 값, 파라미터의 기울기 값을 포함할 수 있다. 양자 SDK 모듈(100)은 결과 값(Res)을 사용자 단말(20)에 제시할 수 있고, 사용자 단말(20)은 결과 값(Res)에 기초하여 양자 회로(QC)를 적응적으로 수정할 수 있다. 결과 값(Res)이 적합한 경우, 사용자 단말(20)은 양자 SDK 모듈(100)에 양자 컴퓨터(30)를 활용한 연산을 수행할 것을 요청할 수 있고, 양자 SDK 모듈(100)은 양자 컴퓨터(30)에 양자 회로(QC)를 전송하고, 대응한 결과 값을 사용자 단말(20)에 제공할 수 있다.
본 개시의 기술적 사상에 따르면, 양자 SDK 모듈(100)은 양자 라이브러리(QL)를 활용하여 사용자 단말(20)에게 양자 회로(QL)를 설계하기에 용이한 SDK를 제공하고, 복수의 시뮬레이터들 중 양자 회로(QL)에 적합한 시뮬레이터를 이용하여 시뮬레이션을 수행할 수 있고, 결과적으로 사용자는 적합한 결과 값이 획득될 때까지 적응적으로 양자 회로(QL)를 수정함으로써 최적의 양자 회로(QL)를 획득할 수 있다. 또한, 시뮬레이터를 활용하여 최적의 양자 회로(QL)를 설계함으로써 한정적이고 고가의 양자 컴퓨터(30)를 최소한 활용하면서도 원하는 결과값을 획득할 수 있다.
본 개시의 일 실시예에 따르면, 양자 SDK 모듈(100)은 서버(10)에 의해 구현됨으로써 사용자가 웹 상에서 SDK를 활용할 수 있고, 이에 따라서 별도의 응용 프로그램 설치 없이 간편하게 사용자가 양자 회로(QC)를 설계할 수 있고, 결과적으로 사용자의 SDK 활용 용이성이 높아질 수 있다.
일 실시예에서, 양자 SDK 모듈(100)은 게이트 별로 테스트 회로를 설계하고, 테스트 회로를 양자 시뮬레이터 모듈(200)을 활용하여 시뮬레이션 한 결과를 이용하여 게이트 별 처리시간 DB(GDB)를 생성할 수 있다. 테스트 회로는 양자 라이브러리에 존재하는 양자 소자 각각 또는 어느 조합을 적어도 하나의 큐비트에 대응되도록 배치함에 따라서 설계될 수 있다.
본 개시의 일 실시예에 따르면, 양자 SDK 모듈(100)이 양자 게이트를 이용하여 테스트 회로를 설계하고, 이를 기초로 복수의 시뮬레이터들 중 어느 하나를 활용하여 시뮬레이션 함으로써 시뮬레이터 별로 양자 게이트를 처리하는데 소요되는 처리 시간을 획득할 수 있고, 이를 게이트 별 처리 시간 DB(GDB)를 통해 사용자 단말(20)에게 제공할 수 있다.
시뮬레이터는 양자 회로에 대한 처리 방법이나 아웃풋 타입 등이 전혀 상이하기 때문에 같은 소자라도 처리 속도에 있어서 차이가 클 수 있다. 본 개시의 일 실시예에 따르면, 사용자 단말(20)는 게이트 별 처리시간 DB(GDB)를 활용하여 실제 시뮬레이션이 수행되기 전에 처리 시간에 대한 정보를 확인할 수 있고, 결과적으로 사용자 단말(20)의 시뮬레이터 활용성이 높아질 수 있다.
본 명세서에서 양자 컴퓨팅 시스템(1) 및 이에 포함된 구성의 동작은 각 구성에 포함된 저장 장치에 저장된 적어도 하나의 명령어를 포함하는 컴퓨터 프로그램에 기초하여, 각 구성에 포함된 프로세서가 수행하는 동작을 의미할 수 있고, 상기 저장 장치는 비휘발성 메모리, 휘발성 메모리, 플래시메모리(flash-memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD) 등을 포함할 수 있다. 또한, 상기 프로세서는 CPU(Central Processing Unit), GPU(Graphic Processing Unit), NPU(Neural Processing Unit), 램(RAM), 롬(ROM), 시스템 버스 및 애플리케이션 프로세서 중 적어도 하나를 포함할 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이다.
도 2를 참조하면, 서버(10)는 양자 라이브러리를 로드하고(S100), 시뮬레이터 리스트를 획득할 수 있다(S200). 시뮬레이터 리스트는 시뮬레이터들에 대한 정보를 포함하는 데이터베이스로서 도 4에서 상세하게 후술한다.
서버(10)는 시뮬레이터 리스트로부터 테스트 시뮬레이터가 지원하는 양자 게이트에 대한 정보를 획득할 수 있다(S300). 서버(10)는 양자 라이브러리로부터 획득한 양자 게이트를 테스트 회로에 배치할 수 있다(S400). 서버(10)는 테스트 회로를 테스트 시뮬레이터로 시뮬레이션 시킴으로써 소요된 처리 시간을 획득할 수 있다(S500). 서버(10)는 처리 시간을 테스트 시뮬레이터 및 양자 게이트에 대응되도록 게이트 별 처리시간 DB(GDB)에 저장할 수 있다(S600).
본 개시의 일 실시예에 따르면, 양자 게이트가 배치된 테스트 회로를 테스트 시뮬레이터로 실제로 시뮬레이션 함으로써 소요된 처리 시간을 데이터베이스에 저장하고, 이를 실제 설계과정에서 활용함으로써 최적의 시뮬레이터를 활용할 수 있고, 결과적으로 사용자의 SDK 활용도가 높아질 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 양자 회로를 나타내는 도면이다.
도 3을 참조하면, 양자 회로(QC)는 복수의 양자선들(ql0~ql3)과 복수의 양자 게이트들을 포함할 수 있다. 복수의 양자선들(ql0~ql3) 각각은 큐비트들(q0~q3)과 대응되어 양자 게이트에 대한 입력과 출력을 나타낼 수 있다. 양자 게이트는 I 게이트(gi), X 게이트(gx), Y 게이트(gy), Z 게이트(gz)를 포함하는 파울리 게이트를 포함할 수 있다. I 게이트, 또는 항등 게이트(Identity gate)는 양자 컴퓨팅에서 큐비트에 아무런 변화를 주지 않는 게이트이다. 이 게이트는 양자 회로에서 연산을 적용하지 않고자 할 때 사용된다. I 게이트는 2x2 항등 행렬로 표현되며, 이는 큐비트의 상태를 그대로 유지한다. I 게이트의 행렬 표현은 수학식 1과 같다.
X 게이트(gx)는 고전적인 NOT 게이트와 유사한 역할을 한다. 이 게이트는 양자 비트의 상태를 뒤집는다. 즉, X 게이트의 행렬 표현은 수학식 2와 같다.
Y 게이트(gy)는 큐비트에 복소수 위상 변환을 적용한다. Y 게이트(gy)는 X 게이트(gx)와 Z 게이트(gz)의 조합과도 같으며, 이 게이트를 통해 양자 상태의 위상에 변화를 줄 수 있다. Y 게이트의 행렬 표현은 수학식 3과 같다.
Z 게이트(gz)는 "1" 상태에 대해서만 위상을 변화시킨다. Z 게이트(gz)는 0" 상태는 그대로 두고, "1" 상태에 π만큼의 위상을 추가한다. 이는 큐비트의 위상을 반전시키는 역할을 한다. Z 게이트(gz)의 행렬 표현은 다음 수학식 4와 같다.
아다마르 게이트(gh)는 양자 컴퓨팅에서 사용되는 중요한 단일 큐비트 변환 게이트 중 하나이다. 이 게이트는 큐비트를 중첩 상태로 변환하는 데 사용되며, 양자 병렬성과 얽힘의 기초를 제공한다. 아다마르 게이트(gh)는 다음 수학식 5와 같이 표현될 수 있다.
CNOT(Controlled-NOT) 게이트(gcn)는 2큐비트 게이트 중 하나이다. CNOT 게이트(gcn)는 조건부 게이트로서, 한 큐비트(제어 큐비트)의 상태에 따라 다른 큐비트(대상 큐비트)에 NOT 연산(X 게이트)을 적용한다. 제어 큐비트가 "1"상태일 때만 대상 큐비트의 상태가 반전된다. 제어 큐비트가 "0"상태일 경우, 대상 큐비트는 변경되지 않는다.
스왑 게이트(gsw)는 양 두 큐비트의 상태를 서로 교환하는 데 사용되는 2큐비트 게이트이다. 스왑 게이트(gsw)는 두 큐비트 간의 정보를 교환할 때 사용되며, 이를 통해 양자 회로 내에서 큐비트의 위치를 조정할 수 있다. 스왑 게이트는 두 큐비트 시스템에 적용될 때, 첫 번째 큐비트의 상태를 두 번째 큐비트로, 두 번째 큐비트의 상태를 첫 번째 큐비트로 옮긴다. 스왑 게이트(gsw)는 아래 수학식 6과 같이 표현될 수 있다.
프레드킨 게이트(gfk), 또는 CSWAP(Controlled-SWAP) 게이트는 3큐비트 게이트로, 하나의 제어 큐비트와 두 개의 대상 큐비트로 구성된다. 제어 큐비트가 "1"상태일 때만 두 대상 큐비트의 상태가 서로 교환된다. 제어 큐비트가 "0" 상태인 경우, 대상 큐비트는 변경되지 않습니다. 프레드킨 게이트(gfk)는 특히 양자 컴퓨팅에서 조건부 교환 연산을 수행하는 데 사용됩니다.
토폴리 게이트(gtf), 또는 CCNOT(Controlled-Controlled-NOT) 게이트는 3큐비트 게이트로, 두 개의 제어 큐비트와 하나의 대상 큐비트로 구성된다. 이 게이트는 두 제어 큐비트 모두 "1" 상태일 때만 대상 큐비트에 NOT 연산을 적용한다. 다른 모든 경우에는 대상 큐비트가 변경되지 않는다. 토폴리 게이트(gtf)는 양자 컴퓨팅에서 고전적인 "AND" 연산을 수행하는 데 사용될 수 있으며, 복잡한 조건부 연산과 양자 알고리즘에 필수적이다.
측정 게이트(gm)는 해당 양자 선의 큐비트의 상태를 측정하는 게이트이다.
본 개시의 기술적 사상에 따르면, 도 3에 도시된 각종 게이트 및 양자 선들은 양자 라이브러리에 의해 사용자 단말(20)에게 제공될 수 있으며, 사용자 단말은 양자 라이브러리를 이용하여 원하는 양자 회로(QC)를 설계할 수 있다. 또한, 서버(10)는 도 3에 도시된 각종 게이트를 테스트 회로에 배치함으로써 게이트 별 처리 시간 DB(GDB)를 생성할 수 있다. 도 3에는 대표적인 게이트가 도시되어 있으나, 이는 일 예시이고 도시된 종류보다 더 다양한 양자 게이트들이 양자 라이브러리(ql)에 포함될 수 있으며, 도시된 큐비트 개수(4개)보다 더 많거나 적은 큐비트가 SDK에 의해 제공될 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 시뮬레이터 리스트를 나타내는 표이다.
도 4를 참조하면, 시뮬레이터 리스트(SL)는 시뮬레이터 별로 지원하는 게이트와 큐비트 수 및 출력 타입에 대한 정보를 포함할 수 있다.
일 예시에서, 제1 시뮬레이터(SM1)는 X 게이트(gx), 아다마르 게이트(gh) 및 CNOT 게이트(gcn)를 지원할 수 있고, 최대 4 개의 큐비트까지 지원하며, 출력은 매개 변수에 대한 기울기 값으로 지원될 수 있다.
일 예시에서, 제2 시뮬레이터(SM2)는 I 게이트(gi), X 게이트(gx), Y 게이트(gy) 및 토폴리 게이트(gtf)를 지원할 수 있고, 최대 4개의 큐비트 까지 지원하며, 출력은 큐비트의 비트 스트림으로 지원될 수 있다. 비트 스트림 출력은 큐비트 개수 길이의 비트열 또는 동일한 회로를 여러 번 측정하여 측정된 결과의 통계적인 분포 및 측정 횟수를 포함할 수 있다.
일 예시에서, 제3 시뮬레이터(SM3)는 아다마르 게이트(gh), CNOT 게이트(gcn), 스왑 게이트(gsw)를 지원할 수 있고, 최대 16개의 큐비트 까지 지원하며, 출력은 상태 벡터로 지원될 수 있다.
일 예시에서, 제4 시뮬레이터(SM4)는 프레드킨 게이트(gfk), 토폴리 게이트(gtf)를 지원할 수 있고, 최대 8개의 큐비트 까지 지원하며, 출력은 기대 값으로 지원될 수 있다. 예측 값은 측정 결과의 확률 분포에 대한 평균 값을 나타낼 수 있다.
도 4에 도시된 시뮬레이터 리스트는 설명의 편의상 지원 게이트와 지원 큐비트 및 아웃풋 타입을 임의로 설정한 예시이며, 지원 게이트, 지원 큐비트, 아웃풋 타입은 시뮬레이터 별로 다양하게 설정될 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이고, 도 6은 본 개시의 예시적 실시예에 따른 테스트 회로를 나타내는 도면이다. 상세하게는, 도 5는 도 2의 양자 게이트를 테스트 회로에 배치하는 단계(S400)를 상세하게 나타낸다.
도 5를 참조하면, 서버(10)는 시뮬레이터 리스트로부터 테스트 시뮬레이터가 지원하는 큐비트의 개수 및 지원 게이트에 대한 정보를 획득할 수 있다(S410). 도 4의 예시에서, 서버(10)는 제1 시뮬레이터(SM1)를 테스트하는 경우 큐비트 개수로서 4개를 획득할 수 있다. 서버(10)는 큐비트의 개수를 최대 값으로 하여 테스트 시뮬레이터가 지원하는 복수의 양자 게이트들을 병렬로 배치할 수 있다(S420). 도 4의 예시에서, 제1 시뮬레이터(SM1)는 X 게이트(gx), H 게이트(gh) 및 CNOT 게이트(gcn)을 지원할 수 있고, 서버(10)는 X 게이트(gx), H 게이트(gh) 및 CNOT 게이트(gcn)를 순차적으로 병렬 배치할 수 있다.
서버(10)는 게이트 별 처리 시간 DB(GDB)에 양자 게이트 구조에 대응하도록 처리 시간을 저장할 수 있다(S330). 예를 들어, 서버(10)는 양자 게이트 하나의 경우 각 처리 시간을 각 게이트에 대응하도록 저장하고, 병렬 배치된 양자 게이트의 경우 각 처리 시간을 게이트의 병렬 구조에 대응하도록 저장할 수 있다.
위 실시예를 설명하기 위해 도 6을 참조하면, 서버(10)는 제1 시뮬레이터(SM1)에 대응하여 최대 지원 큐비트인 4 개의 큐비트(q0~q3)를 배치하고, 지원 게이트인 X 게이트(gx), H 게이트(gh) 및 CNOT 게이트(gcn)를 순차적으로 병렬 배치할 수 있다. 일 예시에서, 서버(10)는 X 게이트(gx) 만을 테스트 회로(TC)에 배치하고 시뮬레이션 함으로써 제1 시간을 획득하고, H 게이트(gh) 만을 테스트 회로(TC)에 배치하고 시뮬레이션 함으로써 제2 시간을 획득하고, CNOT 게이트(gcn) 만을 테스트 회로(TC)에 배치하고 시뮬레이션 함으로써 제3 시간을 획득할 수 있다.
서버(10)는 적어도 두 개의 소자를 병렬 배치하고 시뮬레이션을 수행할 수 있다. 서버(10)는 X 게이트(gx) 및 H 게이트(gh)를 병렬 배치하고 시뮬레이션 함으로써 제4 시간을 획득하고, X 게이트(gx) 및 CNOT 게이트(gcn)를 병렬 배치하고 시뮬레이션 함으로써 제5 시간을 획득하고, H 게이트(gh) 및 CNOT 게이트(gcn)를 병렬 배치하고 시뮬레이션 함으로써 제6 시간을 획득할 수 있다. 또한, 서버는 X 게이트(gx), H 게이트(gh) 및 CNOT 게이트(gcn)를 병렬 배치하고 시뮬레이션 함으로써 제7 시간을 획득할 수 있다.
서버(10)는 획득한 제1 시간 내지 제7 시간을 게이트 별 처리시간 DB(GDB)에 저장할 수 있다.
일반적으로 시뮬레이터는 서로 다른 큐비트에 배치되는 양자 소자는 동시에 처리할 수 있어서 직렬로 배치되어 순차적으로 처리하는 것과 다른 처리 시간이 소요될 수 있다. 본 개시의 일 실시예에 따르면, 별개의 소자를 테스트하는 것 외에 병렬 연결된 소자를 한꺼번에 테스트함으로써 병렬 배치된 소자에 대한 처리 시간을 정확하게 측정할 수 있고, 결과적으로 사용자에게 양자 회로를 처리하는데 필요한 시간을 정확하게 안내할 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이고, 도 8은 본 개시의 예시적 실시예에 따른 게이트 별 처리시간 DB를 나타내는 표이다. 상세하게는, 도 7은 도 2의 양자 게이트를 테스트 회로에 배치하는 단계의 또 다른 실시예(S401)를 상세하게 나타낸다.
도 7을 참조하면, 서버(10)는 시뮬레이터 리스트로부터 테스트 시뮬레이터가 지원하는 아웃풋 타입에 대한 정보를 획득할 수 있다(S411). 도 4의 예시에서, 아웃풋 타입은 파라미터 기울기, 양자 비트열, 상태 벡터, 기대 값 등으로 다양하게 결정될 수 있다.
서버(10)는 게이트 별 처리 시간 DB(GDB)에 아웃풋 타입에 대응하도록 처리 시간을 저장할 수 있다(S421).
시뮬레이터 별로 지원하는 아웃풋 타입이 상이할 수 있고, 아웃풋 타입별로 처리 속도도 상이할 수 있다. 본 개시의 일 실시예에 따르면, 시뮬레이터의 게이트 별 처리 속도에 아웃풋 타입을 함께 기재함으로써 사용자가 원하는 아웃풋 타입에 따른 처리 속도를 확인할 수 있고, 결과적으로 사용자의 SDK 활용도가 높아지고, 정확한 기준 하에서 시뮬레이터 선택이 가능할 수 있다.
도 8을 참조하면, 예시적으로 제1 시뮬레이터(SM1)는 아웃풋 타입으로서 양자 출력에 해당하는 양자 비트열 및 상태 벡터를 지원할 수 있다. 게이트 별 처리 시간 DB(GDB)는 제1 시뮬레이터(SM1)가 지원하는 게이트(예를 들면, X 게이트(gx), 아다마르 게이트(gh), CNOT 게이트(gcn)) 각각 또는 병렬 구조에 대한 처리 시간을 포함할 수 있다.
일 예시에서, 제1 시뮬레이터(SM1)는 상태 벡터를 출력으로 원하는 경우 X 게이트(gx)를 처리하는 데 제2 시간(t2)이 소요될 수 있다. 또한, 제1 시뮬레이터(SM1)는 상태 벡터를 출력으로 원하는 경우 X 게이트(gx), 아다마르 게이트(gh) 및 CNOT 게이트(gcn)의 병렬 구조를 처리하는 데 제7 시간(t7)이 소요될 수 있다.
본 개시의 일 실시예에서, 서버(10)는 양자 비트열이 출력인 경우 양자 비트열을 출력하기 위해 시뮬레이션을 수행한 측정 횟수 및 양자 비트열의 측정 확률을 함께 게이트 별 측정 시간 DB(GDB1)에 포함시킬 수 있다. 일 예시에서, 제1 시뮬레이터(SM1)는 양자 비트열을 출력으로 원하는 경우 X 게이트(gx)를 제1 횟수(n1)를 측정할 때 제1 확률(p1)로 특정 양자 비트열이 관찰됐으며, 그 시간으로 제1 시간(t1)이 소요될 수 있다. 또한, 제1 시뮬레이터(SM1)는 X 게이트(gx) 및 아다마르 게이트(gh)의 병렬 구조(gx//gh)를 제3 횟수(n3)를 측정할 때 제3 확률(p3)로 특정 양자 비트열이 관찰됐으며, 그 시간으로 제1 시간(t5)이 소요되었고, 반면 제5 횟수(n5)를 측정할 때는 제3 확률(p4)로 특정 양자 비트열이 관찰됐으며, 그 시간으로 제6 시간(t6)이 소요될 수 있다.
양자 비트열의 경우 횟수에 따라서 처리 시간이 다양하게 설정될 수 있고, 그 확률 역시 처리 시간에 영향을 미칠 수 있다. 본 개시의 일 실시예에 따르면, 양자 비트열의 경우 단순히 처리 시간 외에 측정 횟수 및 측정 확률을 함께 기재할 수 있고, 이에 따라서 사용자가 원하는 기준의 측정 횟수와 측정 확률이 확보되는 경우의 처리 시간을 한눈에 확인할 수 있음으로써 SDK에 대한 활용도가 높아질 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이다. 상세하게는, 도 9는 도 2의 소요 시간을 획득하는 단계의 또 다른 실시예(S500)를 상세하게 나타낸다.
도 9를 참조하면, 서버(10)는 시뮬레이터 리스트로부터 테스트 시뮬레이터가 지원하는 지원 게이트에 대한 정보를 획득할 수 있다(S511). 서버(10)는 지원 게이트 각각에 대한 처리 시간을 시뮬레이션을 통해 획득하고, 게이트 별 처리 시간 DB에 저장할 수 있다(S520).
서버(10)는 복수의 지원 게이트 중 적어도 두 개로 이루어지는 병렬 구조에 대한 처리 시간을 병렬 구조를 구성하는 지원 게이트 각각에 대한 처리 시간 중 최대 값으로 결정할 수 있다(S530). 일 예시에서, 테스트 시뮬레이터가 지원하는 제1 게이트가 10s가 소요되고, 제2 게이트가 12s가 소요되는 경우, 제1 게이트와 제2 게이트의 병렬 구조는 10s와 12s 중 최대 값인 12s로 결정될 수 있다.
서버(10)는 게이트 별 처리 시간 DB(GDB)에 결정된 처리 시간을 병렬 구조에 대응하도록 저장할 수 있다(S540).
본 개시의 일 실시예에 따르면, 일반적으로 시뮬레이터는 병렬 구조인 경우 동시에 연산이 가능하므로, 병렬 구조에 대해서 가장 긴 시간이 필요한 소자를 기준으로 전체 처리 시간을 결정함으로써 병렬 구조가 가능한 소자를 전부 확인할 필요 없이 지원 게이트로 구성할 수 있는 모든 양자 회로에 대한 처리 시간을 확보할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 양자 시뮬레이터 테스트 방법을 나타내는 순서도이고, 도 11은 본 개시의 예시적 실시예에 따른 게이트 별 처리 속도 DB를 나타내는 표이다. 상세하게는, 도 10은 도 2의 게이트 별 처리 시간 DB에 저장하는 단계(S600)를 상세하게 나타낸다.
도 10을 참고하면, 서버(10)는 제1 양자 게이트에 대한 테스트 결과 제1 테스트 시뮬레이터에 대한 제1 처리 시간을 획득하고(S610), 같은 양자 게이트에 대해서 제2 테스트 시뮬레이터에 대한 제2 처리 시간을 획득할 수 있다(S620). 서버(10)는 더 긴 처리 시간을 갖는 테스트 시뮬레이터에 대응하는 게이트 별 처리 시간 DB(GDB)에 다른 테스트 시뮬레이터가 더 신속함을 나타내는 정보를 저장할 수 있다(S630). 즉, 제1 양자 게이트에 대한 테스트 결과 제1 테스트 시뮬레이터 보다 제2 테스트 시뮬레이터가 더 긴 처리 시간을 갖는 경우, 서버(10)는 제2 테스트 시뮬레이터에 대응하는 게이트 별 처리 시간 DB(GDB)에 제1 테스트 시뮬레이터가 더 빠름을 나타내는 정보를 저장할 수 있다.
사용자는 테스트 시뮬레이터 별로 처리 시간을 확인할 수 있으나, 다른 시뮬레이터와의 속도는 한눈에 확인할 수 없다. 본 개시의 일 실시예에 따른 서버(10)는 더 긴 처리 시간을 갖는 경우에 더 빠른 시뮬레이터가 있음을 게이트 별 처리 시간 DB(GDB)에 나타낼 수 있고, 결과적으로 사용자가 해당 회로를 처리하는 경우 더 속도가 빠른 시뮬레이터를 확인할 수 있다.
도 11을 참조하면, 제2 시뮬레이터(SM2)에 대한 게이트 별 처리 시간 DB(GDB2)를 나타내는데, X 게이트에 대한 상태 벡터의 경우, 테스트 결과 제2 시뮬레이터(SM2)보다 제4 시뮬레이터(SM4)의 처리시간이 더 짧을 수 있다. 이에 따라서, 서버(10)는 게이트 별 처리 시간 DB(GDB2)에 제4 시뮬레이터(SM4)의 처리 속도가 더 빠름을 나타낼 수 있고, 이러한 안내를 받는 사용자로 하여금 제4 시뮬레이터(SM4)를 이용하여 X 게이트에 대한 시뮬레이션을 수행하도록 유도할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 12를 참조하면, 컴퓨팅 시스템(1000)은 서버(10) 또는 사용자 단말(20)를 구성할 수 있고, 프로세서(1100), 메모리 장치(1200), 스토리지 장치(1300), 파워 서플라이(1400) 및 디스플레이 장치(1500)를 포함할 수 있다. 한편, 도 12에는 도시되지 않았지만, 컴퓨팅 시스템(1000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다.
이와 같이, 컴퓨팅 시스템(1000)에 포함된 프로세서(1100), 메모리 장치(1200), 스토리지 장치(1300), 파워 서플라이(1400) 및 디스플레이 장치(1500)는, 본 발명의 기술적 사상에 의한 실시예들에 따른 서버(10) 중 어느 하나를 구성하여 양자 시뮬레이터 테스트 방법을 수행할 수 있다. 구체적으로, 프로세서(1100)는 메모리 장치(1200), 스토리지 장치(1300), 파워 서플라이(1400) 및 디스플레이 장치(1500)를 제어함으로써 도 1 내지 도 11에서 상술한 가상 사설 네트워크 운용 시스템(10)의 동작 방법을 수행할 수 있다.
프로세서(1100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(1100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 프로세서(1100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(1600)를 통하여 메모리 장치(1200), 스토리지 장치(1300) 및 디스플레이 장치(1500)와 통신을 수행할 수 있다. 실시예에 따라, 프로세서(1100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
메모리 장치(1200)는 컴퓨팅 시스템(1000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(1200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다. 스토리지 장치(1300)는 솔리드 스테이트 드라이브(solid state drive), 하드 디스크 드라이브(hard disk drive), 씨디롬(CD-ROM) 등을 포함할 수 있다. 스토리지 장치(1300)는 도 1 내지 도 11에서 상술한 양자 시뮬레이터 테스트 방법에 관한 프로그램, 응용 프로그램 데이터, 시스템 데이터, 운영 체제 데이터 등을 저장할 수 있다.
디스플레이 장치(1500)는 사용자에 대한 알림을 수행하는 출력 수단으로서 양자 시뮬레이터 테스트 방법에 대한 정보를 사용자 등에게 표시하여 알릴 수 있다. 전원 장치(1400)는 컴퓨팅 시스템(1000)의 동작에 필요한 동작 전압을 공급할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 발명되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 발명의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 서버에 의해 수행되는 양자 시뮬레이터를 테스트하는 방법에 있어서,
    양자 소자들을 포함하는 양자 라이브러리를 로드하는 단계;
    복수의 시뮬레이터들에 대한 정보를 포함하는 시뮬레이터 리스트를 획득하는 단계;
    상기 시뮬레이터 리스트를 기초로 상기 복수의 시뮬레이터들 중 테스트 시뮬레이터가 지원하는 양자 게이트에 대한 정보를 획득하는 단계;
    상기 양자 라이브러리로부터 상기 양자 게이트를 획득하고, 상기 양자 게이트를 양자 회로에 배치하는 단계;
    상기 양자 회로를 상기 테스트 시뮬레이터로 시뮬레이션 시킴으로써 소요된 처리 시간을 획득하는 단계;
    상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계;를 포함하고,
    상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계는,
    상기 시뮬레이터 리스트로부터 상기 테스트 시뮬레이터가 지원하는 아웃풋 타입에 대한 정보를 획득하는 단계;
    상기 게이트 별 처리 시간 DB에 상기 아웃풋 타입에 대응하도록 상기 처리 시간을 저장하는 단계;및
    상기 아웃풋 타입이 양자 비트열인 경우, 상기 게이트 별 처리 시간 DB에 상기 처리 시간과 함께 상기 시뮬레이션을 수행한 측정 횟수 및 양자 비트열의 측정 확률을 함께 저장하는 단계;를 포함하는 테스트 방법.
  2. 제1 항에 있어서,
    상기 양자 회로는,
    제1 큐비트의 양자 상태를 나타내는 제1 양자 선;
    제2 큐비트의 양자 상태를 나타내는 제2 양자 선;및
    상기 제1 큐비트 및 상기 제2 큐비트 중 적어도 하나에 대한 연산을 수행하는 양자 게이트;를 포함하는 테스트 방법.
  3. 제2 항에 있어서,
    상기 양자 게이트는,
    큐비트의 '0'또는'1'에 해당하는 상태 확률을 교환하거나, 확률 진폭 또는 확률 위상을 변경하는 파울리 게이트;
    큐비트를 '0'및'1'의 중첩 상태로 고정시키는 아다마르 게이트;
    복수의 큐비트들을 얽힘 상태로 만드는 CNOT 게이트;
    복수의 큐비트들의 상태를 스왑하는 스왑 게이트;
    제1 큐비트 및 제2 큐비트의 상태에 기초하여 제3 큐비트의 상태를 반전시키는 토폴리 게이트;및
    제1 큐비트의 상태에 기초하여 제2 큐비트 및 제3 큐비트의 상태를 스왑하는 프레드킨 게이트;를 포함하는 테스트 방법.
  4. 제1 항에 있어서,
    상기 양자 게이트를 양자 회로에 배치하는 단계는,
    상기 시뮬레이터 리스트로부터 상기 테스트 시뮬레이터가 지원하는 큐비트의 개수 및 복수의 지원 게이트들에 대한 정보를 획득하는 단계;및
    상기 큐비트의 개수를 최대 값으로 하여, 상기 테스트 시뮬레이터가 지원하는 상기 복수의 지원 게이트들을 병렬로 배치하는 단계;를 포함하는 테스트 방법.
  5. 제4 항에 있어서,
    상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계는,
    상기 게이트 별 처리 시간 DB에 상기 복수의 지원 게이트들의 병렬 구조에 대응하도록 상기 처리 시간을 저장하는 단계;를 포함하는 테스트 방법.
  6. 제1 항에 있어서,
    상기 처리 시간을 게이트 별 처리 시간 DB에 저장하는 단계는,
    상기 시뮬레이터 리스트로부터 상기 테스트 시뮬레이터가 지원하는 복수의 지원 게이트들에 대한 정보를 획득하는 단계;
    상기 시뮬레이션 결과 상기 복수의 지원 게이트들 각각에 대한 처리 시간을 상기 게이트 별 처리 시간 DB에 저장하는 단계;
    상기 복수의 지원 게이트 중 적어도 두개로 이루어지는 병렬 구조에 대한 처리 시간을 상기 병렬 구조를 구성하는 지원 게이트 각각에 대한 처리 시간 중 최대 값으로 결정하는 단계;및
    상기 결정된 병렬 구조에 대한 처리 시간을 상기 병렬 구조에 대응되도록 상기 게이트 별 처리 시간 DB에 저장하는 단계;를 포함하는 테스트 방법.
  7. 삭제
  8. 삭제
  9. 제1 항에 있어서,
    제1 양자 게이트에 대한 테스트 결과 제1 테스트 시뮬레이터에 대한 제1 처리 시간을 획득하는 단계;
    상기 제1 양자 게이트에 대한 테스트 결과 제2 테스트 시뮬레이터에 대한 상기 제1 처리 시간보다 긴 제2 처리 시간을 획득하는 단계;및
    상기 제2 테스트 시뮬레이터에 대응하는 제2 게이트 별 처리시간 DB에 상기 제1 양자 게이트에 대해서 상기 제1 테스트 시뮬레이터가 더 신속함을 나타내는 정보를 저장하는 단계;를 더 포함하는 테스트 방법.
  10. 양자 회로를 시뮬레이션하기 위해 사용자에게 소프트웨어 개발 키트를 제공하는 서버에 있어서,
    상기 소프트웨어 개발 키트를 구성하는 적어도 하나의 명령어를 저장하는 메모리;및
    상기 적어도 하나의 명령어를 활용하여 상기 사용자에게 소프트웨어 개발 환경을 제공하는 프로세서;를 포함하고,
    상기 프로세서는,
    양자 소자들을 포함하는 양자 라이브러리를 로드하고,
    복수의 시뮬레이터들에 대한 정보를 포함하는 시뮬레이터 리스트를 획득하고,
    상기 시뮬레이터 리스트를 기초로 상기 복수의 시뮬레이터들 중 테스트 시뮬레이터가 지원하는 양자 게이트에 대한 정보를 획득하고,
    상기 양자 라이브러리로부터 상기 양자 게이트를 획득하고, 상기 양자 게이트를 양자 회로에 배치하고,
    상기 양자 회로를 상기 테스트 시뮬레이터로 시뮬레이션 시킴으로써 소요된 처리 시간을 획득하고,
    상기 처리 시간을 게이트 별 처리 시간 DB에 저장하고,
    상기 시뮬레이터 리스트로부터 상기 테스트 시뮬레이터가 지원하는 아웃풋 타입에 대한 정보를 획득하고,
    상기 게이트 별 처리 시간 DB에 상기 아웃풋 타입에 대응하도록 상기 처리 시간을 저장하고,
    상기 아웃풋 타입이 양자 비트열인 경우, 상기 게이트 별 처리 시간 DB에 상기 처리 시간과 함께 상기 시뮬레이션을 수행한 측정 횟수 및 양자 비트열의 측정 확률을 함께 저장하는 것을 특징으로 하는 서버.


KR1020240024877A 2024-02-21 2024-02-21 복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버 KR102696751B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020240024877A KR102696751B1 (ko) 2024-02-21 2024-02-21 복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020240024877A KR102696751B1 (ko) 2024-02-21 2024-02-21 복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버

Publications (1)

Publication Number Publication Date
KR102696751B1 true KR102696751B1 (ko) 2024-08-20

Family

ID=92592550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020240024877A KR102696751B1 (ko) 2024-02-21 2024-02-21 복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버

Country Status (1)

Country Link
KR (1) KR102696751B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210119533A (ko) * 2019-03-09 2021-10-05 인터내셔널 비지네스 머신즈 코포레이션 양자 알고리즘의 런타임 검증 및 추정

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210119533A (ko) * 2019-03-09 2021-10-05 인터내셔널 비지네스 머신즈 코포레이션 양자 알고리즘의 런타임 검증 및 추정

Similar Documents

Publication Publication Date Title
Qiao et al. NicheA: creating virtual species and ecological niches in multivariate environmental scenarios
Guan et al. A general-purpose parallel raster processing programming library test application using a geographic cellular automata model
Tribble et al. RevGadgets: An R package for visualizing Bayesian phylogenetic analyses from RevBayes
Eldrandaly A GEP-based spatial decision support system for multisite land use allocation
JP7417074B2 (ja) 最適化装置、最適化方法及び最適化装置の制御プログラム
MacGillivray et al. Robust analysis of fluxes in genome-scale metabolic pathways
Ghasemi et al. GraphA: An efficient ReRAM-based architecture to accelerate large scale graph processing
Del-Pozo-Puñal et al. A scalable simulator for cloud, fog and edge computing platforms with mobility support
Ball et al. An open source analysis framework for large-scale building energy modeling
KR102696751B1 (ko) 복수의 시뮬레이터들을 이용하여 게이트 별 처리시간을 획득하는 양자 시뮬레이터 테스트 방법 및 이를 수행하는 서버
Liu et al. Fixation dynamics on hypergraphs
KR102696749B1 (ko) 양자 라이브러리를 활용해서 소프트웨어 개발 키트를 제공하는 양자 컴퓨팅 시뮬레이션 방법 및 이를 수행하는 서버
Saa et al. LooplessFluxSampler: an efficient toolbox for sampling the loopless flux solution space of metabolic models
Newcome et al. Towards auto-tuning Multi-Site Molecular Dynamics simulations with AutoPas
Pichler et al. Finite element method completely implemented for graphic processor units using parallel algorithm libraries
Nunez et al. A formal framework to analyze cost and performance in map-reduce based applications
Ntinas et al. GPU and FPGA parallelization of fuzzy cellular automata for the simulation of wildfire spreading
Galvão Filho et al. CUDA parallel programming for simulation of epidemiological models based on individuals
Zhang et al. Implementation of membrane algorithms on GPU
Shkurti et al. Acceleration of coarse grain molecular dynamics on GPU architectures
Ho et al. Multi-agent simulation on multiple GPUs
Handley et al. The asymptotic behavior of the dipole and quadrupole moment of a single water molecule from gas phase to large clusters: a QCT analysis
Nayak et al. Hardware partitioning using parallel genetic algorithm to improve the performance of multi-core CPU
Duniam et al. Data modelling approaches to astronomical data: Mapping large spectral line data cubes to dimensional data models
US11354771B1 (en) Simulation environment for efficient assessment of memory-bound platforms

Legal Events

Date Code Title Description
GRNT Written decision to grant