KR20240038064A - 양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품 - Google Patents

양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품 Download PDF

Info

Publication number
KR20240038064A
KR20240038064A KR1020247006424A KR20247006424A KR20240038064A KR 20240038064 A KR20240038064 A KR 20240038064A KR 1020247006424 A KR1020247006424 A KR 1020247006424A KR 20247006424 A KR20247006424 A KR 20247006424A KR 20240038064 A KR20240038064 A KR 20240038064A
Authority
KR
South Korea
Prior art keywords
function
input parameter
target
quantum circuit
converted
Prior art date
Application number
KR1020247006424A
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 KR20240038064A publication Critical patent/KR20240038064A/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
    • 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
    • G06N20/00Machine learning
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E60/00Enabling technologies; Technologies with a potential or indirect contribution to GHG emissions mitigation

Landscapes

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

Abstract

양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품으로서, 양자 기술 분야에 속한다. 상기 양자 회로 시뮬레이션 방법은, 양자 회로를 시뮬레이션하기 위한 프리미티브 함수를 획득하고, 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정하는 단계(110); 프리미티브 함수 및 제1 입력 파라미터에 따라, 프리미티브 함수를 타깃 함수로 전환시키는 단계(120) - 타깃 함수의 입력 파라미터는 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하고, 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과임 - ; 타깃 함수의 입력 파라미터에 따라, 타깃 함수에 대응되는 실행 결과를 얻는 단계(130); 및 타깃 함수에 대응되는 실행 결과에 기반하여, 양자 회로 시뮬레이션을 실행하는 단계(140)를 포함한다. 벡터 병렬화의 아이디어를 양자 회로 시뮬레이션에 도입하는 것을 통해, 시뮬레이션 효율을 향상시킨다.

Description

양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품
관련 출원의 상호 참조
본 출원은 2022년 1월 24일에 제출한, 출원 번호가 202210077584.7이며, 발명의 명칭이 "양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품"인 중국 특허 출원의 우선권을 주장하는 바, 그 전부 내용은 인용되어 본 출원에 결합된다.
본 출원의 실시예는 양자 기술 분야에 관한 것이고, 특히 양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품에 관한 것이다.
양자 회로 시뮬레이션은 고전적 컴퓨터와 수치 컴퓨팅의 방식을 통해, 양자 컴퓨터를 시뮬레이션하고 근사하게 하는 행위를 가리킨다.
현재, 양자 회로 시뮬레이션의 효율은 높지 않다.
본 출원의 실시예는 양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품을 제공한다. 상기 기술방안은 아래와 같다.
본 출원의 실시예의 일 측면에 따라, 양자 회로 시뮬레이션 방법을 제공하고, 상기 방법은 컴퓨터 기기에 의해 실행되며, 상기 방법은,
양자 회로를 시뮬레이션하기 위한 프리미티브 함수를 획득하고, 상기 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정하는 단계;
상기 프리미티브 함수 및 상기 제1 입력 파라미터에 따라, 상기 프리미티브 함수를 타깃 함수로 전환시키는 단계 - 상기 타깃 함수의 입력 파라미터는 상기 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과임 - ;
상기 타깃 함수의 입력 파라미터에 따라, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계; 및
상기 타깃 함수에 대응되는 실행 결과에 기반하여, 상기 양자 회로 시뮬레이션을 실행하는 단계를 포함한다.
본 출원의 실시예의 일 측면에 따라, 양자 회로 시뮬레이션 장치를 제공하고, 상기 장치는,
양자 회로를 시뮬레이션하기 위한 프리미티브 함수를 획득하고, 상기 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정하기 위한 함수 획득 모듈;
상기 프리미티브 함수 및 상기 제1 입력 파라미터에 따라, 상기 프리미티브 함수를 타깃 함수로 전환시키기 위한 함수 전환 모듈 - 상기 타깃 함수의 입력 파라미터는 상기 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과임 - ;
상기 타깃 함수의 입력 파라미터에 따라, 상기 타깃 함수에 대응되는 실행 결과를 얻기 위한 함수 실행 모듈; 및
상기 타깃 함수에 대응되는 실행 결과에 기반하여, 상기 양자 회로 시뮬레이션을 실행하기 위한 회로 시뮬레이션 모듈을 포함한다.
본 출원의 실시예의 일 측면에 따라, 컴퓨터 기기를 제공하고, 상기 컴퓨터 기기는 프로세서와 메모리를 포함하며, 상기 메모리에는 컴퓨터 프로그램이 저장되고, 상기 컴퓨터 프로그램은 상기 프로세서에 의해 로딩 및 실행되어 상기 양자 회로 시뮬레이션 방법을 구현한다.
본 출원의 실시예의 일 측면에 따라, 컴퓨터 판독 가능한 저장 매체를 제공하고, 상기 저장 매체에는 컴퓨터 프로그램이 저장되며, 상기 컴퓨터 프로그램은 프로세서에 의해 로딩 및 실행되어 상기 양자 회로 시뮬레이션 방법을 구현한다.
본 출원의 실시예의 일 측면에 따라, 컴퓨터 프로그램 제품을 제공하고, 상기 컴퓨터 프로그램 제품은 컴퓨터 프로그램을 포함하며, 상기 컴퓨터 프로그램은 컴퓨터 판독 가능한 저장 매체에 저장되고, 프로세서는 상기 컴퓨터 판독 가능한 저장 매체로부터 상기 컴퓨터 프로그램을 판독 및 실행하여, 상기 양자 회로 시뮬레이션 방법을 구현한다.
본 출원의 실시예에서 제공하는 기술방안은, 아래와 같은 유익한 효과를 가져올 수 있다.
벡터 병렬화의 아이디어를 양자 회로 시뮬레이션에 도입시키는 것을 통해, 프리미티브 함수를 타깃 함수로 전환시키며, 타깃 함수의 입력 파라미터는 병렬화해야 하는 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과이며, 타깃 함수를 실행하는 것을 통해 원래의 여러 회 실행해야 되는 컴퓨팅 과정을, 한 회의 컴퓨팅 과정으로 병렬화하여 실행하며, 이로써 단일 컴퓨팅과 동일한 시간이기만 하면 완료할 수 있으므로, 양자 회로 시뮬레이션의 효율을 충분히 향상시킨다.
도 1은 본 출원의 하나의 실시예에서 제공하는 양자 회로 시뮬레이션 방법의 흐름도이다.
도 2는 본 출원의 하나의 실시예에서 제공하는 vmap 인터페이스의 기능 예시도이다.
도 3은 본 출원의 다른 하나의 실시예에서 제공하는 양자 회로 시뮬레이션 방법의 흐름도이다.
도 4는 본 출원의 하나의 실시예에서 제공하는 타깃 양자 회로의 수치 시뮬레이션의 예시도이다.
도 5는 본 출원의 하나의 실시예에서 제공하는 입력 파동 함수를 병렬화적으로 처리하는 예시도이다.
도 6은 본 출원의 하나의 실시예에서 제공하는 회로 변분 파라미터를 병렬화적으로 최적화하는 예시도이다.
도 7은 본 출원의 하나의 실시예에서 제공하는 파라미터화된 구조 정보를 포함하는 텐서 네트워크의 예시도이다.
도 8은 본 출원의 하나의 실시예에서 제공하는 회로 구조를 병렬화적으로 생성하는 예시도이다.
도 9는 본 출원의 하나의 실시예에서 제공하는 실험 결과의 예시도이다.
도 10은 본 출원의 하나의 실시예에서 제공하는 양자 회로 시뮬레이션 장치의 블록도이다.
도 11은 본 출원의 하나의 실시예에서 제공하는 컴퓨터 기기의 예시도이다.
본 발명의 목적, 기술 방안 및 장점이 더욱 명확하게 하기 위해, 아래에 첨부 도면을 결합하여 본 출원의 실시 형태에 대해 상세히 설명한다.
본 출원의 기술방안을 설명하기 전, 먼저 본 출원에 관한 일부 핵심 용어에 대해 해석하여 설명한다.
1, 양자 컴퓨팅에 있어서, 양자 논리에 기반한 컴퓨팅 방식이고, 저장 데이터의 기본 단위는 큐비트(qubit)이다.
2, 큐비트에 있어서, 양자 컴퓨팅의 기본 단위이다. 종래의 컴퓨터는 0과 1을 이진법의 기본 단위로 사용한다. 상이한 점은 양자 컴퓨팅은 0과 1을 동시에 처리할 수 있고, 시스템은 0과 1인 선형 중첩 상태일 수 있으며, 즉 이고, 여기서는 시스템이 0과 1에서의 복소수 확률 진폭을 나타낸다. 이들의 모듈러 제곱인 은 각각 0과 1인 확률을 나타낸다.
3, 양자 회로에 있어서, 양자 범용 컴퓨터의 하나의 표시이고, 상응하는 양자 알고리즘/프로그램의, 양자 게이트 모듈에서의 하드웨어 구현을 대표한다. 양자 회로에 양자 게이트를 제어하는 조절 가능한 파라미터가 포함되면, 파라미터화된 양자 회로(Parameterized Quantum Circuit, PQC로 약칭됨) 또는 변분 양자 회로(Variational Quantum Circuit, VQC로 약칭됨)로 지칭되며, 양자는 모두 동일한 개념이다.
4, 해밀토니안에 있어서, 양자 시스템 총 에너지를 설명하는 에르미트 공액의 매트릭스이다. 해밀토니안은 물리적 단어로서, 시스템 총 에너지를 설명하는 연산자이고, 통상적으로 H로 나타낸다.
5, 고유 상태에 있어서, 해밀토니안 매트릭스 H의 경우, 공식 을 만족하고, 그 해를, H의 고유 상태 로 지칭하며, 고유 에너지 E를 구비한다. 기저 상태는 양자 시스템 에너지가 가장 낮은 고유 상태에 대응된다.
6, 양자 클래식 하이브리드 컴퓨팅에 있어서, 내부 레이어가 양자 회로(예를 들어, PQC)를 이용하여 컴퓨팅을 수행하여 상응한 물리량 또는 손실 함수를 얻고, 외부 레이어가 종래의 클래식 옵티마이저로 양자 회로 변분 파라미터를 조절하는 컴퓨팅 패러다임이며, 양자 컴퓨팅의 장점을 극대화시킬 수 있고, 양자의 장점을 잠재적으로 증명할 수 있는 중요한 방향 중 하나인 것으로 여겨진다. 일반적으로 우리도 이러한 양자 클래식 하이브리드 컴퓨팅의 패러다임을 변분 양자 알고리즘으로 지칭한다.
7, NISQ(Noisy Intermediate-Scale Quantum)에 있어서, 최근 중등 스케일의 노이즈가 존재하는 양자 하드웨어이는, 양자 컴퓨팅이 발전한 현재에 처한 단계와 연구의 핵심 방향이다. 이 단계의 양자 컴퓨팅은 잠시 스케일과 노이즈의 한정으로 인해, 범용 컴퓨팅의 엔진으로 적용될 수 없지만, 일부 문제에서, 이미 가장 진보된 고전적 컴퓨터를 능가하는 결과를 구현할 수 있으며, 이는 흔히 양자 패권 또는 양자 이점으로 지칭된다.
8, 변분 양자 아이겐솔버(Variational Quantum Eigensolver, VQE로 약칭됨)에 있어서, 변분 회로(즉 PQC/VQC)를 통해 주어진 양자 시스템 기저 상태 에너지의 추정을 구현하는, 전형적인 양자 클래식 하이브리드 컴퓨팅 패러다임이며, 양자 화학적 분야에 광범위하게 응용된다.
9, 파울리 스트링(Pauli string)에 있어서, 상이한 그리드 포인트에서 복수 개의 파울리 매트릭스의 카티전 곱으로 이루어진 아이템이고, 일반적인 해밀토니안은 통상적으로 한 그룹의 파울리 스트링의 합으로 분해될 수 있다. VQE의 측정도 일반적으로 파울리 스트링 분해에 따라 아이템 별로 측정된다. 각 아이템의 파울리 스트링의 희망 값은 양자 회로에서 여러 회의 측정의 평균을 통해 추정될 수 있다.
10, 비트 스트링(bitstring, 또는 클래식 비트 스트링으로 지칭됨)에 있어서, 0과 1로 이루어진 하나의 숫자 스트링이다. 양자 회로에 대해 매 회 측정하여 얻은 클래식 결과는, 측정 베이시스에서의 스핀 구성의 상, 하에 따라 각각 0과 1로 나타낼 수 있음으로써, 전체적인 측정 결과는 하나의 비트 스트링에 대응된다. 매 회의 파울리 스트링을 측정한 측정 값은 모두 비트 스트링에서 컴퓨팅된 것이다.
11, 양자 회로 소프트웨어 시뮬레이션에 있어서, 고전적 컴퓨터와 수치 컴퓨팅의 방식을 통해, 양자 컴퓨터를 시뮬레이션하고 근사하게 하는 행위이다. 양자 회로 소프트웨어 시뮬레이션은 "양자 회로 시뮬레이션"으로 약칭된다.
12, 벡터 병렬화에 있어서, 벡터 병렬화는 프리미티브 함수의 각 연산자에 대해 하나씩 하드웨어가 지원하는 벡터화를 수행하는 것을 통해 구현됨으로써, 고층 함수의 고속 병렬화를 구현한다. 이 구현은 통상적으로 정적 맵 컴파일과 함께 수행된다. 예를 들어, 함수 f(x)=2×x의 경우, 우리가 1을 입력할 때 2를 리턴하며, 즉 f(1)=2이다. 그러나 벡터 병렬화 버전의 fv(x)는, fv([1, 2])=[2, 4]를 구현할 수 있다. 이 과정은 순차적으로 컴퓨팅되는 것이 아니고, 하드웨어에서의 벡터 명령어 세트(또는 벡터화된 명령어 세트)를 이용하여 컴퓨팅을 동시에 완료할 수 있으므로, fv([1,2])를 컴퓨팅하는 시간과 f(1)은 대체적으로 동일하고, f(1), f(2)를 순차적으로 컴퓨팅하는 시간에 비해 절반이 적게 소요된다. 벡터의 차원(병렬 벡터/batch 차원)의 크기가 추가로 증가되면, 가속은 더욱 명확해진다. 이 예에 있어서, f(x)는 프리미티브 함수이고, 곱셈은 유일하게 나타나는 연산자이며, 컴퓨팅의 벡터화의 지원은 하드웨어에 의해 결정되고, 예를 들어 CPU(Central Processing Unit, 중앙 처리 장치) 또는 GPU(Graphics Processing Unit, 그래픽 처리 장치)에서의 벡터 명령어 세트이다. 고층 함수는 이곳에서의 f를 가리키고, 우리는 하드웨어 세부 사항과 f의 기본 구현을 고려할 필요 없이, 현대 기계 학습 프레임워크에서 캡슐화된 인터페이스를 이용하여 벡터 병렬화를 구현할 수 있다. 정적 맵 컴파일 과정은 현대 기계 학습 프레임워크에서 제공하는 고층 컴퓨팅 API(Application Programming Interface, 애플리케이션 프로그래밍 인터페이스)를 컴파일하여 하드웨어 기본 조작으로 융합하는 과정이며, 수치 컴퓨팅의 가속을 구현할 수 있다.
13, 파울리 연산자에 있어서, 파울리 매트릭스로도 지칭되고, 하나의 그룹에 세 개의 2×2인 복합 유니테리 에르미트 매트릭스(유니테리 매트릭스로도 지칭됨)이고, 일반적으로 그리스 문자 σ(시그마)로 나타낸다. 여기서, 파울리 X 연산자는 이고, 파울리 Y 연산자는 이며, 파울리 Z 연산자는 이다.
14, 미분 가능한 구조 검색(Differentiable Architecture Search, DARTS로 약칭됨)에 있어서, 핫한 NAS(Neural Architecture Search, 신경 네트워크 구조 검색) 방안이며, 상이한 노드 사이의 복수 개의 조작층을 가중치에 따라 합산하는 것을 허용함으로써, 슈퍼 네트워크(super network)에서 엔드 투 엔트의 미분 컴퓨팅 및 기울기 하강 검색을 수행할 수 있으므로, 신경 네트워크 구조의 검색 속도를 크게 향상시킨다. DARTS는 이산형 후보 구조를 검색하지 않고, 검색 공간이 연속적인 것으로 변하도록 하며, 이로써, 기울기 하강을 통해 검증 세트의 성능에 따라 네트워크 구조를 최적화시킬 수 있다. 기울기에 기반한 최적화 알고리즘은, 낮은 효율의 블랙 박스 검색에 비해, DARTS가 현재 탑인 성능과 경쟁하도록 하는 동시에, 컴퓨팅이 복수의 차수만큼 줄어들게 할 수 있다.
15, 양자 구조 검색(Quantum Architecture Search, QAS로 약칭됨)에 있어서, 양자 회로의 구조, 모드 및 레이아웃에 대해 자동화와 프로그램화 검색을 수행하는 것을 시도하는 일련의 작업과 방안의 총칭이다. 종래에서 양자 구조 검색의 작업은 통상적으로, 그리디 알고리즘, 강화 학습 또는 유전자 알고리즘을 채택하여 핵심 기술로 사용한다. 비교적 새로운 미분 가능한 양자 구조 검색 기술은, 양자 회로 구조의 장단점을 높은 처리량으로 배치에 따라 반복적으로 평가할 수 있다.
16, 텐서 네트워크(tensor network)에 있어서, 일련의 텐서 및 그 사이에 연결된 정보이고, 더욱 적은 정보로 고차원의 텐서를 나타낼 수 있다. 동시에 각 양자 회로는 모두 하나의 텐서 네트워크로 맵핑될 수 있으므로, 텐서 네트워크 수축의 방식을 통해, 양자 회로를 시뮬레이션할 수 있다.
양자 회로 시뮬레이션의 적용 시나리오에 있어서, 일부 병렬화해야 하는 차원의 경우, 통상적으로 단순한 직렬의 루프 컴퓨팅을 수행하고, 즉, 간단한 for loop로 상응하는 여러 회의 컴퓨팅을 구현한다. 이러한 방식의 병렬도는 0이다. 따라서, 병렬화될 차원의 크기가 1000이면, 소프트웨어 시뮬레이션을 구현하기 위해, 단일 컴퓨팅의 시간의 1000 배가 수요된다.
조금 최적화된 방안은 멀티 프로세싱 또는 멀티 스레딩 기술을 이용하여, 병렬화될 컴퓨팅 부분을 가속하여, 병렬 차원의 상이한 컴퓨팅이, 상이한 프로세싱에 분포되어 동시에 컴퓨팅되도록 해야 한다. 그러나 이러한 방안은 통상적으로 하드웨어 아키텍처와 운영 체제의 한정을 받으며, 상이한 하드웨어에 대해 독립적으로 구현해야 한다. 그 이유는, 멀티 프로세싱과 멀티 스레딩에 의해 구현된 고층의 프로그램 인터페이스는, 하드웨어 세부 사항과 운영 체제에 심하게 의존하므로, 상이한 소프트웨어, 하드웨어에서 작동될 때, 코드의 재작성이 수요되므로, 코드의 재사용성이 낮은 것을 초래한다 이는 개발과 사용 비용을 크게 증가시킴과 동시에, GPU와 TPU(Tensor Processing Unit, 텐서 프로세서) 등 이기종 하드웨어에서, 멀티 프로세싱과 멀티 스레딩의 지원에 대해 우호적이지 않다. 멀티 프로세싱의 경우, 각 태스크는 단일 프로세싱에서만 컴퓨팅되므로, 벡터 조작 세트(즉 하드웨어 고유의 벡터 조작 세트 지원)를 충분히 이용할 수 없으며, 각 컴퓨팅의 시간에도 부정적인 영향을 미친다. 또한, 이러한 멀티 프로세싱 병렬화는, CPU 코어의 한정을 받고, 싱글 CPU는 통상적으로 몇 개 또는 몇십 개의 컴퓨팅 모듈의 동시 작동만 구현할 수 있고, 병렬화될 차원이 1000인 경우, 단일 컴퓨팅의 완료는 여전히 몇십 배 또는 더욱 많은 시간이 수요된다.
본 출원은 벡터 병렬화된 아이디어를 양자 회로 시뮬레이션에 도입할 것을 제안하며, 본 출원에서의 벡터 병렬화는, 실질적으로 병렬화 차원을 선형 대수의 하나의 별도의 차원으로 간주하며, 직접 기저 연산자로부터 배치(batch) 병렬화 능력을 구현하며, GPU 등 하드웨어의 장점을 충분히 발휘할 수 있다. 예를 들어, 병렬화 차원의 크기가 1000인 경우, 일반적으로 단일 컴퓨팅과 동일한 시간만큼만 수요된다. 따라서, 대규모의 양자 시뮬레이션의 효율의 경우, 이전의 방안보다 훨씬 높다. 동시에 상기 방안은 양호한 설계 인터페이스를 갖고, 백 엔드 하드웨어와 시스템의 세부 사항과는 무관하므로, 사용와 개발에 있어서, 모두 매우 편리하다.
본 출원의 실시예에서 제공하는 양자 회로 시뮬레이션 방법에 있어서, 각 단계의 실행 주체는 고전적 컴퓨터일 수 있고, 예를 들어, PC(Personal Computer, 개인 컴퓨터)이고, 예를 들어, 고전적 컴퓨터를 통해 상응한 컴퓨터 프로그램을 실행하여 상기 방법을 구현한다. 하기 방법 실시예에 있어서, 용이하게 설명하기 위해, 각 단계의 실행 주체가 컴퓨터 기기인 것으로만 하여 소개 설명한다.
도 1은 본 출원의 하나의 실시예에서 제공하는 양자 회로 시뮬레이션 방법의 흐름도이다. 상기 방법의 각 단계의 실행 주체는 컴퓨터 기기일 수 있고, 예를 들어, 고전적 컴퓨터이다. 상기 방법은 아래와 같은 단계(110~140)를 포함할 수 있다.
단계 110에 있어서, 양자 회로를 시뮬레이션하기 위한 프리미티브 함수를 획득하고, 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정한다.
양자 회로 시뮬레이션의 과정에 있어서, 입력 파동 함수 처리, 회로 변분 파라미터 최적화, 회로 노이즈 생성, 회로 구조 생성, 회로 측정 실행 등 단계에서의 하나 또는 복수 개의 단계가 언급될 수 있다. 일부 실시예에 있어서, 프리미티브 함수는 양자 회로 시뮬레이션에서의 타깃 단계를 구현하기 위한 것이고, 상기 타깃 단계는, 입력 파동 함수 처리, 회로 변분 파라미터 최적화, 회로 노이즈 생성, 회로 구조 생성, 회로 측정 실행 중의 어느 하나의 단계를 포함하지만, 이에 한정되지 않는다. 프리미티브 함수가 입력 파동 함수를 처리하기 위한 것으로 예를 들면, 상기 프리미티브 함수는 타깃 양자 회로의 입력 파동 함수에 대해 컴퓨팅을 수행하여 상응한 컴퓨팅 결과를 얻기 위한 것이다. 프리미티브 함수가 회로 변분 파라미터를 최적화하기 위한 것으로 예를 들면, 상기 프리미티브 함수는 타깃 양자 회로의 회로 변분 파라미터에 대해 최적화를 수행하여, 최적화된 후의 회로 변분 파라미터를 얻기 위한 것이다.
프리미티브 함수의 입력 파라미터의 개수는 하나일 수 있고, 복수 개일 수도 있다. 상기 제1 입력 파라미터는 프리미티브 함수에서 병렬화해야 하는 입력 파라미터를 가리킨다. 제1 입력 파라미터의 개수는 하나 또는 복수 개일 수 있다. 예시적으로, 프리미티브 함수 f는 f(x,y,w)로 표기되고, 상기 프리미티브 함수 f의 입력 파라미터가 3 개 존재하는 것을 나타내며, x, y와 w인 3 개의 입력 파라미터를 포함한다. 상기 프리미티브 함수 f의 3 개의 입력 파라미터에서, 병렬화해야 하는 입력 파라미터가 x인 것으로 가정하면, 상기 제1 입력 파라미터는 x이며, 다른 두 개의 파라미터 y와 w는 병렬화할 필요가 없다. 또는, 상기 프리미티브 함수 f의 3 개의 입력 파라미터에서, 병렬화해야 하는 입력 파라미터가 x와 y인 것으로 가정하면, 상기 제1 입력 파라미터는 x와 y이고, 다른 하나의 파라미터 w는 병렬화할 필요가 없다.
상이한 프리미티브 함수의 경우, 그 입력 파라미터는 상이할 수 있으며, 상응하게 병렬화해야 하는 제1 입력 파라미터도 상이할 수 있다. 실제 응용에 있어서, 프리미티브 함수가 결정된 후, 그 입력 파라미터도 결정되며, 우리는 실제 상황에 따라, 병렬화 처리에 적합한 하나 또는 복수 개의 입력 파라미터를 선택하여, 제1 입력 파라미터로 사용할 수 있다.
단계 120에 있어서, 프리미티브 함수 및 제1 입력 파라미터에 따라, 프리미티브 함수를 타깃 함수로 전환시키며, 여기서, 타깃 함수의 입력 파라미터는 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하고, 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과이다.
타깃 함수의 입력 파라미터는 병렬화해야 하는 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함한다. 일부 실시예에 있어서, 프리미티브 함수의 입력 파라미터가, 병렬화해야 하는 제1 입력 파라미터를 포함하는 것외에도, 병렬화가 수요되지 않는 타깃 입력 파라미터를 더 포함하면, 타깃 함수는, 프리미티브 함수에서의 제1 입력 파라미터를 전환된 후의 제1 입력 파라미터로 수정하고, 타깃 입력 파라미터를 유지하며, 타깃 함수를 얻는 방식을 통해 얻어질 수 있다. 즉, 타깃 함수의 입력 파라미터는 상기 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하는 것외에도, 상기 병렬화가 수요되지 않는 타깃 입력 파라미터를 더 포함한다. 예시적으로, 프리미티브 함수 f를 f(x,y,w)로 표기하고, 상기 프리미티브 함수 f의 3 개의 입력 파라미터에서, x와 y가 병렬화가 수요되고, w는 병렬화가 수요되지 않는 것으로 가정하면, 타깃 함수 f´는 f´(xs,ys,w)로 표기될 수 있고, 여기서 xs는 입력 파라미터 x에 대응되는 전환된 후의 x를 나타내고, ys는 입력 파라미터 y에 대응되는 전환된 후의 y를 나타내며, 입력 파라미터 w는 병렬화가 수요되지 않으므로, 이에 대해 전환을 수행할 필요가 없다.
일부 실시예에 있어서, 프리미티브 함수의 입력 파라미터가 병렬화가 수요되지 않는 타깃 입력 파라미터를 포함하지 않으면, 타깃 함수는, 프리미티브 함수에서의 제1 입력 파라미터를 전환된 후의 제1 입력 파라미터로 수정하여, 타깃 함수를 얻는 방식을 통해 얻어질 수 있다. 예시적으로, 프리미티브 함수 f는 f(x,y,w)로 표기되고, 상기 프리미티브 함수 f의 3 개의 입력 파라미터가 모두 병렬화가 수요되는 것으로 가정하면, 타깃 함수 f´는 f´(xs,ys,ws)로 표기될 수 있고, 여기서 xs는 입력 파라미터 x에 대응되는 전환된 후의 x를 나타내고, ys는 입력 파라미터 y에 대응되는 전환된 후의 y를 나타내며, ws는 입력 파라미터 w에 대응되는 전환된 후의 w를 나타낸다.
일부 실시예에 있어서, 제1 입력 파라미터에 대응되는 병렬화 사이즈(또는 "배치 사이즈(batch size)"로 지칭됨)가 n이고, n이 1보다 큰 정수이면, 제1 입력 파라미터에 대응되는 n 개의 텐서가 병렬화 처리를 수행하는 것을 나타내므로, 전환된 후의 제1 입력 파라미터에 대응되는 텐서는 상기 n 개의 텐서의 통합 결과(또는 "스플라이싱 결과"임)이다. 본 출원의 실시예에 있어서, 텐서는 고차원 어레이이며, n1×n2×n2...×nm 개의 수를 포함하고, m은 텐서의 차수이며, m은 양의 정수이다. m=1일 때, 텐서는 하나의 1 차원의 어레이이며, 즉 벡터이다. m=2일 때, 텐서는 하나의 2 차원의 어레이이며, 즉 매트릭스이다. 물론, m은 또한 3 또는 3보다 큰 정수를 취할 수 있고, 즉 텐서의 어레이의 차원 수는 무한으로 확장될 수 있다.
일부 실시예에 있어서, 타깃 차원에서 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서에 대해 스플라이싱을 수행하여, 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 얻으며; 여기서, 전환된 후의 제1 입력 파라미터에 대응되는 텐서의, 타깃 차원에서의 사이즈는, 제1 입력 파라미터에 대응되는 병렬화된 텐서의 개수와 대응된다.
예시적으로, 도 2에 도시된 바와 같이, 프리미티브 함수 f(x,y,w)에서 병렬화해야 하는 입력 파라미터 x의 경우, 그에 대응되는 병렬화 사이즈를 n인 것으로 가정하면, 타깃 차원에서 상기 입력 파라미터 x에 대응되는 n 개의 텐서에 대해 스플라이싱을 수행하며, 상기 스플라이싱하여 얻은 텐서는, xs에 대응되는 텐서이다. 일부 실시예에 있어서, 상기 n의 값은 2, 10, 50, 100, 200, 500, 1000 등일 수 있고, 구체적으로 실제 수요에 따라 설정될 수 있으며, 본 출원은 이에 대해 한정하지 않는다.
단계 130에 있어서, 타깃 함수의 입력 파라미터에 따라, 타깃 함수에 대응되는 실행 결과를 얻는다.
프리미티브 함수를 타깃 함수로 전환시킨 후, 상기 타깃 함수를 실행하여 대응되는 실행 결과를 얻는다. 일부 실시예에 있어서, 벡터 병렬화 방식을 채택하여 타깃 함수를 실행하여, 타깃 함수에 대응되는 실행 결과를 얻는다. 벡터 병렬화 방식을 채택하여 타깃 함수의 입력 파라미터에 포함된 전환된 후의 제1 입력 파라미터를 처리하여, 타깃 함수에 대응되는 실행 결과를 얻는다. 본 출원의 실시예에 있어서, 벡터 병렬화의 아이디어를 양자 회로 시뮬레이션에 도입한다. 타깃 함수의 입력 파라미터가 전환된 후의 제1 입력 파라미터를 포함하므로, 벡터 병렬화 방식을 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 처리하여, 한 번의 컴퓨팅으로 타깃 함수에 대응되는 실행 결과를 직접 얻을 수 있다.
프리미티브 함수의 실행의 소모 시간을 t인 것으로 가정하면, 병렬화 사이즈가 n인 경우, 단순 루프의 방식을 채택하여 프리미티브 함수를 n 번 실행하면, 총 소모 시간은 n×t만큼 수요되지만, 상기 프리미티브 함수를 타깃 함수로 전환시킨 후, 벡터 병렬화 방식을 채택하여 상기 타깃 함수를 실행함에 있어서 소요되는 시간은 이론상으로도 t이며, 이는 n×t에 비해 크게 축소되고, n의 증가에 따라, 축소 효과도 더욱 현저해진다.
단계 140에 있어서, 타깃 함수에 대응되는 실행 결과에 기반하여, 양자 회로 시뮬레이션을 실행한다.
타깃 함수에 대응되는 실행 결과를 얻은 후, 양자 회로 시뮬레이션의 과정을 실행할 수 있다. 프리미티브 함수가 입력 파동 함수를 처리하기 위한 것으로 예를 들면, 상응한 타깃 함수에 대응되는 실행 결과는 복수 개의 입력 파동 함수 각각에 대응되는 처리 결과를 포함하고, 향후 상기 복수 개의 입력 파동 함수 각각에 대응되는 처리 결과에 기반하여, 회로 변분 파라미터의 최적화 등 단계를 수행할 수 있다. 프리미티브 함수가 회로 변분 파라미터를 최적화하기 위한 것으로 예를 들면, 상응한 타깃 함수에 대응되는 실행 결과는 복수 개의 그룹의 회로 변분 파라미터 각각에 대응되는 최적화 결과를 포함하고, 향후 상기 복수 개의 그룹의 회로 변분 파라미터 각각에 대응되는 최적화 결과에 기반하여, 가장 최적화된 한 그룹의 회로 변분 파라미터를 선택하여 최종적인 타깃 양자 회로로 사용할 수 있다.
또한, 양자 회로 시뮬레이션을 통해, 고전적 컴퓨터와 수치 컴퓨팅의 방식으로, 양자 컴퓨터(또는 양자 회로)를 시뮬레이션하고 근사하게 하는 행위를 구현하여, 양자 회로에 대한 연구와 설계를 빠르게 함에 있어서 유리하고, 비용을 절약할 수 있다.
본 출원에서 제공하는 기술 방안에 있어서, 벡터 병렬화의 아이디어를 양자 회로 시뮬레이션에 도입시키는 것을 통해, 프리미티브 함수를 타깃 함수로 전환시키고, 타깃 함수의 입력 파라미터는 병렬화해야 하는 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하며, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과이고, 타깃 함수를 실행하는 것을 통해 원래의 여러 회 실행해야 되는 컴퓨팅 과정을, 한 회의 컴퓨팅 과정으로 병렬화하여 실행하며, 이로써 단일 컴퓨팅과 동일한 시간만으로 완료할 수 있으므로 양자 회로 시뮬레이션의 효율을 충분히 향상시킨다.
도 3은 본 출원의 다른 하나의 실시예에서 제공하는 양자 회로 시뮬레이션 방법의 흐름도이다. 상기 방법의 각 단계의 실행 주체는 컴퓨터 기기일 수 있고, 예를 들어, 고전적 컴퓨터이다. 상기 방법은 아래와 같은 단계(310~350)를 포함할 수 있다.
단계 310에 있어서, 양자 회로를 시뮬레이션하기 위한 프리미티브 함수를 획득하고, 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정한다.
단계 310과 도 1에 도시된 실시예에서의 단계 110은 동일하며, 구체적으로 도 1의 실시예에서의 소개 설명을 참조할 수 있고, 본 실시예는 이에 대해 반복하지 않는다.
단계 320에 있어서, 함수 전환 인터페이스를 호출하여, 함수 전환 인터페이스에 프리미티브 함수와 제1 정보를 전송하며, 상기 제1 정보는 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 지시하기 위한 것이다.
함수 전환 인터페이스는 프리미티브 함수를 타깃 함수로 전환시키는 기능을 구현하기 위한 것이다. 상기 함수 전환 인터페이스는 사용자에 대한 인터페이스일 수 있으며, 예를 들어, API(Application Programming Interface, 애플리케이션 프로그래밍 인터페이스)이다.
제1 정보는 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 지시하기 위한 것이다. 일부 실시예에 있어서, 제1 정보는 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터의 위치를 지시하기 위한 것이다. 예를 들어, 프리미티브 함수 f(x,y,w)에서 입력 파라미터 x, y, w의 위치 번호는 순차적으로 0, 1, 2이고, 병렬화해야 하는 입력 파라미터가 x인 것으로 가정하면, 제1 정보는 0이고; 또는, 병렬화해야 하는 입력 파라미터가 x와 y인 것으로 가정하면, 제1 정보는 0과 1이다. 위치를 통해 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 지시하여, 정확하고 간단한 지시를 구현할 수 있다.
단계 330에 있어서, 함수 전환 인터페이스를 통해 제1 정보에 따라, 프리미티브 함수를 타깃 함수로 전환시키며; 여기서, 타깃 함수의 입력 파라미터는 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하고, 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과이다.
함수 전환 인터페이스는 제1 정보에 따라, 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정한 다음, 상기 제1 입력 파라미터에 기반하여, 프리미티브 함수를 타깃 함수로 전환시킨다. 예를 들어, 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터의 경우, 타깃 차원에서 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서에 대해 스플라이싱을 수행하여, 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 얻으며; 프리미티브 함수에서 병렬화가 수요되지 않는 타깃 입력 파라미터의 경우, 상기 타깃 입력 파라미터를 직접 유지하여 타깃 함수의 입력 파라미터로 사용한다. 이로써, 타깃 함수의 입력 파라미터는 전환된 후의 제1 입력 파라미터를 포함하고, 선택 가능하게 타깃 입력 파라미터를 더 포함한다. 함수 전환 인터페이스는 벡터 병렬화 기능을 지원하고, 함수 전환 인터페이스의 상기 전환을 거쳐, 타깃 함수는 프리미티브 함수를 여러 번 병렬 컴퓨팅한 결과를 출력하기 위한 것일 수 있다.
일부 실시예에 있어서, 함수 전환 인터페이스는 벡터 병렬화 기능을 지원하는 것외에도, 자동 미분 기능을 더 지원하며, 그의 전환되어 얻은 타깃 함수는 프리미티브 함수를 여러 회 병렬화 컴퓨팅한 결과를 출력하기 위한 것외에, 또한, 프리미티브 함수가 제2 입력 파라미터에 대한 도함수 정보를 출력하기 위한 것이며, 상기 제2 입력 파라미터는 프리미티브 함수의 입력 파라미터에서 도함수를 구해야 하는 입력 파라미터를 가리킨다. 제2 입력 파라미터의 개수는 하나 또는 복수 개일 수 있다. 또한, 제2 입력 파라미터와 제1 입력 파라미터는 동일할 수 있고, 상이할 수도 있다. 예를 들어, 프리미티브 함수 f(x,y,w)에서 입력 파라미터는 x, y, w이고, 그의 병렬화해야 하는 제1 입력 파라미터는 x이며, 도함수를 구해야 하는 제2 입력 파라미터도 x이고; 또는, 그의 병렬화해야 하는 제1 입력 파라미터는 x와 y이고, 도함수를 구해야 하는 제2 입력 파라미터는 x이며; 또는, 그의 병렬화해야 하는 제1 입력 파라미터는 w이고, 도함수를 구해야 하는 제2 입력 파라미터는 y인 것, 등이다.
일부 실시예에 있어서, 함수 전환 인터페이스를 호출할 때, 상기 함수 전환 인터페이스에 프리미티브 함수, 제1 정보 및 제2 정보를 도입하고, 상기 제2 정보는 프리미티브 함수에서 도함수를 구해야 하는 제2 입력 파라미터를 지시하기 위한 것이다. 일부 실시예에 있어서, 제2 정보는 프리미티브 함수에서 도함수를 구해야 하는 제2 입력 파라미터의 위치를 지시하기 위한 것이다. 예를 들어, 프리미티브 함수 f(x,y,w)에서 입력 파라미터 x, y, w의 위치 번호는 순차적으로 0, 1, 2이고, 병렬화해야 하는 제1 입력 파라미터가 x와 y이며, 도함수를 구해야 하는 제2 입력 파라미터가 x인 것으로 가정하면, 제1 정보는 0과 1이고, 제2 정보는 0이다. 상응하게, 함수 전환 인터페이스를 통해 제1 정보와 제2 정보에 따라, 프리미티브 함수를 타깃 함수로 전환시키고, 타깃 함수는 프리미티브 함수를 여러 회 병렬화 컴퓨팅한 결과를 출력하기 위한 것이며, 또한, 프리미티브 함수가 제2 입력 파라미터에 대한 도함수 정보를 출력하기 위한 것이다.
일부 실시예에 있어서, 함수 전환 인터페이스는 제1 인터페이스와 제2 인터페이스를 포함하고; 여기서, 제1 인터페이스는 제1 정보에 따라, 프리미티브 함수를 타깃 함수로 전환시키기 위한 것이고; 제2 인터페이스는 제1 정보와 제2 정보에 따라, 프리미티브 함수를 타깃 함수로 전환시키기 위한 것이다. 즉, 제1 인터페이스는 벡터 병렬화 기능을 지원하는 함수 전환 인터페이스이고, 또는 제1 인터페이스는 벡터 병렬화 기능만을 지원하는 함수 전환 인터페이스로 지칭할 수 있다. 제2 인터페이스는 벡터 병렬화 기능과 자동 미분 기능을 지원하는 함수 전환 인터페이스이다.
예시적으로, 제1 인터페이스는 vmap 인터페이스이고, 상기 vmap 인터페이스의 함수의 시그니처는 예시적으로 아래와 같다. vmap(f: Callable[..., Any], vectorized_argnums: Union[int, Sequence[int]] = 0) → Callable[..., Any]. 여기서, f는 병렬화될 프리미티브 함수를 나타내고, vectorized_argnums는 병렬화해야 하는 제1 입력 파라미터를 지시하기 위한 것이며, 예를 들어, 병렬화해야 하는 제1 입력 파라미터의 위치를 지시하기 위한 것이다. 상기 vmap 인터페이스의 함수 시그니처에서, f: Callable[..., Any]은 프리미티브 함수 f가 임의의 입력과 출력이 모두 텐서인 함수일 수 있는 것을 나타내고; vectorized_argnums: Union[int, Sequence[int]] = 0은 vectorized_argnums가 하나의 값(예를 들어 0 또는 1 또는 2 또는 3 등)일 수 있는 것을 나타내고, 한 스트링의 비트 수(예를 들어 0, 1 또는 1, 2 또는 1, 2 등)일 수도 있는 것을 나타내며, vectorized_argnums의 디폴트 값은 0이다. 출력은 Callable[..., Any]로 정의된다.
도 2에 도시된 바와 같이, vmap 인터페이스의 기능 예시도를 도시한다. 임의의 프리미티브 함수 f(예를 들어 임의의 입력과 출력이 모두 텐서인 프리미티브 함수)의 경우, vmap 인터페이스의 함수 전환을 거쳐, 다른 하나의 타깃 함수 f´를 출력한다. f´=vmap(f,vectorized_argnums=(0,1))이고, 여기서, vectorized_argnums=(0,1)은 프리미티브 함수 f에서 병렬화해야 하는 제1 입력 파라미터의 위치 번호가 0과 1인 것을 나타내고, 즉 x와 y는 병렬화가 수요되며, w는 병렬화가 수요되지 않는다. 상기 타깃 함수 f´의 입력 포맷(즉, 입력 파라미터의 타입과 형태)은 프리미티브 함수 f의 입력 포맷과 동일하며, vectorized_argnums에서 지시된 위치의 입력 파라미터를 제외하고, 대응되는 텐서 형태는 프리미티브 함수 f에 상응하는 입력 텐서에 비해 하나의 차원(즉 도 2에서의 세로 방향 차원이고, 프리미티브 함수 f에는 존재하지 않음)이 많으며, 상기 차원의 크기를 n인 것으로 설정하면, n은 1보다 큰 정수이고, 상기 n은 배치 처리 사이즈로 지칭될 수도 있다. Vmap 인터페이스를 전환시켜 얻은 타깃 함수 f´의 경우, 그의 최종 컴퓨팅 효과는 프리미티브 함수 f를 n 회 컴퓨팅한 것과 동등하며, 매 회의 프리미티브 함수 f의 입력이 vectorized_argnums 위치가 아닌 파라미터와 vectorized_argnums 위치인 파라미터의 1 차원이 낮은 하나의 슬라이스이다. 도 2에서 동일한 컬러의 하나의 텐서는 하나의 슬라이스이며, 도 2의 점선 박스에 도시된 바와 같이, 하나의 슬라이스이다. 다만, 프리미티브 함수 f에 대한 이러한 n 회의 호출은, 통일된 연산자로 기저 융합되어 병렬로 동시에 컴퓨팅될 수 있다.
예시적으로, 제2 인터페이스는 vectorized_value_and_grad 인터페이스이고, 이는 vvag 인터페이스로 간략하여 쓸 수 있다. 상기 vvag 인터페이스의 함수 시그니처는 예시적으로 아래와 같다. vectorized_value_and_grad(f: Callable[..., Any], argnums: Union[int, Sequence[int]] = 0, vectorized_argnums: Union[int, Sequence[int]] = 0) → Callable[...,Tuple[Tensor, Tensor]]. 여기서, f는 병렬화될 프리미티브 함수를 나타내고, vectorized_argnums는 병렬화해야 하는 제1 입력 파라미터를 지시하기 위한 것이며, 예를 들어, 병렬화해야 하는 제1 입력 파라미터의 위치를 지시하기 위한 것이고, argnums는 도함수를 구해야 하는 제2 입력 파라미터를 지시하기 위한 것이며, 예를 들어 도함수를 구해야 하는 제2 입력 파라미터의 위치를 지시하기 위한 것이다. 상기 vvagap 인터페이스의 함수 시그니처에서, f: Callable[..., Any]은 프리미티브 함수 f가 임의의 입력과 출력이 모두 텐서인 함수일 수 있는 것을 나타내고; vectorized_argnums: Union[int, Sequence[int]] = 0은 vectorized_argnums이 하나의 값(예를 들어 0 또는 1 또는 2 또는 3 등)일 수 있으며, 한 스트링의 비트 수(예를 들어 0, 1 또는 1, 2 또는 1, 2 등)일 수도 있는 것을 나타내고, vectorized_argnums의 디폴트 값은 0이며; argnums: Union[int, Sequence[int]] = 0은 argnums가 하나의 값(예를 들어 0 또는 1 또는 2 또는 3 등)일 수 있고, 한 스트링의 비트 수(예를 들어 0, 1 또는 1, 2 또는 1, 2 등)일 수도 있으며, argnums의 디폴트 값은 0인 것을 나타낸다. 출력은 Callable[..., Tuple[Tensor, Tensor]]로 정의되며, 출력이 2 개의 텐서를 포함하는 것을 나타내고, 여기서 하나의 텐서는 프리미티브 함수 f를 여러 회 병렬화 컴퓨팅한 결과이며, 다른 하나의 텐서는 프리미티브 함수 f가 argnums에 의해 지시된 위치의 입력 파라미터에 대한 도함수 정보이다.
임의의 프리미티브 함수 f(예를 들어, 임의의 입력과 출력이 모두 텐서인 프리미티브 함수)의 경우, vvag 인터페이스의 함수 전환을 거쳐, 다른 하나의 타깃 함수 f´를 출력한다. 타깃 함수 f´가 vectorized_argnums에서 지시된 위치의 입력 파라미터는, 대응되는 텐서 형태가 프리미티브 함수 f에 상응한 입력 텐서보다 1 차원이 많으며, 이 점은 vmap 인터페이스의 기능과 동일하다. 이와 동시에, vvag 인터페이스의 전환을 거쳐 얻은 타깃 함수 f´의 리턴은, 프리미티브 함수 f를 여러 회 병렬화 컴퓨팅한 결과를 리턴하는 것 외에도, 또한 프리미티브 함수 f가 argnums에 의해 지시된 위치의 입력 파라미터에 대한 도함수 정보를 리턴한다.
예시적으로, vvag 인터페이스에 대응되는 수학적 표현은 아래와 같으며, 프리미티브 함수는 f이고, 상기 프리미티브 함수 f가 vvag 인터페이스 전환을 거쳐 얻은 타깃 함수는 f´이며,
이다.
여기서, argnums = k는 프리미티브 함수 f의 입력 파라미터에서, 위치 번호가 k인 입력 파라미터가 도함수를 구해야 하는 입력 파라미터인 것을 나타낸다. vectorized_argnums = p는 프리미티브 함수 f의 입력 파라미터에서, 위치 번호가 p인 입력 파라미터가 병렬화해야 하는 입력 파라미터인 것을 나타낸다. Arg[0],...arg[p],...,arg[k],...는 타깃 함수 f´의 입력 파라미터를 나타내고, 그 출력은 vg인 두 개의 텐서이며, 여기서 v는 프리미티브 함수 f를 여러 회 병렬화 컴퓨팅한 결과를 나타내고, g는 프리미티브 함수 f가 argnums에 의해 지시된 위치의 입력 파라미터에 대한 도함수 정보를 나타낸다. Arg[p][i]는 전환된 후의 위치 번호가 p인 입력 파라미터에 대응되는 텐서에서의 i 번째 슬라이스를 나타내고, 병렬화 사이즈가 n이면, i의 값은 구간 [0,n-1]에서의 정수이다. 일 때, 이고, 일 때, 이다.
설명해야 할 것은, 상기 실시예에 있어서, 제1 인터페이스가 vmap 인터페이스이고, 제2 인터페이스가 vvag 인터페이스인 것만 예로 들어, 본 출원에서 제공하는 상기 두 가지의 상이한 기능의 인터페이스에 대해 소개하고 설명하였다. 본 출원의 실시예는 상기 두 가지의 인터페이스의 명칭에 대해 한정하지 않으며, 이는 개발자가 자체로 설정할 수 있다.
일부 실시예에 있어서, 함수 전환 인터페이스는 기계 학습 라이브러리 위에 캡슐화된 API이고, 상기 기계 학습 라이브러리는 타깃 함수를 실행하기 위한 벡터 명령어 세트를 제공한다. 예를 들어, 상기 기저의 기계 학습 라이브러리는 tensorflow, jax 등과 같은 기계 학습 라이브러리일 수 있고, 기저의 기계 학습 라이브러리에서는 타깃 함수를 실행하기 위한 벡터 명령어 세트를 제공하며, 함수 전환 인터페이스는 기계 학습 라이브러리 위에 캡슐화됨으로써, 벡터 병렬화의 구현과 기저 프레임워크의 무관함을 보장하고, 함수 전환 인터페이스를 호출하기만 하면 벡터 병렬화의 기능을 구현할 수 있다.
단계 340에 있어서, 벡터 명령어 세트를 채택하여 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 타깃 함수에 대응되는 실행 결과를 얻는다.
함수 전환 인터페이스를 통해 프리미티브 함수를 타깃 함수로 전환시킨 후, 기저의 기계 학습 라이브러리에서 제공하는 벡터 명령어 세트를 추가로 호출하여, CPU, GPU 또는 TPU 등 하드웨어에서 상기 벡터 명령어 세트를 실행함으로써, 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 타깃 함수에 대응되는 실행 결과를 얻을 수 있다, 벡터 명령어 세트는 프로세서가 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 수행하도록 제공되는 실행 가능한 명령어를 포함한다. 상기 벡터 명령어 세트는 CPU, GPU 또는 TPU 등 프로세서에 의해 실행될 수 있는 실행 가능한 명령어를 제공하며, 이러한 실행 가능한 명령어는 덧셈, 곱셈과 같은 기본 연산자의 기능을 구현할 수 있다. 본 실시예에 있어서, CPU, GPU 또는 TPU 등 프로세서에서 벡터 명령어 세트를 실행하는 방식을 채택하여 벡터 병렬화 처리를 구현하며, 운영 체제에서 멀티 프로세싱 또는 멀티 스레딩을 실행하는 것에 비해, 병렬 가능한 개수의 한계를 극복할 수 있고, 병렬화 사이즈를 충분히 향상시킨다.
단계 350에 있어서, 타깃 함수에 대응되는 실행 결과에 기반하여, 양자 회로 시뮬레이션을 실행한다.
타깃 함수에 대응되는 실행 결과를 얻은 후, 양자 회로 시뮬레이션의 과정을 실행할 수 있다. 단계 350과 도 1에 도시된 실시예에서의 단계 140은 동일하며, 구체적으로 도 1의 실시예에서의 소개 설명을 참조할 수 있고, 본 실시예는 이에 대해 반복하지 않는다.
본 출원에서 제공하는 기술 방안은, 함수 전환 인터페이스를 호출하는 것을 통해, 상기 함수 전환 인터페이스에 프리미티브 함수와 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 지시하기 위한 제1 정보를 송신함으로써, 상기 함수 전환 인터페이스를 통해 프리미티브 함수를 타깃 함수로 전환시킬 수 있으며, 벡터 병렬화 처리를 구현하여, 프리미티브 함수의 컴퓨팅 효율을 향상시킴으로써, 양자 회로 시뮬레이션의 효율을 향상시킨다.
또한, 일부 실시예에 있어서, 함수 전환 인터페이스는 벡터 병렬화 기능을 지원하는 것외에도, 또한 자동 미분 기능을 지원함으로써, 전환시켜 얻은 타깃 함수가 프리미티브 함수를 여러 회 병렬화 컴퓨팅한 결과를 출력할 수 있는 것외에도, 또한 프리미티브 함수가 제2 입력 파라미터에 대한 도함수 정보를 출력할 수 있으며, 이는 변분 양자 알고리즘에 특히 적합함으로써, 변분 양자 알고리즘의 개발과 연구가 더욱 편하다.
아래에, 벡터 병렬화가 양자 회로 시뮬레이션에서의 적용 시나리오에 대해 설명한다. 본 출원의 실시예에 있어서, 벡터 병렬화는 양자 회로 시뮬레이션의 입력 파동 함수 처리, 회로 변분 파라미터 최적화, 회로 노이즈 생성, 회로 구조 생성, 회로 측정 실행 등 단계에 적용될 수 있으며, 아래에, 몇 가지의 실시예를 통해, 이러한 적용 시나리오에 대해 각각 설명한다.
도 4는 타깃 양자 회로의 값 시뮬레이션의 예시도를 예시적으로 도시한다. 상기 타깃 양자 회로는 변분 양자 알고리즘의 값 시뮬레이션을 구현할 수 있다. 본 출원에서 제공하는 기술 방안을 채택하면, 상기 시뮬레이션의 모든 메인 컴포넌트는, 모두 벡터 병렬화를 능숙하게 지원할 수 있음으로써, 상이한 응용 시나리오에서 양자 시뮬레이션을 현저하게 가속시킨다. 도 4에 도시된 바와 같이, 우리가 시뮬레이션해야 할 컴퓨팅의 과정은, 지정된 양자 상태(매트릭스 곱 상태 또는 벡터의 형태일 수 있음)를 입력한 후, 파라미터를 포함하고 노이즈가 포함되었을 수 있는 양자 회로의 작용을 거쳐, 출력 상태를 주어진 파울리 스트링을 측정하는 형태에 따라, 상이한 기저에서 측정을 수행함으로써, 최적화 함수 값 및 최적화 반복을 위한 가중치(weight)에 관한 기울기를 얻는다.
도 4에 있어서, 타깃 양자 회로의 입력 양자 상태는 으로, 나타내고, 타깃 양자 회로의 회로 파라미터는 으로 나타내며, 측정 결과는 으로, 나타내고, 최적화 함수는 이며, 여기서, 은 i 번째 측정 결과를 나타내고, i는 정수이며, 의 공액 전치를 나타낸다.
1, 입력 파동 함수의 병렬화적인 처리에 있어서,
이 곳의 예에 있어서, 프리미티브 함수는 양자 회로 시뮬레이션에서의 타깃 단계를 구현하기 위한 것이고, 상기 타깃 단계는 입력 파동 함수 처리를 포함하며, 제1 입력 파라미터는 타깃 양자 회로의 입력 파동 함수를 포함한다.
일부 실시예에 있어서, 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 타깃 양자 회로의 복수 개의 병렬화된 입력 파동 함수를 스플라이싱하여 얻은 결과이며; 벡터 명령어 세트를 채택하여 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 타깃 함수에 대응되는 실행 결과를 얻고; 여기서, 타깃 함수에 대응되는 실행 결과는 복수 개의 병렬화된 입력 파동 함수 각각에 대응되는 처리 결과를 포함한다.
변분 양자 회로 시뮬레이션을 예로 들면, 변분 양자 회로 시뮬레이션은 입력 파동 함수, 회로 유니테리 매트릭스 및 회로 측정인 세 개의 부분으로 구성된다. 많은 작업에 있어서, 회로의 입력 파동 함수는 모두 0인 카티전 곱 상태이며, 이 때는 입력 파동 함수를 특정할 필요가 없다. 그러나 일부 작업에 있어서, 상이한 입력 파동 함수가 처리 및 출력을 수행하는 것을 수락하도록, 동일한 회로 구조가 필요될 수 있으며, 이러한 경우에는 입력 파동 함수인 파라미터를 벡터 병렬화하여 시뮬레이션하기에 적합하다.
예를 들어, 양자 기계 학습 타입의 작업에 있어서, 우리는 입력된 데이터 세트에 대해 배치 처리를 수행해야 하며, 하나의 배치의 입력 데이터의 결과를 매 회 동시에 컴퓨팅해야 하는 반면, 이 배치의 입력 데이터는 모두 인코딩되어 파동 함수에 입력되며, 입력 파동 함수의 형태로 양자 기계 학습 모델에 입력된다. 따라서 입력 파동 함수의 병렬화적인 처리는, 양자 기계 학습의 배치 입력을 편리하게 처리할 수 있고, 큰 batch size(배치 처리 사이즈) 하에서의 가속을 구현한다. 수치 실험은, GPU에서, batch size=512와 batch size=1이 수요하는 컴퓨팅 시간은 대체적으로 동일한 것을 나타내고, 이는 벡터 병렬화의 기저 아키텍처 최적화에 이롭고, 이는 직접 시뮬레이션을 batch size배 가속한 것과 같다.
도 5는 입력 파동 함수를 병렬화적으로 처리하는 예시도를 예시적으로 도시한다. 이상에서 소개된 vvag 인터페이스를 사용하는 것을 예로 들면, 타깃 함수 f´=vvag(f,vectorized_argnums=0,argnums=1)이고, 여기서 f는 프리미티브 함수이며, vectorized_argnums=0은 병렬화해야 하는 입력 파라미터가 타깃 양자 회로의 입력 파동 함수인 것을 나타내고, argnums=1은 도함수를 구해야 하는 입력 파라미터가 타깃 양자 회로의 가중치인 것을 나타낸다. 타깃 함수 f´의 입력 파라미터는 타깃 양자 회로의 가중치(51), 및 타깃 양자 회로의 복수 개의 병렬화된 입력 파동 함수를 스플라이싱하여 얻은 결과(52)를 포함하고, 벡터 병렬화 방식을 채택하여 상기 타깃 함수 f´를 실행하여, 복수 개의 병렬화된 입력 파동 함수 각각에 대응되는 처리 결과(53), 및 가중된 도함수 정보(54)를 얻는다. 향후, 상기 복수 개의 병렬화된 입력 파동 함수 각각에 대응되는 처리 결과에 기반하여, 회로 변분 파라미터를 최적화하는 등 단계를 수행할 수 있으며, 예를 들어 입력 파동 함수에 대응되는 처리 결과와 희망 결과 사이의 차이에 따라, 타깃 양자 회로의 회로 변분 파라미터를 조절하여, 입력 파동 함수에 대응되는 처리 결과가 최대한 희망 결과에 접근되도록 한다.
이 곳의 예에 있어서, 입력 파동 함수를 병렬화적으로 처리하는 것을 통해, 양자 회로 시뮬레이션 과정에서 입력 파동 함수에 대한 배치 처리 효율을 충분히 향상시킨다.
2, 회로 변분 파라미터의 병렬화적인 최적화에 있어서,
이 곳의 예에 있어서, 프리미티브 함수는 양자 회로 시뮬레이션에서의 타깃 단계를 구현하기 위한 것이고, 상기 타깃 단계는 회로 변분 파라미터 최적화를 포함하며, 제1 입력 파라미터는 타깃 양자 회로의 회로 변분 파라미터를 포함한다.
일부 실시예에 있어서, 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 타깃 양자 회로의 복수 개의 그룹의 병렬화된 회로 변분 파라미터를 스플라이싱하여 얻은 결과이며; 벡터 명령어 세트를 채택하여 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 타깃 함수에 대응되는 실행 결과를 얻고; 여기서, 타깃 함수에 대응되는 실행 결과는 복수 개의 그룹의 병렬화된 회로 변분 파라미터 각각에 대응되는 최적화 결과이다.
변분 양자 최적화 문제의 경우, 기울기 하강의 파라미터는 종종 로컬 극소치에 머문다. 이는 우리가 상이한 초기 파라미터로부터 출발할 것을 요구하며, 동일한 문제에 대해, 여러 번의 독립적인 최적화를 수행하고, 이로부터 최적화 함수가 가장 최적화되도록 하는 하나의 그룹의 대응되는 파라미터를 선택한다. 이러한 여러 회의 독립적인 최적화 시도는, 단순 루프의 방안에서, 최적화 횟수배의 시간만큼 시간 소모가 증가된다. 이때 우리는 회로 변분 파라미터에 대응되는 변량을 벡터 병렬화시킬 수 있다.
본 출원의 실시예는, 여러 번의 독립적인 최적화에 대한 병렬화 가속을 제안한다. 특히, VQE와 같은 최적화가 로컬 극소에 머물기 쉬운 알고리즘의 경우, 우리는 병렬된 복수 개의 최적화를 동시에 수행한 다음, 가장 적합한 하나의 수렴 파라미터를 최종적으로 선택한다. 이로써 여러 번의 최적화의 시간은 대체적으로 단일 최적화 시간과 완전히 일치하게 된다. 우리는 이러한 최적화 방안을 배치 처리의 VQE(batched VQE) 최적화로 지칭한다. 즉, 기저 연산자로부터, 여러 번의 독립적인 최적화의 병렬화 작동을 구현할 수 있다.
도 6은 회로 변분 파라미터를 병렬화적으로 최적화하는 예시도를 예시적으로 도시한다. 이상에서 소개된 vvag 인터페이스를 사용하는 것을 예로 들면, 타깃 함수 f´=vvag(f,vectorized_argnums=0,argnums=0)이고, 여기서 f는 프리미티브 함수이며, vectorized_argnums=0은 병렬화해야 하는 입력 파라미터가 타깃 양자 회로의 회로 변분 파라미터(예를 들어, 가중치)인 것을 나타내고, argnums=0은 도함수를 구해야 하는 입력 파라미터도 타깃 양자 회로의 회로 변분 파라미터(예를 들어, 가중치)인 것을 나타낸다. 타깃 함수 f´의 입력 파라미터는 타깃 양자 회로의 복수 개의 그룹의 병렬화된 회로 변분 파라미터를 스플라이싱하여 얻은 결과(61)를 포함하고, 벡터 병렬화 방식을 채택하여 상기 타깃 함수 f´를 실행하여, 복수 개의 그룹의 병렬화된 회로 변분 파라미터 각각에 대응되는 최적화 결과(62), 및 회로 변분 파라미터의 도함수 정보(63)를 얻는다. 향후, 상기 복수 개의 그룹의 병렬화된 회로 변분 파라미터 각각에 대응되는 최적화 결과에 따라, 가장 최적화된 하나의 그룹의 회로 변분 파라미터르 선택하여 최종적인 타깃 양자 회로의 파라미터로 사용할 수 있다.
이 곳의 예에 있어서, 회로 변분 파라미터를 병렬화적으로 최적화하는 것을 통해, 양자 회로 시뮬레이션 과정에서 회로 변분 파라미터에 대한 최적화 효율을 충분히 향상시킨다.
3, 회로 노이즈의 병렬화적인 생성에 있어서,
이 곳의 예에 있어서, 프리미티브 함수는 양자 회로 시뮬레이션에서의 타깃 단계를 구현하기 위한 것이고, 상기 타깃 단계는 회로 노이즈 생성을 포함하며, 제1 입력 파라미터는 타깃 양자 회로의 회로 노이즈를 생성하기 위한 난수를 포함한다.
일부 실시예에 있어서, 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 타깃 양자 회로의 회로 노이즈를 생성하기 위한 복수 개의 그룹의 병렬화된 난수를 스플라이싱하여 얻은 결과이며; 벡터 명령어 세트를 채택하여 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 타깃 함수에 대응되는 실행 결과를 얻고; 여기서, 타깃 함수에 대응되는 실행 결과는 복수 개의 그룹의 병렬화된 난수 각각에 대응되는 노이즈 시뮬레이션 결과를 포함한다. 향후, 상이한 난수에 대응되는 노이즈 시뮬레이션 결과에서의 타깃 양자 회로의 실행 결과에 대해 관측을 수행하여, 상이한 노이즈 환경에서의 상기 타깃 양자 회로의 실행 상황 및 실행 결과의 차이를 얻을 수 있다.
몬테카를로 궤적 시뮬레이터의 시나리오에서, 상이한 난수로 노이즈의 상이한 확률 분포를 시뮬레이션하는 행위이다. 몬테카를로 궤적 시뮬레이터로 관측양을 평가하는 것은, 대량의 상이한 난수 구조의 관측양 결과를 평균해야 하므로, 자연스럽게, 우리는 난수인 이 파라미터를 벡터 병렬화함으로써, 수십 가지, 심지어 수백 가지의 랜덤 구조의 동시 시뮬레이션을 구현할 수 있다. 따라서, 본 출원의 방안으로 양자 노이즈의 몬테카를로 시뮬레이션을 가속시킬 수 있고, 상이한 난수 입력을 병렬화시킴으로써, 노이즈의 몬테카를로 시뮬레이션을 벡터화적으로 병렬한다. 여기서 난수가 병렬 차원으로 사용되는 것과 입력 파동 함수가 병렬 차원으로 사용되는 행위는 유사하며, 예시도를 단독으로 도시하지 않는다.
이 곳의 예에 있어서, 회로 노이즈를 병렬화적으로 생성하는 것을 통해, 양자 회로 시뮬레이션 과정에서 회로 노이즈를 생성하는 효율을 충분히 향상시킨다.
이상 세 가지의 경우는, 구현된 함수에 대해 어떠한 특수한 처리를 수행할 필요도 없고, 즉 vmap 또는 vvag 인터페이스를 직접 호출할 수 있으며, 병렬화해야 하는 입력 파라미터의 위치를 지정하여, API에서의 vectorized_argnums 파라미터로 사용하여 벡터 병렬화를 지원하는 고효율적인 시뮬레이션으로 전환시킬 수 있다.
아래의 두 가지의 경우, 텐서 네트워크에 기반한 회로 시뮬레이터 기초 위에 일부 텐서의 파라미터화된 합산의 결과를 구현하여, 입력 파라미터가 상이할 때, 대응되는 감소화된 후의 텐서 네트워크 구조가 상이하도록 해야 한다. 이러한 파라미터화된 로컬 텐서를 합산하고, 동일한 로컬 텐서 형태를 유지하여 전체 텐서 네트워크에 임베딩되어 상이한 텐서 네트워크 구조(또는 양자 회로 구조) 시뮬레이션의 파라미터화된 제어를 구현하는 아이디어는 도 7에 도시된 바와 같다. 도 7은 텐서 네트워크가 파라미터화된 구조 정보의 하나의 단편(fragment)을 포함하는 것을 도시하고, 이 곳에서의 은 구조 파라미터이다. 상이한 one-hot(원핫) 벡터가 로 사용될 때, 텐서 네트워크에서 우리가 주목하는 부분이 CNOT(제어 반전) 게이트 또는 단일 비트 회전 게이트 카티전 곱인 것을 구현할 수 있다. 더욱 많은 서브 블록의 파라미터화된 구조 시뮬레이션의 경우, 우리는 다만 각 국부에 하나의 독립적인 구조 파라미터 벡터를 도입하면 된다. 반면, 측정된 파라미터화의 경우, 이도 유사하게, 다만 측정 위치의 로컬 텐서가 인 것을 선택하면 되고, 여기서 은 i 번째 큐비트에 대응되는 하나의 그룹의 4 차원 벡터를 나타내고, (I 연산자는 임)이고, , 은 파울리 매트릭스 X, Y 및 Z에 대응된다. 따라서, 이때 우리는 하나의 그룹의 형태가 [큐비트, 4]인 파라미터 텐서를 송신하여, 최종적인 측정에 대응되는 파울리 스트링을 직접 제어할 수 있다. 모든 컴퓨팅 과정과 실시간 컴파일되어 구성된 컴퓨팅 그래프는 모두 완전히 동일하며, 재사용될 수 있다. 예를 들어. 측정 파라미터[[1,0,0,0], [0,1,0,0], [0,0,0,1]]은 측정될 희망된 파울리 스트링이 I0X1Z2인 것을 나타내고, X1Z2로 간략화하여 나타낸다. 더 중요한 것은, 이상의 방안은 텐서 네트워크의 전반적인 정적 구조를 변경시키지 않으며, 이로써 실시간 컴파일과 텐서 수축 경로에 대한 사전 최적화 검색을 여전히 완벽하게 지원할 수 있다.
4, 회로 구조의 병렬화적인 생성에 있어서,
이 곳의 예에 있어서, 프리미티브 함수는 양자 회로 시뮬레이션에서의 타깃 단계를 구현하기 위한 것이고, 상기 타깃 단계는 회로 구조 생성을 포함하며, 상기 제1 입력 파라미터는 타깃 양자 회로를 생성하기 위한 회로 구조의 제어 파라미터를 포함하고, 상이한 제어 파라미터는 상이한 회로 구조를 생성하기 위한 것이다.
일부 실시예에 있어서, 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 타깃 양자 회로의 회로 구조를 생성하기 위한 복수 개의 그룹의 병렬화된 제어 파라미터를 스플라이싱하여 얻은 결과이며; 벡터 명령어 세트를 채택하여 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 타깃 함수에 대응되는 실행 결과를 얻고; 여기서, 타깃 함수에 대응되는 실행 결과는 복수 개의 그룹의 병렬화된 제어 파라미터 각각에 대응되는 회로 구조 생성 시뮬레이션 결과를 포함한다.
상이한 회로 구조의 병렬화를 구현하기 위해, 기저 시뮬레이터가 텐서 네트워크에 기반된 시뮬레이터인 특성을 충분히 이용해야 하며, 상이한 구조를 가질 수 있는 회로 부분의 경우, 상이한 구조를 대표하는 텐서의 파라미터화된 합산을 수행하며, 즉 이러한 파라미터는 회로 구조를 제어할 수 있음과 동시에 실시간 컴파일의 한정을 여전히 만족시킬 수 있다. 그 이유는, 회로 구조가 변하더라도, 가장 일반화된 파라미터화 합산이 대표하는 슈퍼 네트워크가, 이미 고정된 텐서 형태로 모든 가능성을 요약했기 때문이므로, 실시간 컴파일은 여전히 정상적으로 구현될 수 있다.
DARTS에 의해 계발된 미분 가능한 양자 구조 검색은, 하나의 batch(배치)에서 대량의 상이한 회로 구조에 대응되는 타깃 최적화 함수를 평가하는 태스크를 포함하며, 마침 병렬화 회로 구조의 시츄에이션에 완벽하게 부합된다. 이로써, 벡터 병렬화가 존재하는 양자 소프트웨어는 미분 가능한 양자 구조 검색을 현저하게 향상시키고, 즉 변분 회로 자동화 설계의 효율을 향상시킨다. 이는, 텐서 시뮬레이터에만 존재하는, 상태 시뮬레이터가 아주 어렵게 구현하는 병렬 패러다임이다.
도 8은 회로 구조를 병렬화적으로 최적화하는 예시도를 도시한다. 이상에서 소개된 vvag 인터페이스를 사용하는 것을 예로 들면, 타깃 함수 f´=vvag(f,vectorized_argnums=0,argnums=1)이고, 여기서 f는 프리미티브 함수이며, vectorized_argnums=0은 병렬화해야 하는 입력 파라미터가 타깃 양자 회로의 회로 구조의 제어 파라미터인 것을 나타내고, argnums=1은 도함수를 구해야 하는 입력 파라미터가 타깃 양자 회로의 가중치인 것을 나타낸다. 타깃 함수 f´의 입력 파라미터는 타깃 양자 회로의 가중치(81), 및 타깃 양자 회로의 회로 구조의 복수 개의 그룹의 병렬화된 제어 파라미터를 스플라이싱하여 얻은 결과(82)를 포함하고, 벡터 병렬화 방식을 채택하여 상기 타깃 함수 f´를 실행하여, 복수 개의 그룹의 병렬화된 제어 파라미터 각각에 대응되는 회로 구조 생성 결과를 얻으며, 복수 개의 그룹의 회로 구조 생성 결과에 기반하여, 우리는 복수 개의 그룹의 측정 결과(83), 및 측정 결과가 가중치에 대한 도함수 정보(84)를 상응하게 얻을 수 있다. 향후, 상기 복수 개의 그룹의 회로 구조 생성 결과로부터, 하나의 가장 최적화된 회로 구조 생성 결과를 선택하고, 이에 기반하여 실제 하드웨어에서의 타깃 양자 회로의 배치를 수행할 수 있다.
이 곳의 예에 있어서, 회로 구조를 병렬화적으로 생성하는 것을 통해, 양자 회로 시뮬레이션 과정에서 회로 구조에 대한 생성 효율을 충분히 향상시킨다.
5, 회로 측정의 병렬화적인 실행에 있어서,
이 곳의 예에 있어서, 프리미티브 함수는 양자 회로 시뮬레이션에서의 타깃 단계를 구현하기 위한 것이고, 상기 타깃 단계는 회로의 측정을 포함하며, 제1 입력 파라미터는 타깃 양자 회로에 대한 회로 측정을 실행하기 위한 측정 파라미터를 포함하고, 상이한 측정 파라미터는 상이한 측정 결과를 생성하기 위한 것이다.
일부 실시예에 있어서, 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 타깃 양자 회로에 대한 회로 측정을 실행하기 위한 복수 개의 그룹의 병렬화된 측정 파라미터를 스플라이싱하여 얻은 결과이며; 벡터 명령어 세트를 채택하여 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 타깃 함수에 대응되는 실행 결과를 얻고; 여기서, 타깃 함수에 대응되는 실행 결과는 복수 개의 그룹의 병렬화된 측정 파라미터 각각에 대응되는 측정 결과를 포함한다. 향후, 복수 개의 그룹의 측정 파라미터 각각에 대응되는 측정 결과에 기반하여, 타깃 양자 회로의 실행 결과에 대해 관측을 수행할 수 있다.
작은 사이즈의 시스템의 경우, 수치 시뮬레이션은 양자 회로 최종 상태에서 출력한 파동 함수 정보를 완전하게 저장할 수 있고, 이때 측정 결과에 대한 수치 시뮬레이션은 여러 가지 상이한 방안이 존재한다. 상기 파동 함수 정보를 재사용하는 것을 포함하고, 이에 의거하여 상이한 파울리 스트링 연산자의, 상기 파동 함수에서의 희망을 구하며, 더욱 작은 시스템이, 내장 메모리에서 해밀토니안 연산자의 매트릭스 형태를 완전하게 나타낼 때, 우리는 파울리 스트링의 합을 구하는 것을 하나의 독립적인 해밀토니안 매트릭스로 직접 병합하여 희망을 컴퓨팅할 수도 있으며, 이때 효율이 종종 더 좋다.
그러나, 텐서 네트워크 시뮬레이터만 지원할 수 있는 큰 사이즈의 시스템의 경우, 상이한 파울리 스트링의 희망을 구하는 경우, 최종 상태 파동 함수(내장 메모리에 저장할 공간이 충족하지 않음)를 재사용할 수 없다. 또한, 텐서 네트워크를 순차적으로 수축하여 상이한 연산자 희망의 해를 구할 때, 수축 경로와 실시간 컴파일 수행을 다시 찾아야하므로, 많은 시간이 낭비된다. 따라서, 파라미터화된 회로 구조 합산의 방안을 모방하여, 파라미터화된 회로 측정 합산을 구현할 수 있고, 이로써 입력 파라미터의 one-hot 벡터를 통해 대응되는 측정 연산자의 파울리 스트링을 제어할 수 있다. 이때 우리는 다만 한 번의 실시간 컴파일로, 모든 상이한 파울리 스트링의 희망 해를 구하는 것을 지원할 수 있다. 측정에서의 구조 파라미터를 벡터 병렬화하는 것을 결합하여, 우리는 복수 개의 파울리 스트링을 동시에 고효율적으로 컴퓨팅하는 희망을 구현할 수 있고, 각 상이한 측정 연산자를 다시(실시간으로) 컴파일할 필요가 없다.
이 곳의 예에 있어서, 내장 메모리가 완전한 파동 함수를 저장할 수 없음으로써, 파동 함수를 완전하게 재사용하여 상이한 파울리 스트링을 평가할 수 없는 경우, 벡터 병렬화 파라미터화된 회로 측정은, 고효율적인 큰 시스템의 회로 시뮬레이션을 구현할 수 있다.
본 출원의 기술 방안의 응용 시나리오 및 상응한 가속 효과는 이미 상기 문장에서 언급하였다. 일반적으로, GPU 등과 같은 하드웨어에서, 벡터 병렬화는 대체적으로 병렬 배치 차원의 크기와 일치한 가속을 구현할 수 있다. 이는 일반적인 시나리오에서, 단순 루프 컴퓨팅에 비해 수십 배로부터 수백 배에 이르는 효율 향상을 구현할 수 있고, 수요되는 추가 개발 비용은 무시할 수 있고, 사용자 친화적이다. 아래에 우리는 일부 간단한 정량 결과를 통해, 상기 효율 향상의 중요성을 강조한다.
1, 양자 기계 학습 작업에 대한 가속에 있어서,
전술한 바와 같이, 기계 학습 작업에서, 우리는 종종 입력 데이터에 대해 배치 처리를 수행해야 하며, 이로써 입력 파동 함수의 파라미터를 벡터 병렬화하여, 양자 기계 학습의 컴퓨팅 효율을 현저히 향상시킬 수 있다. 상이한 주류의 양자 소프트웨어는, 동일한 파라미터화된 회로를 시뮬레이션하여 MNIST 판별 문제를 실행하며, 싱글 스텝에서 소모하는 시간의 batch size(배치 처리 사이즈)에 따른 변화는, 도 9에 도시된 바와 같다. 여기서, 라인 91은 본 출원에서 제기된 벡터 병렬화 방안을 채택하여 GPU에서의 실행 소모 시간의 batch size에 따른 변화를 도시하며, 라인 92는 본 출원에서 제기된 벡터 병렬화 방안을 채택하여 CPU에서의 실행 소모 시간의 batch size에 따른 변화를 도시하고, 라인 93은 pennylane 방안을 채택한 실행 소모 시간의 batch size에 따른 변화를 도시하며, 라인 94는 tensorflow-quantum 방안을 채택한 실행 소모 시간의 batch size에 따른 변화를 도시한다. 이로부터 알 수 있다시피, 본 출원에서 제기된 벡터 병렬화 기반의 기술은, 비교적 큰 batch size일 때, GPU에서의 컴퓨팅은, 다른 주류 소프트웨어에 비해 백배 이상의 가속을 구현할 수 있다.
2, 측정 병렬화는 초대형 양자 시스템의 고효율의 시뮬레이션을 구현한다.
벡터 병렬화 기술을 통해 파동 함수가 재사용될 수 없는 경우에서의 상이한 파울리 스트링 측정 컴퓨팅 그래프의 재사용을 구현하며, 우리가 단일 V100에서 100개의 비트를 초과하는 양자 화학 기저 상태 시뮬레이션 VQE 문제를 시뮬레이션하도록 할 수 있다. 이처럼 큰 시스템에서 전체 변분 양자 알고리즘의 전체 플로우를 도시하고 세계적으로 처음이다. 상응하게 100 그리드 포인트의 1 차원 횡방향 필드 아이징 모델 상전 이점과 1 차원 등방성 하이젠베르크 모델의 시뮬레이션 수렴 결과는 아래의 표 1과 같다. 100 그리드 포인트 VQE인 이러한 대규모 문제에서, 단일 최적화 반복에 수요되는 시간은 다만 초 단위인 반면, 이러한 시뮬레이션 작업은 주류의 양자 상태 기반의 시뮬레이터의 경우, 내장 메모리 지수 발산으로 인해 구현할 수 없게 된다.
표 1
본 출원에서 설명된 방안은, 자체로 연구한 TensorCircuit 양자 시뮬레이션 프레임워크에 기반한 것이다. TensorCircuit는 현대 기계 학습 프레임워크에 기반하여, 멀티 하드웨어 플랫폼과 멀티 소프트웨어 백엔드를 지원함과 동시에 자동 미분, 실시간 컴파일, 벡터 병렬화와 이기종 하드웨어 가속을 지원하는 새로운 세대의 양자 컴퓨팅 시뮬레이션 소프트웨어이다. 이는 특히 NISQ시대의 알고리즘의 설계, 연구와 개발에 적합하며, 양자 고전 하이브리드의 컴퓨팅 패러다임 시뮬레이션을 완벽하게 지원한다. 이는 완전히 순수하게 Python으로 작성되고, 알고리즘에서 텐서 네트워크를 핵심 엔진으로 하며, 사용자 친화성을 유지함과 동시에 최적화되었던 c++ 코드를 초월하는 작동 효율을 갖는다. 본 출원에서 설명된 방안은, 이미 TensorCircuit 프레임워크 하에서 완전히 구현되고, 직접 사용할 수 있으며, 동일한 타입의 소프트웨어를 훨씬 초과하는 효율을 얻는다.
본 출원의 방안과 TensorCircuit 플랫폼은, NISQ 시기의 양자 하드웨어의 검증 발전과 양자 소프트웨어 및 알고리즘의 설계와 테스트를 현저히 가속하고 증강시킬 수 있다. 상기 방안은 NISQ 하드웨어에서 효과적인 양자 우세와 대규모 변분 양자 컴퓨팅을 검증하는 것과 관련된 문제를 위해 기초를 마련하고, 양자 컴퓨터와 양자 휴리스틱의 상업적 적용 가능성을 가속화한다.
아래는 본 출원의 장치 실시예이고, 본 출원의 방법의 실시예를 실행하기 위한 것일 수 있다. 본 출원의 장치 실시예에서 미개시된 세부 사항의 경우, 본 출원의 방법의 실시예를 참조한다.
도 10은 본 출원의 하나의 실시예에서 제공하는 양자 회로 시뮬레이션 장치의 블록도이다. 상기 장치는 상기 양자 회로 시뮬레이션 방법을 구현하는 기능을 갖고, 상기 기능은 하드웨어에 의해 구현될 수 있으며, 하드웨어에 상응하는 소프트웨어에 의해 구현될 수도 있다. 상기 장치는 컴퓨터 기기일 수 있고, 컴퓨터 기기에 설치될 수도 있다. 상기 장치(1000)는, 함수 획득 모듈(1010), 함수 전환 모듈(1020), 함수 실행 모듈(1030) 및 회로 시뮬레이션 모듈(1040)을 포함할 수 있다.
함수 획득 모듈(1010)은, 양자 회로를 시뮬레이션하기 위한 프리미티브 함수를 획득하고, 상기 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정하기 위한 것이다.
함수 전환 모듈(1020)은, 상기 프리미티브 함수 및 상기 제1 입력 파라미터에 따라, 상기 프리미티브 함수를 타깃 함수로 전환시키기 위한 것이고, 상기 타깃 함수의 입력 파라미터는 상기 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하며, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과이다.
함수 실행 모듈(1030)은, 상기 타깃 함수의 입력 파라미터에 따라, 상기 타깃 함수에 대응되는 실행 결과를 얻기 위한 것이다.
회로 시뮬레이션 모듈(1040)은. 상기 타깃 함수에 대응되는 실행 결과에 기반하여, 상기 양자 회로 시뮬레이션을 실행하기 위한 것이다.
예시적 실시예에 있어서, 상기 함수 실행 모듈(1030)은, 벡터 병렬화 방식을 채택하여 상기 타깃 함수의 입력 파라미터에 포함된 상기 전환된 후의 제1 입력 파라미터를 처리하여, 상기 타깃 함수에 대응되는 실행 결과를 얻기 위한 것이다.
예시적 실시예에 있어서, 상기 함수 실행 모듈(1030)은, 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻기 위한 것이고, 상기 벡터 명령어 세트는 프로세서가 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대해 상기 벡터 병렬화 처리를 실행하도록 제공되는 실행 가능한 명령어를 포함한다.
일부 실시예에 있어서, 상기 프리미티브 함수는 상기 양자 회로 시뮬레이션에서 입력 파동 함수를 처리하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로의 입력 파동 함수를 포함한다. 상기 함수 실행 모듈(1030)은, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하기 위한 것이고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로의 복수 개의 병렬화된 입력 파동 함수를 스플라이싱하여 얻은 결과이며; 상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻으며; 여기서, 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 병렬화된 입력 파동 함수에 각각 대응되는 처리 결과를 포함한다.
일부 실시예에 있어서, 상기 프리미티브 함수는 상기 양자 회로 시뮬레이션에서 회로 변분 파라미터를 최적화하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로의 회로 변분 파라미터를 포함한다. 상기 함수 실행 모듈(1030)은, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하기 위한 것이고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로의 복수 개의 그룹의 병렬화된 회로 변분 파라미터를 스플라이싱하여 얻은 결과이며; 상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻으며; 여기서, 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 그룹의 병렬화된 회로 변분 파라미터 각각에 대응되는 최적화 결과를 포함한다.
일부 실시예에 있어서, 상기 프리미티브 함수는 상기 양자 회로 시뮬레이션에서 회로 노이즈를 생성하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로의 회로 노이즈를 생성하기 위한 난수를 포함한다. 상기 함수 실행 모듈(1030)은, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하기 위한 것이고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로의 회로 노이즈를 생성하기 위한 복수 개의 그룹의 병렬화된 난수를 스플라이싱하여 얻은 결과이며; 상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻고; 여기서, 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 그룹의 병렬화된 난수 각각에 대응되는 노이즈 시뮬레이션 결과를 포함한다.
일부 실시예에 있어서, 상기 프리미티브 함수는 상기 양자 회로 시뮬레이션 중 회로 구조를 생성하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로의 회로 구조를 생성하기 위한 제어 파라미터를 포함하며, 상이한 제어 파라미터는 상이한 회로 구조를 생성하기 위한 것이다. 상기 함수 실행 모듈(1030)은, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하기 위한 것이고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로의 회로 구조를 생성하기 위한 복수 개의 그룹의 병렬화된 제어 파라미터를 스플라이싱하여 얻은 결과이며; 상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 결과를 얻고; 여기서, 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 그룹의 병렬화된 제어 파라미터 각각에 대응되는 회로 구성 생성 결과를 포함한다.
일부 실시예에 있어서, 상기 프리미티브 함수는 상기 양자 회로 시뮬레이션 중 회로 측정을 실행하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로에 대한 회로 측정을 실행하기 위한 측정 파라미터를 포함하며, 상이한 측정 파라미터는 상이한 측정 결과를 생성하기 위한 것이다. 상기 함수 실행 모듈(1030)은, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하기 위한 것이고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로에 대한 회로 측정을 실행하기 위한 복수 개의 그룹의 병렬화된 측정 파라미터스를 플라이싱하여 얻은 결과이며; 상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻고; 여기서, 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 그룹의 병렬화된 측정 파라미터 각각에 대응되는 측정 결과를 포함한다.
예시적 실시예에 있어서, 상기 타깃 함수는,
상기 프리미티브 함수의 입력 파라미터가 병렬화할 필요가 없는 타깃 입력 파라미터를 더 포함하면, 상기 프리미티브 함수에서의 상기 제1 입력 파라미터를 상기 전환된 후의 제1 입력 파라미터로 수정하고, 상기 타깃 입력 파라미터를 유지하며, 상기 타깃 함수를 얻는 단계;
또는,
상기 프리미티브 함수의 입력 파라미터가 병렬화할 필요가 없는 타깃 입력 파라미터를 포함하지 않으면, 상기 프리미티브 함수에서의 상기 제1 입력 파라미터를 상기 전환된 후의 제1 입력 파라미터로 수정하고, 상기 타깃 함수를 얻는 단계를 통해 얻어진다.
예시적 실시예에 있어서, 상기 함수 전환 모듈(1020)은, 함수 전환 인터페이스를 호출하여, 상기 함수 전환 인터페이스에 상기 프리미티브 함수와 제1 정보를 송신하기 위한 것이고, 상기 제1 정보는 상기 프리미티브 함수에서 병렬화해야 하는 상기 제1 입력 파라미터를 지시하기 위한 것이며; 상기 함수 전환 인터페이스를 통해 상기 제1 정보에 따라, 상기 프리미티브 함수를 상기 타깃 함수로 전환시킨다.
일부 실시예에 있어서, 상기 함수 전환 모듈(1020)은 또한, 상기 함수 전환 인터페이스에 제2 정보를 송신하기 위한 것이고, 상기 제2 정보는 상기 프리미티브 함수에서 도함수를 구해야 하는 제2 입력 파라미터를 지시하기 위한 것이며; 상기 함수 전환 인터페이스를 통해 상기 제1 정보와 상기 제2 정보에 따라, 상기 프리미티브 함수를 상기 타깃 함수로 전환시키고, 상기 타깃 함수는 또한, 상기 프리미티브 함수가 상기 제2 입력 파라미터에 대한 도함수 정보를 출력하기 위한 것이다.
일부 실시예에 있어서, 상기 함수 전환 인터페이스는 제1 인터페이스와 제2 인터페이스를 포함하고; 여기서, 상기 제1 인터페이스는 상기 제1 정보에 따라, 상기 프리미티브 함수를 상기 타깃 함수로 전환시키기 위한 것이고; 상기 제2 인터페이스는 상기 제1 정보와 상기 제2 정보에 따라, 상기 프리미티브 함수를 상기 타깃 함수로 전환시키기 위한 것이다.
일부 실시예에 있어서, 상기 함수 전환 인터페이스는 기계 학습 라이브러리 위에 캡슐화된 API이고, 상기 기계 학습 라이브러리는 상기 타깃 함수를 실행하기 위한 벡터 명령어 세트를 제공한다.
예시적 실시예에 있어서, 타깃 차원에서 상기 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서에 대해 스플라이싱을 수행하여, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 얻으며; 여기서, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서의, 상기 타깃 차원에서의 사이즈는, 상기 제1 입력 파라미터에 대응되는 병렬화된 텐서의 개수와 대응된다.
본 출원에서 제공하는 기술 방안에 있어서, 벡터 병렬화의 아이디어를 양자 회로 시뮬레이션에 도입시키는 것을 통해, 프리미티브 함수를 타깃 함수로 전환시키고, 타깃 함수의 입력 파라미터는 병렬화해야 하는 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하며, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과이고, 타깃 함수를 실행하는 것을 통해 원래의 여러 회 실행해야되는 컴퓨팅 과정을, 한 회의 컴퓨팅 과정으로 병렬화하여 실행하며, 이로써 단일 컴퓨팅과 동일한 시간이기만 하면 완료할 수 있으므로 양자 회로 시뮬레이션의 효율을 충분히 향상시킨다.
설명해야 할 것은, 상기 실시예에서 제공한 장치는, 시스템의 기능을 구현할 때, 상기 각 기능적 모듈의 분할로만 예를 들어 설명하였고, 실제 응용에서, 수요에 따라 상기 기능을 상이한 기능적 모듈에 의해 완료되도록 분배할 수 있으며, 즉 기기의 내부 구조를 상이한 기능적 모듈로 분할하여, 이상 설명한 전부 또는 부분적인 기능을 완료한다. 또한, 상기 실시예에서 제공한 장치와 방법의 실시예는 동일한 사상에 속하며, 이의 구체적인 구현 과정은 방법 실시예를 참조하면 되고, 여기서 더 이상 반복하지 않는다.
도 11을 참조하면, 본 출원의 하나의 실시예에서 제공하는 컴퓨터 기기의 구조 예시도를 도시한다. 상기 컴퓨터 기기는 고전적 컴퓨터일 수 있다. 상기 컴퓨터 기기는 상기 실시예에서 제공하는 양자 회로 시뮬레이션 방법을 실시하기 위한 것일 수 있다. 구체적으로는,
상기 컴퓨터 기기(1100)는 중앙 처리 유닛(예를 들어, CPU(Central Processing Unit, 중앙 처리 유닛), GPU(Graphics Processing Unit, 그래픽 처리 유닛) 및 FPGA(Field Programmable Gate Array, 필드 프로그래머블 논리 게이트 어레이) 등)(1101), RAM(Random-Access Memory, 랜덤 액세스 메모리)(1102)과 ROM(Read-Only Memory, 판독 전용 메모리)(1103)를 포함하는 시스템 메모리(1104), 및 시스템 메모리(1104)와 중앙 처리 유닛(1101)을 연결시키는 시스템 버스(1105)를 포함한다. 상기 컴퓨터 기기(1100)는 서버 내의 각 소자 사이 정보 전송을 돕는 기본 입력/출력 시스템(Input Output System, I/O 시스템)(1106)과 운영 체제(1113), 응용 프로그램(1114) 및 다른 프로그램 모듈(1115)을 저장하기 위한 대용량 저장 기기(1107)를 더 포함한다.
일부 실시예에 있어서, 상기 기본 입력/출력 시스템(1106)은 정보를 나타내기 위한 모니터(1108)와 사용가 정보를 입력하기 위한 마우스, 키보드와 같은 타입의 입력 기기(1109)를 포함한다. 여기서, 상기 모니터(1108)와 입력 기기(1109)는 모두 시스템 버스(1105)의 입력 출력 제어기(1110)를 통해 중앙 처리 유닛(1101)에 연결된다. 상기 기본 입력/출력 시스템(1106)은 또한, 입력 출력 제어기(1110)를 포함할 수 있으며, 키보드, 마우스, 또는 전자 터치펜과 같은 복수 개의 다른 기기로부터의 입력을 수신하고 처리하기 위한 것이다. 유사하게, 입력 출력 제어기(1110)는 스크린, 프린터에 출력하거나 다른 타입의 출력 기기를 더 제공한다.
일부 실시예에 있어서, 상기 대용량 저장 기기(1107)는 시스템 버스(1105)에 연결되는 대용량 저장 컨트롤러(도시되지 않음)를 통해 중앙 처리 유닛(1101)에 연결한다. 상기 대용량 저장 기기(1107) 및 그에 관련되는 컴퓨터 판독 가능한 매체는 컴퓨터 기기(1100)를 위해 비휘발성 저장을 제공한다. 다시 말해, 상기 대용량 저장 기기(1107)는 하드 디스크 또는 CD-ROM(Compact Disc Read-Only Memory, 판독 전용 컴팩트 디스크)와 같은 구동기 타입의 컴퓨터 판독 가능한 매체(도시되지 않음)를 포함할 수 있다.
일반적으로, 상기 컴퓨터 판독 가능한 매체는 컴퓨터 저장 매체와 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터 정보 등을 저장하기 위한 어떠한 방법 또는 기술로 구현된 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EPROM(Erasable Programmable Read-Only Memory, 소거 가능 프로그래머블 판독 전용 메모리), EEPROM(Electrically Erasable Programmable Read-Only Memory, 전기적 소거 가능 프로그래머블 판독 전용 메모리), 플래시 메모리 또는 다른 솔리드 저장 기술, CD-ROM, DVD(Digital Video Disc, 고밀도 디지털 비디오 광 디스크) 또는 다른 광학 메모리, 테이프 카트리지, 자기 카세트, 자기 디스크 메모리 또는 다른 자기 저장 기기를 포함한다. 물론, 본 분야의 기술자는 상기 컴퓨터 저장 매체가 상기의 몇 가지에 한정되지 않는 것을 알 수 있다. 상기 시스템 메모리(1104)와 대용량 저장 기기(1107)는 메모리로 통칭될 수 있다.
본 출원의 실시예에 따라, 상기 컴퓨터 기기(1100)는 또한 인터넷 등과 같은 네트워크를 통해 네트워크에서의 원격 컴퓨터에 연결되어 작동될 수 있다. 즉, 컴퓨터 기기(1100)는 상기 시스템 버스(1105)에 연결된 네트워크 인터페이스 유닛(1111)을 통해 네트워크(1112)에 연결할 수 있고, 또는, 네트워크 인터페이스 유닛(1116)을 사용하여 다른 타입의 네트워크 또는 원격 컴퓨터 시스템(도시되지 않음)에 연결할 수 있다.
상기 메모리는 컴퓨터 프로그램을 더 포함하고, 상기 컴퓨터 프로그램은 메모리에 저장되며, 하나 또는 하나 이상의 프로세서에 의해 실행되어, 상기 양자 회로 시뮬레이션 방법을 구현하도록 구성된다.
예시적 실시예에 있어서, 컴퓨터 기기를 더 제공하고, 상기 컴퓨터 기기는 상기 양자 회로 시뮬레이션 방법을 구현하기 위한 것이다. 일부 실시예에 있어서, 상기 컴퓨터 기기는 고전적 컴퓨터이다.
예시적 실시예에 있어서, 컴퓨터 판독 가능한 저장 매체를 더 제공하고, 상기 저장 매체에는 컴퓨터 프로그램이 저자오디며, 상기 컴퓨터 프로그램이 컴퓨터 기기의 프로세서에 의해 실행될 때 상기 양자 회로 시뮬레이션 방법을 구현한다.
일부 실시예에 있어서, 상기 컴퓨터 판독 가능한 저장 매체는, ROM(Read-Only Memory, 판독 전용 메모리), RAM(Random-Access Memory, 랜덤 액세스 메모리), SSD(Solid State Drives, 솔리드 스테이트 드라이브) 또는 광 디스크 등을 포함할 수 있다. 여기서, 랜덤 액세스 메모리는 ReRAM(Resistance Random Access Memory, 저항성 랜덤 액세스 메모리)과 DRAM(Dynamic Random Access Memory, 동적 랜덤 액세스 메모리)을 포함할 수 있다.
예시적 실시예에 있어서, 컴퓨터 프로그램 제품을 더 제공하고, 컴퓨터 프로그램 제품은 컴퓨터 프로그램을 포함하며, 컴퓨터 프로그램은 컴퓨터 판독 가능한 저장 매체에 저장된다. 컴퓨터 기기의 프로세서는 컴퓨터 판독 가능한 저장 매체로부터 컴퓨터 프로그램을 판독하고, 프로세서는 컴퓨터 프로그램을 실행하여, 컴퓨터 기기가 상기 양자 회로 시뮬레이션 방법을 실행하도록 한다.
이해해야 할 것은, 본 문에서 언급된 "복수 개"는 두 개 또는 두 개 이상을 의미한다. "및...중 적어도 하나"는, 연관 대상의 연관 관계를 설명하기 위한 것이며, 세 가지 관계가 존재할 수 있음을 의미하는데, 예를 들어, "A 및 B 중 적어도 하나"는, A가 단독적으로 존재하거나, A와 B가 동시에 존재하거나, B가 단독적으로 존재하는 세 가지 경우를 의미한다. 부호 "/"은 일반적으로 전후 연관 대상이 "또는"의 관계임을 의미한다. 또한, 본 문에서 설명된 단계 번호는, 다만 단계 사이의 가능한 실행 선후 순서를 예시적으로 나타낼 뿐이며, 일부 다른 실시예에 있어서, 상기 단계는 번호 순서에 따라 실행하지 않을 수도 있으며,두 개의 상이한 번호의 단계가 동시에 실행되거나 두 개의 상이한 번호의 단계가 그림에 도시된 것과 반대되는 순서에 따라 실행되며, 본 출원의 실시예는 이에 대해 한정하지 않는다.
이상의 내용은 다만 본 출원의 예시적 실시예일 뿐, 본 출원을 한정하려는 것이 아니며, 본 출원의 사상 및 원칙 내에서 이루어진 임의의 수정, 동등한 대체, 개진 등은, 본 출원의 보호 범위에 포함되어야 한다.

Claims (18)

  1. 양자 회로 시뮬레이션 방법으로서,
    상기 양자 회로 시뮬레이션 방법은 컴퓨터 기기에 의해 실행되고,
    상기 양자 회로 시뮬레이션 방법은,
    양자 회로를 시뮬레이션하기 위한 프리미티브 함수를 획득하고, 상기 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정하는 단계;
    상기 프리미티브 함수 및 상기 제1 입력 파라미터에 따라, 상기 프리미티브 함수를 타깃 함수로 전환시키는 단계 - 상기 타깃 함수의 입력 파라미터는 상기 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과임 - ;
    상기 타깃 함수의 입력 파라미터에 따라, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계; 및
    상기 타깃 함수에 대응되는 실행 결과에 기반하여, 상기 양자 회로 시뮬레이션을 실행하는 단계를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  2. 제1항에 있어서,
    상기 타깃 함수의 입력 파라미터에 따라, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계는,
    벡터 병렬화 방식을 채택하여 상기 타깃 함수의 입력 파라미터에 포함된 상기 전환된 후의 제1 입력 파라미터를 처리하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  3. 제2항에 있어서,
    상기 벡터 병렬화 방식을 채택하여 상기 타깃 함수의 입력 파라미터에 포함된 상기 전환된 후의 제1 입력 파라미터를 처리하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계는,
    벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계를 포함하고, 상기 벡터 명령어 세트는 프로세서가 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대해 상기 벡터 병렬화 처리를 수행하도록 제공하는 실행 가능한 명령어를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  4. 제3항에 있어서,
    상기 프리미티브 함수는 상기 양자 회로 시뮬레이션에서 입력 파동 함수를 처리하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로의 입력 파동 함수를 포함하며;
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계는,
    상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하는 단계 - 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로의 복수 개의 병렬화된 입력 파동 함수를 스플라이싱하여 얻은 결과임 - ; 및
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계 - 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 병렬화된 입력 파동 함수에 각각 대응되는 처리 결과를 포함함 - 를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  5. 제3항에 있어서,
    상기 프리미티브 함수는 상기 양자 회로 시뮬레이션에서 회로 변분 파라미터를 최적화하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로의 회로 변분 파라미터를 포함하며;
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계는,
    상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하는 단계 - 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로의 복수 개의 그룹의 병렬화된 회로 변분 파라미터를 스플라이싱하여 얻은 결과임 - ; 및
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계 - 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 그룹의 병렬화된 회로 변분 파라미터에 각각 대응되는 최적화 결과임 - 를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  6. 제3항에 있어서,
    상기 프리미티브 함수는 상기 양자 회로 시뮬레이션에서 회로 노이즈를 생성하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로의 회로 노이즈를 생성하기 위한 난수를 포함하며;
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계는,
    상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하는 단계 - 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로의 회로 노이즈를 생성하기 위한 복수 개의 그룹의 병렬화된 난수를 스플라이싱하여 얻은 결과임 - ; 및
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계 - 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 그룹의 병렬화된 난수에 각각 대응되는 노이즈 시뮬레이션 결과를 포함함 - 를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  7. 제3항에 있어서,
    상기 프리미티브 함수는 상기 양자 회로 시뮬레이션 중 회로 구조를 생성하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로의 회로 구조를 생성하기 위한 제어 파라미터를 포함하며, 상이한 제어 파라미터는 상이한 회로 구조를 생성하기 위한 것이고;
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계는,
    상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하는 단계 - 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로의 회로 구조를 생성하기 위한 복수 개의 그룹의 병렬화된 제어 파라미터를 스플라이싱하여 얻은 결과임 - ; 및
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계 - 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 그룹의 병렬화된 제어 파라미터에 각각 대응되는 회로 구조 생성 결과임 - 를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  8. 제3항에 있어서,
    상기 프리미티브 함수는 상기 양자 회로 시뮬레이션 중 회로 측정을 실행하는 단계를 구현하기 위한 것이고, 상기 제1 입력 파라미터는 타깃 양자 회로에 대한 회로 측정을 실행하기 위한 측정 파라미터를 포함하며, 상이한 측정 파라미터는 상이한 측정 결과를 생성하기 위한 것이고;
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계는,
    상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 획득하는 단계 - 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 타깃 양자 회로에 대한 회로 측정을 실행하기 위한 복수 개의 그룹의 병렬화된 측정 파라미터를 스플라이싱하여 얻은 결과임 - ; 및
    상기 벡터 명령어 세트를 채택하여 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서에 대한 벡터 병렬화 처리를 실행하여, 상기 타깃 함수에 대응되는 실행 결과를 얻는 단계 - 상기 타깃 함수에 대응되는 실행 결과는 상기 복수 개의 그룹의 병렬화된 측정 파라미터에 각각 대응되는 측정 결과임 - 를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  9. 제1항에 있어서,
    상기 타깃 함수는,
    상기 프리미티브 함수의 입력 파라미터가 병렬화할 필요가 없는 타깃 입력 파라미터를 더 포함하면, 상기 프리미티브 함수에서의 상기 제1 입력 파라미터를 상기 전환된 후의 제1 입력 파라미터로 수정하고, 상기 타깃 입력 파라미터를 유지하며, 상기 타깃 함수를 얻는 단계;
    또는,
    상기 프리미티브 함수의 입력 파라미터가 병렬화할 필요가 없는 타깃 입력 파라미터를 포함하지 않으면, 상기 프리미티브 함수에서의 상기 제1 입력 파라미터를 상기 전환된 후의 제1 입력 파라미터로 수정하고, 상기 타깃 함수를 얻는 단계를 통해 얻어지는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  10. 제1항에 있어서,
    상기 프리미티브 함수 및 상기 제1 입력 파라미터에 따라, 상기 프리미티브 함수를 타깃 함수로 전환시키는 단계는,
    함수 전환 인터페이스를 호출하여, 상기 함수 전환 인터페이스에 상기 프리미티브 함수와 제1 정보를 전송하는 단계 - 상기 제1 정보는 상기 프리미티브 함수에서 병렬화해야 하는 상기 제1 입력 파라미터를 지시하기 위한 것임 - ; 및
    상기 함수 전환 인터페이스를 통해 상기 제1 정보에 따라, 상기 프리미티브 함수를 상기 타깃 함수로 전환시키는 단계를 포함하는 것을 특징으로 하는 양자 회로 세뮬레이션 방법.
  11. 제10항에 있어서,
    상기 양자 회로 시뮬레이션 방법은,
    상기 함수 전환 인터페이스에 제2 정보를 전송하는 단계 - 상기 제2 정보는 상기 프리미티브 함수에서 도함수를 구해야 하는 제2 입력 파라미터를 지시하기 위한 것임 - ; 를 더 포함하고,
    상기 함수 전환 인터페이스를 통해 상기 제1 정보에 따라, 상기 프리미티브 함수를 상기 타깃 함수로 전환시키는 단계는,
    상기 함수 전환 인터페이스를 통해 상기 제1 정보와 상기 제2 정보를 통해, 상기 프리미티브 함수를 상기 타깃 함수로 전환시키는 단계 - 상기 타깃 함수는 또한, 상기 프리미티브 함수가 상기 제2 입력 파라미터에 대한 도함수 정보를 출력하기 위한 것임 - 를 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  12. 제11항에 있어서,
    상기 함수 전환 인터페이스는 제1 인터페이스와 제2 인터페이스를 포함하고,
    상기 제1 인터페이스는 상기 제1 정보에 따라, 상기 프리미티브 함수를 상기 타깃 함수로 전환시키기 위한 것이며;
    상기 제2 인터페이스는 상기 제1 정보와 상기 제2 정보에 따라, 상기 프리미티브 함수를 상기 타깃 함수로 전환시키기 위한 것임을 특징으로 하는 양자 회로 시뮬레이션 방법.
  13. 제10항에 있어서,
    상기 함수 전환 인터페이스는 기계 학습 라이브러리 위에 캡슐화된 애플리케이션 프로그래밍 인터페이스(API)이고, 상기 기계 학습 라이브러리는 상기 타깃 함수를 실행하기 위한 벡터 명령어 세트를 제공하는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서,
    타깃 차원에서 상기 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서에 대해 스플라이싱을 수행하여, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서를 얻고; 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서의, 상기 타깃 차원에서의 사이즈는, 상기 제1 입력 파라미터에 대응되는 병렬화된 텐서의 개수와 대응되는 것을 특징으로 하는 양자 회로 시뮬레이션 방법.
  15. 양자 회로 시뮬레이션 장치로서,
    양자 회로를 시뮬레이션하기 위한 프리미티브 함수를 획득하고, 상기 프리미티브 함수에서 병렬화해야 하는 제1 입력 파라미터를 결정하기 위한 함수 획득 모듈;
    상기 프리미티브 함수 및 상기 제1 입력 파라미터에 따라, 상기 프리미티브 함수를 타깃 함수로 전환시키기 위한 함수 전환 모듈 - 상기 타깃 함수의 입력 파라미터는 상기 제1 입력 파라미터에 대응되는 전환된 후의 제1 입력 파라미터를 포함하고, 상기 전환된 후의 제1 입력 파라미터에 대응되는 텐서는, 상기 제1 입력 파라미터에 대응되는 복수 개의 병렬화된 텐서를 스플라이싱하여 얻은 결과임 - ;
    상기 타깃 함수의 입력 파라미터에 따라, 상기 타깃 함수에 대응되는 실행 결과를 얻기 위한 함수 실행 모듈; 및
    상기 타깃 함수에 대응되는 실행 결과에 기반하여, 상기 양자 회로 시뮬레이션을 실행하기 위한 회로 시뮬레이션 모듈을 포함하는 것을 특징으로 하는 양자 회로 시뮬레이션 장치.
  16. 컴퓨터 기기로서,
    상기 컴퓨터 기기는 프로세서와 메모리를 포함하고, 상기 메모리에는 컴퓨터 프로그램이 저장되며, 상기 컴퓨터 프로그램은 상기 프로세서에 의해 로딩 및 실행되어 상기 제1항 내지 제14항 중 어느 한 항에 따른 양자 회로 시뮬레이션 방법을 구현하는 것을 특징으로 하는 컴퓨터 기기.
  17. 컴퓨터 판독 가능한 저장 매체로서,
    상기 저장 매체에는 컴퓨터 프로그램이 저장되고, 상기 컴퓨터 프로그램은 프로세서에 의해 로딩 및 실행되어 제1항 내지 제14항 중 어느 한 항에 따른 양자 회로 시뮬레이션 방법을 구현하는 것을 특징으로 하는 컴퓨터 판독 가능한 저장 매체.
  18. 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터 프로그램 제품은 컴퓨터 프로그램을 포함하고, 상기 컴퓨터 프로그램은 컴퓨터 판독 가능한 저장 매체에 저장되며, 프로세서는 상기 컴퓨터 판독 가능한 저장 매체로부터 상기 컴퓨터 프로그램을 판독 및 실행하여, 제1항 내지 제14항 중 어느 한 항에 따른 양자 회로 시뮬레이션 방법을 구현하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1020247006424A 2022-01-24 2022-11-22 양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품 KR20240038064A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202210077584.7A CN116523053A (zh) 2022-01-24 2022-01-24 量子线路模拟方法、装置、设备、存储介质及程序产品
CN202210077584.7 2022-01-24
PCT/CN2022/133406 WO2023138202A1 (zh) 2022-01-24 2022-11-22 量子线路模拟方法、装置、设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
KR20240038064A true KR20240038064A (ko) 2024-03-22

Family

ID=87347739

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247006424A KR20240038064A (ko) 2022-01-24 2022-11-22 양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품

Country Status (5)

Country Link
US (1) US20230289640A1 (ko)
JP (1) JP2024508076A (ko)
KR (1) KR20240038064A (ko)
CN (1) CN116523053A (ko)
WO (1) WO2023138202A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117932980B (zh) * 2024-03-22 2024-06-11 芯瑞微(上海)电子科技有限公司 基于指令集架构搭建的多进程工业设计软件仿真方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3064380B1 (fr) * 2017-03-24 2019-04-19 Bull S.A.S. Procede de simulation, sur un ordinateur classique, d'un circuit quantique
WO2019241570A1 (en) * 2018-06-13 2019-12-19 Rigetti & Co., Inc. Quantum virtual machine for simulation of a quantum processing system
CN111915011B (zh) * 2019-05-07 2023-11-03 本源量子计算科技(合肥)股份有限公司 一种单振幅量子计算模拟方法
WO2021071379A1 (en) * 2019-10-11 2021-04-15 Huawei Technologies Co., Ltd. Quantum circuit simulation
US11748649B2 (en) * 2019-12-13 2023-09-05 Intel Corporation Apparatus and method for specifying quantum operation parallelism for a quantum control processor
CN111738448B (zh) * 2020-06-23 2021-09-28 北京百度网讯科技有限公司 量子线路模拟方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20230289640A1 (en) 2023-09-14
WO2023138202A1 (zh) 2023-07-27
JP2024508076A (ja) 2024-02-22
CN116523053A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
Broughton et al. Tensorflow quantum: A software framework for quantum machine learning
Gad Pygad: An intuitive genetic algorithm python library
Wang et al. Quantumnas: Noise-adaptive search for robust quantum circuits
Khammassi et al. QX: A high-performance quantum computer simulation platform
Kim et al. Fault-tolerant resource estimate for quantum chemical simulations: Case study on Li-ion battery electrolyte molecules
Spector Automatic Quantum Computer Programming: a genetic programming approach
McCaskey et al. Validating quantum-classical programming models with tensor network simulations
Kusyk et al. Survey on quantum circuit compilation for noisy intermediate-scale quantum computers: Artificial intelligence to heuristics
US11288589B1 (en) Quantum circuit modeling
Wille et al. JKQ: JKU tools for quantum computing
Nguyen et al. Tensor network quantum virtual machine for simulating quantum circuits at exascale
Isakov et al. Simulations of quantum circuits with approximate noise using qsim and cirq
KR20240038064A (ko) 양자 회로 시뮬레이션 방법, 장치, 기기, 저장 매체 및 프로그램 제품
Chaudhary et al. A software simulator for noisy quantum circuits
Rojek et al. Performance and scalability analysis of AI-accelerated CFD simulations across various computing platforms
Mishra et al. Compoff: A compiler cost model using machine learning to predict the cost of openmp offloading
Gulapa et al. Websnapse reloaded: The next-generation spiking neural p system visual simulator using client-server architecture
Pakin Targeting classical code to a quantum annealer
Li et al. Ensemble learning methodologies to improve core power distribution abnormal detectability
Kashif et al. Qiskit as a simulation platform for measurement-based quantum computation
JP2002042104A (ja) 量子ソフトコンピューティングを使用した制御システムと制御方法
US20240070512A1 (en) Quantum computing system and method
Ataei et al. XLB: A differentiable massively parallel lattice Boltzmann library in Python
Kłosko et al. High performance evolutionary computation with tensor-based acceleration
Singh et al. Using graph neural networks to model the performance of deep neural networks

Legal Events

Date Code Title Description
A201 Request for examination