WO2023068464A1 - 저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 그 동작 방법 - Google Patents

저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 그 동작 방법 Download PDF

Info

Publication number
WO2023068464A1
WO2023068464A1 PCT/KR2022/005230 KR2022005230W WO2023068464A1 WO 2023068464 A1 WO2023068464 A1 WO 2023068464A1 KR 2022005230 W KR2022005230 W KR 2022005230W WO 2023068464 A1 WO2023068464 A1 WO 2023068464A1
Authority
WO
WIPO (PCT)
Prior art keywords
quantum circuit
quantum
memory
permutation
simulating
Prior art date
Application number
PCT/KR2022/005230
Other languages
English (en)
French (fr)
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
Priority claimed from KR1020220043556A external-priority patent/KR20230057246A/ko
Application filed by 서울대학교산학협력단 filed Critical 서울대학교산학협력단
Priority to CN202280070490.5A priority Critical patent/CN118140224A/zh
Priority to EP22883695.3A priority patent/EP4418162A1/en
Publication of WO2023068464A1 publication Critical patent/WO2023068464A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data

Definitions

  • Quantum computing is a computing paradigm using quantum mechanical phenomena such as quantum superposition and entanglement.
  • the smallest unit of quantum computing is a qubit, which, unlike a bit in classical computing, can represent a superposition of 0 and 1.
  • the computational model of quantum computing is called a quantum circuit, and a quantum circuit is a set of N qubits and a series of quantum gates acting on these qubits.
  • a state expressed by N qubits can be represented by a total of 2 n amplitudes. Each amplitude is represented by a complex number, and can generally be represented by 16 bytes of memory. Therefore, 2 (N+4) bytes of storage space are required to simulate a quantum circuit composed of N qubits. Exponentially increasing memory requirements are the biggest barrier to simulating quantum circuits.
  • a system for simulating a quantum circuit in units of a plurality of partial circuits in a host system connected to a storage system including a plurality of storage devices may be provided.
  • a storage device such as HDD, SSD, NVMe, etc., which is inexpensive and has a large storage capacity compared to memory, secures the storage space required for quantum circuit simulation and simulates quantum circuits within reasonable cost and time.
  • a method may be provided.
  • an optimized simulation method may be provided by performing simulation in units of sub-circuits minimizing the number of memory accesses, performing a permutation operation to maximize memory bandwidth in a three-step operation, and applying a prefetching technique.
  • a quantum circuit simulation device includes a storage system including one or more storage devices; and a host system connected to the storage system to simulate a quantum circuit, wherein the quantum circuit stored in the storage system is divided into one or more sub-circuits, so that the host system sequentially converts the one or more sub-circuits into a main circuit. It can be simulated in memory.
  • a method for simulating a quantum circuit includes dividing an input quantum circuit stored in a storage device into one or more partial circuits, and sequentially reading the one or more partial circuits from the storage device and simulating them on a main memory.
  • DRAM used in the prior art is not only 297 times more expensive than HDD on a per-GB basis, but even the world's most powerful supercomputers in 2021 cannot simulate 50-qubit quantum circuits.
  • a quantum circuit having a size of 50 qubits may be simulated using only 16 storage systems composed of 80x16TB HDDs.
  • a quantum circuit simulation system and optimization method using a storage device according to embodiments have effects of having scalability and economy at the same time.
  • FIG. 1 is a block diagram of a quantum circuit simulation device using a storage device according to an embodiment.
  • FIG. 2 is a flowchart of a quantum circuit simulation method using a storage device according to an embodiment.
  • 3 is an example of partial circuits obtained by dividing an input quantum circuit according to an embodiment.
  • FIG. 4 is a flowchart of a method of dividing an input quantum circuit according to an embodiment.
  • FIG. 5 is a flowchart of a method of simulating a plurality of partial circuits according to an embodiment.
  • FIG. 6 is an example of data representation simulating a plurality of partial circuits according to an embodiment.
  • FIG. 7 is an example implementation of a storage device system according to an embodiment.
  • the quantum circuit simulation device 100 may include a host system 110 and a storage device system 120 .
  • the host system 110 is a system in which actual calculations are executed, and includes a CPU, a main memory, and a heterogeneous system including a GPU.
  • the storage device system 120 is a system composed of a plurality of storage devices, and the storage devices are, for example, HDD, SSD, NVMe, and the like.
  • the storage system 120 may be connected to the host system 110 through a RAID (Redundant Array of Independent Disks; RAID) card 130 .
  • the RAID card 130 is for connecting multiple arrays of independent disks with a host CPU, and can operate mainly by combining them with PCIe slots.
  • PCIe PCI express
  • PCIe refers to a serial interface for input and output.
  • the quantum circuit simulation device 100 receives a quantum circuit as input data and divides it into several sub-circuits through a sub-circuit partitioning process. The quantum circuit simulation device 100 sequentially executes all partial circuits in units of each partial circuit.
  • the quantum circuit simulation apparatus 100 may express the state of the quantum system (superposition and entanglement of qubits) as a probability amplitude. To represent an N-qubit quantum circuit, the quantum circuit simulation device 100 needs to store 2N probability amplitude data, and each quantum gate operation can be viewed as an update of 2N probability amplitude data.
  • the quantum circuit simulation device 100 includes a storage system 120 including one or more storage devices and a host system 110 connected to the storage system 120 to simulate a quantum circuit, , By dividing the quantum circuit stored in the storage system 120 into one or more sub-circuits, the host system 110 can sequentially simulate the one or more sub-circuits on the main memory.
  • the host system accesses the storage system in which each probability amplitude data necessary for each simulation for each of one or more partial circuits is successively stored, and stores each probability amplitude data in the main memory. and continuously write the probability amplitude data to the storage system on the main memory in which probability amplitude data, which is a simulation result of each of the one or more partial circuits, is continuously stored.
  • the host system may divide the input quantum circuit into as few sub-circuits as possible.
  • the host system 110 of the quantum circuit simulation device 100 sequentially checks the quantum gates of the input quantum circuit using a heuristic algorithm based on the parameter M set according to the size of the main memory to partially circuits can be created.
  • the host system 110 of the quantum circuit simulation apparatus 100 performs a permutation operation on each of one or more partial circuits as a first-step in-memory permutation calculation, a second-step block permutation calculation, and a third-step in-memory permutation calculation. It can be converted and executed sequentially.
  • the first-step in-memory permutation operation and the third-step in-memory permutation operation may change the data layout on the main memory
  • the second-step block permutation operation may change the data layout on the storage device.
  • the quantum circuit simulation apparatus 100 transmits probability amplitude data for the next partial circuit to the storage system during the operation of the partial circuit currently undergoing memory operation. It can be accessed once and successively read into the main memory in advance before simulation of the next partial circuit.
  • the storage system 120 may include any one of HDD, SSD, or NVMe.
  • FIG. 2 is a flowchart of a quantum circuit simulation method using a storage device according to an embodiment.
  • the quantum circuit simulation device 100 may receive a first quantum circuit.
  • the first quantum circuit is a set of N qubits and a series of quantum gates acting on these qubits.
  • a state expressed by N qubits can be represented by a total of 2 N amplitudes, and each amplitude is expressed as a complex number and is generally represented by 16 bytes of memory.
  • the first quantum circuit can be represented by 2 N probability amplitude data, and each quantum gate operation can be represented by an update of 2 N probability amplitude data.
  • 2 (N+4) bytes of storage are required.
  • the quantum circuit simulation apparatus 100 may divide the first quantum circuit into one or more partial circuits using the parameter M. Partial circuits have two characteristics. First, the gates in each subcircuit can only be applied to M consecutive qubits from the beginning. At this time, the M value is given as a parameter, and 2 (M+4) is set to a value smaller than the total memory (DRAM) size of the host system. Second, each subcircuit is assigned one permutation, and the gates are repositioned according to the order of this permutation.
  • DRAM total memory
  • each subcircuit is (q 4 q 3 q 2 q 1 q 0 ), (q 1 q 2 q 0 q 4 q 3 ), (q 3 q 1 q 4 q 2 q 0 ).
  • the purpose of dividing the input quantum circuit into sub-circuits is to reduce the number (or size) of accesses to storage during simulation execution.
  • a quantum circuit given as an input is divided into a plurality of sub-circuits, each sub-circuit may contain only executable quantum gates. When implementing subcircuits containing only executable quantum gates, all quantum gate operations in each subcircuit can be executed without additional storage access.
  • the quantum circuit simulation apparatus 100 may use a heuristic algorithm to divide an input quantum circuit into sub-circuits, so that qubits that are likely to be used next are located below the quantum circuit.
  • a heuristic algorithm to divide an input quantum circuit into sub-circuits, so that qubits that are likely to be used next are located below the quantum circuit.
  • one or more algorithms for dividing an input quantum circuit into sub-circuits that are efficient execution units may be implemented differently depending on the characteristics of the quantum circuit simulation apparatus 100.
  • the quantum circuit simulation apparatus 100 may sequentially simulate one or more partial circuits.
  • the quantum circuit simulation device 100 accesses the storage system in which the probability amplitude data for the partial circuits are continuously stored in order to simulate the partial circuits only once, and reads the probability amplitude data sequentially onto the main memory. .
  • the size of a unit read from the storage device may be as small as at least 16 bytes, and in this case, a problem of insufficient utilization of the bandwidth of the storage device may occur.
  • the quantum circuit simulation apparatus 100 may apply a 3-step permutation operation to fix a minimum unit of an access operation for all storage devices to be relatively large.
  • the three-step permutation operation divides one permutation operation into three steps and executes it. At this time, the permutation is divided into two in-memory permutation and block permutation, and is executed in the order of in-memory permutation-block permutation-in-memory permutation.
  • In-memory permutation refers to an operation that changes the data layout in memory after reading data into main memory.
  • Block permutation refers to changing the layout of data on a storage device.
  • the quantum circuit simulation apparatus 100 may continuously write probability amplitude data continuously stored in the main memory to a storage device with only one access according to simulation results for each partial circuit.
  • an input quantum circuit may be divided into sub-circuits that are units for efficient execution.
  • the purpose of sub-circuit partitioning is to reduce access to storage.
  • a memory access pattern is determined according to the application position of each quantum gate in a quantum circuit. For example, a quantum gate applied to the first qubit requires reading two data located at a distance of 16 bytes at the same time, and a quantum gate applied to the second qubit below simultaneously accesses two data located at a distance of 32 bytes from the bottom. Should be.
  • a quantum gate applied to the kth qubit from the bottom requires simultaneous two data located at a distance of 2k +3 bytes.
  • the quantum circuit simulation apparatus 100 sets a parameter M according to the size of the main memory to efficiently execute the input quantum circuit, divides the input quantum circuit into one or more sub-circuits using M, Simulation can be run on a partial circuit basis.
  • the quantum circuit simulation apparatus 100 may divide the input quantum circuit 310 into three sub-circuits 320, 330, and 340 using a heuristic algorithm.
  • the quantum circuit simulation device 100 considers the size of the main memory (DRAM) of the host system 110 in order to divide the circuit into sub-circuits of the maximum size that can be executed without additional access of a separate storage system 120.
  • M can be set.
  • parameter M can be set to be 2 (M+4) smaller than the size of the main memory.
  • M 4.
  • the gate can only be applied to M consecutive qubits from the beginning.
  • the gate applied to each subcircuit can be applied only to up to 4 (M size) qubits from the bottom, and is not applied to the qubit located at the top.
  • Subcircuits partitioned using parameter M contain only executable quantum gates and do not require access to additional storage during execution.
  • the quantum circuit simulation device 100 performs simulation in units of partial circuits, so it takes one operation to read only necessary data pairs from the storage device and one operation to store the calculated result value back to the storage device.
  • the quantum circuit simulation apparatus 100 may assign a permutation to each of the divided partial circuits, and relocate the gates according to the order of the permutation as shown in FIG. 3 .
  • the input quantum circuits are allocated in the order of (q 4 q 3 q 2 q 1 q 0 ), and the divided first subcircuit 320 is in the order of (q 4 q 3 q 2 q 1 q 0 ), the second part If the circuit 330 is allocated in the order of (q 1 q 2 q 0 q 4 q 3 ) and the third sub-circuit 340 is allocated in the order of (q 3 q 1 q 4 q 2 q 0 ), the gate position is Changed.
  • the quantum circuit simulation apparatus 100 may divide partial circuits according to the size of the main memory. In various embodiments, the total number of storage device accesses required for quantum circuit simulation of the quantum circuit simulation apparatus 100 is proportional to the number of partial circuits. For high-performance simulation, a small number of subcircuits must be created. Thus, an algorithm to divide a partial circuit is a difficult problem, and there may be more than one. In various embodiments, the quantum circuit simulation apparatus 100 may generate as few partial circuits as possible for an input quantum circuit.
  • the quantum circuit simulation apparatus 100 performs a heuristic
  • the input quantum circuit can be divided into sub-circuits containing only executable gates.
  • a method of dividing the input quantum circuit of FIG. 3 by way of example will be described.
  • the quantum circuit simulation apparatus 100 may align quantum gates.
  • the quantum circuit simulation device 100 can arrange the qubits to which gates are applied so that the smaller number comes first, and when two different gates are applied to the same qubits, they are arranged to satisfy the order in the input quantum circuit. can
  • the quantum circuit simulation apparatus 100 may initialize the current permutation variable to the same identity permutation.
  • the same permutation of the input quantum circuit of FIG. 3 is (q 4 q 3 q 2 q 1 q 0 ).
  • the quantum circuit simulation apparatus 100 may sequentially search the quantum gate sorted list for a gate in which the number of qubits to which the quantum gate is applied is greater than the parameter M. If there is no gate greater than the parameter M, the quantum circuit simulation apparatus 100 may make the entire gate set into one partial circuit and terminate the algorithm. At this time, the quantum circuit simulation apparatus 100 assigns the permutation stored in the current permutation variable to the partial circuit.
  • the quantum circuit simulation apparatus 100 may generate a partial circuit including all gates located between the first quantum gate and the searched quantum gate. However, searched quantum gates are not included.
  • the permutation stored in the current permutation variable is assigned to the generated partial circuit, and the permutation obtained according to the heuristic permutation generation method can be stored in the current permutation variable.
  • the heuristic permutation generation method can be defined as the following steps A, B, and C.
  • step B the searched quantum gate and the quantum gates located behind it are examined one by one. At this time, if the qubit to which each quantum gate is applied is local, the local count of the corresponding qubit is increased by 1, and if it is non-local, the non-local count of the corresponding qubit is increased by 1.
  • the local and non-local count values of qubits to which the searched quantum gate is applied are set to infinity.
  • step C the permutations are returned by sorting the qubits based on the counts found in step B.
  • the order of qubits is positioned to the right as the non-local count increases, and in the case of the same case, as the local count increases. That is, it is located below on the quantum circuit.
  • step S450 the quantum circuit simulation apparatus 100 may repeat steps S430 to S430 while the aligned quantum gates remain.
  • the quantum circuit simulation apparatus 100 may perform simulation according to the following steps for each of a plurality of partial circuits obtained by dividing the input quantum circuit.
  • the quantum circuit simulation apparatus 100 may continuously read probability amplitude data for the first partial circuit.
  • the quantum circuit simulation device 100 continuously reads 2 (M+4) bytes of probability amplitude data for the first subcircuit continuously stored in the storage device from the storage device system 120 to the main memory. (read) can.
  • the exact location where each sub-circuit's probability amplitude data is stored is determined by the permutation assigned to that sub-circuit. Given an arbitrary permutation, the information (ie, amplitude) of an arbitrary qubit The location where is stored is as shown in Equation 1.
  • Equation 1 is in the given permutation Indicates the number position from the right. For example, permutation About , are 0 and 3, respectively. Although it is possible to know all the positional information of each qubit for an arbitrary permutation through Equation 1, it is inefficient to simply read or write a value using it. This is because the unit size read from the storage device may be very small (at least 16 bytes) depending on the permutation, and in this case, a problem of not fully utilizing the bandwidth of the storage device occurs. In one embodiment, to solve this problem, a quantum circuit is simulated according to a 3-step permutation method.
  • step S520 the quantum circuit simulation apparatus 100 performs the permutation operation on the first partial circuit according to the three-step permutation operation.
  • the three-step permutation operation is performed by dividing one permutation operation into three steps.
  • the permutation is divided into two in-memory permutation and block permutation, and is executed in the order of in-memory permutation-block permutation-in-memory permutation.
  • In-memory permutation refers to an operation that changes the data layout in memory after reading data into main memory.
  • Arbitrary in-memory permutation refers to a permutation in which only local qubits among the permutations change.
  • Any permutation can be easily converted into a three-level permutation.
  • the permutation of is transformed as follows.
  • step S521 a first-stage in-memory permutation operation obtained by converting the permutation of the first sub-circuit is executed, in step S522, a second-stage block permutation operation obtained by converting the permutation of the first sub-circuit is executed, and in step S523, a second-stage block permutation operation is performed. It is possible to perform a three-step in-memory permutation operation that transforms a permutation of a one-part circuit. If the 3-step permutation operation is used, the minimum unit of the access operation for all storage devices can be fixed to , so the bandwidth of the storage device can be utilized much better than simple access. On the other hand, it takes an extra memory operation for the two in-memory permutations, but it's acceptable because it's a memory access and much faster than a storage access.
  • the quantum circuit simulation apparatus 100 may apply the gate operations of the subcircuit to the probability amplitude data of 2 (M+4) bytes loaded in the main memory.
  • gate operations arbitrary variations are possible. For example, calculations may be performed using a GPU instead of a CPU, and in this case, communication between the main memory and the GPU memory may be added.
  • the divided partial circuits are simulated by the quantum circuit simulator sequentially (eg, in the order of partial circuit 1, partial circuit 2, and partial circuit 3).
  • the quantum circuit simulator knows all the exact position values of the probability amplitude data for the partial circuit to be used later, and applies a prefetching technique to load them in the main memory in advance before using them.
  • the probability amplitude data to be used next is loaded in the main memory in advance, resulting in an operation-communication overlapping effect, thereby efficiently minimizing the overall execution time.
  • step S530 the quantum circuit simulation device 100 continuously writes 2 (M+4) bytes of probability amplitude data continuously stored in the main memory as the result of the operation for the first partial circuit to the storage system 120. (write) can.
  • the quantum circuit simulation apparatus 100 may sequentially and repeatedly perform steps S510 to S530 for the next partial circuit.
  • FIG. 6 is an example of data representation simulating a plurality of partial circuits according to an embodiment.
  • the change in data layout by applying the three-step permutation operation to each of the three sub-circuits 320, 330, and 340 obtained by dividing the input quantum circuit 310 of FIG. 3 is shown.
  • the first partial circuit 320 starts from the same permutation and shows that the data layout changes in the order of 1st-level in-memory permutation, 2nd-level block permutation, and 3rd-level in-memory permutation (1234). Access to the storage device (storage write/read) is performed before the block permutation in step 2. Next, it is shown that the data layout changes as the three-step permutation operation for the second partial circuit 33 is executed (5678).
  • the storage device system may include a storage device that provides high capacity at a lower cost than DRAM, and may include one or more storage devices.
  • a storage device system 120 is configured using an HDD.
  • the quantum circuit simulation device 100 may connect the host system 110 and the storage system 120 through a RAID card 130 .
  • the RAID card 130 may be connected to a host system through a PCIe slot, and may be connected to an HDD storage device supporting SATA3 using a SAS expansion card.
  • the embodiments described above may be implemented as hardware components, software components, and/or a combination of hardware components and software components.
  • the devices, methods, and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA). array), programmable logic units (PLUs), microprocessors, or any other device capable of executing and responding to instructions.
  • a processing device may run an operating system (OS) and one or more software applications running on the operating system.
  • a processing device may also access, store, manipulate, process, and generate data in response to execution of software.
  • OS operating system
  • a processing device may also access, store, manipulate, process, and generate data in response to execution of software.
  • the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that it can include.
  • a processing device may include a plurality of processors or a processor and a controller. Other processing configurations are also possible, such as parallel processors.
  • Software may include a computer program, code, instructions, or a combination of one or more of the foregoing, which configures a processing device to operate as desired or processes independently or collectively. You can command the device.
  • Software and/or data may be any tangible machine, component, physical device, virtual equipment, computer storage medium or device, intended to be interpreted by or provide instructions or data to a processing device. , or may be permanently or temporarily embodied in a transmitted signal wave.
  • Software may be distributed on networked computer systems and stored or executed in a distributed manner.
  • Software and data may be stored on one or more computer readable media.
  • the method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium.
  • the computer readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • Program instructions recorded on the medium may be specially designed and configured for the embodiment, or may be known and usable to those skilled in computer software.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks.
  • - includes hardware devices specially configured to store and execute program instructions, such as magneto-optical media, and ROM, RAM, flash memory, and the like.
  • program instructions include high-level language codes that can be executed by a computer using an interpreter, as well as machine language codes such as those produced by a compiler.
  • the hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Human Computer Interaction (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 개시에 따른 양자 회로 시뮬레이션 장치는, 하나 이상의 저장장치를 포함하는 저장장치 시스템 및 상기 저장장치 시스템과 연결되어 양자 회로를 시뮬레이션하는 호스트 시스템을 포함하고, 상기 저장장치 시스템에 저장된 상기 양자 회로를 하나 이상의 부분 회로로 분할하여, 상기 호스트 시스템이 상기 하나 이상의 부분 회로를 순차로 메인 메모리 상에서 시뮬레이션 할 수 있다.

Description

저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 그 동작 방법
양자 회로 시뮬레이션 기술에 연관되며, 보다 구체적으로는 고전적 컴퓨터(classical computers)를 이용해 양자 회로로 기술된 알고리즘을 실행하는 기술에 연관된다.
양자 컴퓨팅은 양자 중첩(superposition) 및 얽힘(entanglement) 등의 양자 역학적 현상을 이용한 컴퓨팅 패러다임이다. 양자 컴퓨팅의 최소 단위는 큐비트(qubit)로, 고전적 컴퓨팅의 비트(bit)와 달리 0과 1 둥의 중첩 상태를 나타낼 수 있다. 양자 컴퓨팅의 계산 모델은 양자 회로(quantum circuit)라 하고, 양자 회로는 N개의 큐비트와 이 큐비드들에 작용하는 일련의 양자 게이트(quantum gate) 집합이다.
양자 정보를 고전적 컴퓨터에서 나타내기 위해서는 지수적으로 증가하는 메모리가 요구된다. N개의 큐비트가 표현하는 상태는 총 2n개의 진폭(amplitude)으로 나타낼 수 있다. 각 진폭은 복소수로 표현되며, 일반적으로 16바이트의 메모리로 나타낼 수 있다. 따라서 N개의 큐비트로 이루어진 양자 회로를 시뮬레이션하기 위해서는 2(N+4) 바이트의 저장 공간이 필요하다. 지수적으로 증가하는 메모리 요구량은 양자 회로 시뮬레이션의 가장 큰 장벽이다.
기존 양자 회로 시뮬레이션 기술은 막대한 메모리 요구량을 감당하기 위해 수천~수만 노드 규모의 슈퍼컴퓨터를 사용한다. 그러나 이러한 기술은 현재 가장 큰 슈퍼 컴퓨터를 사용한다고 하더라도 50 큐비트 이상의 양자 회로 시뮬레이션이 어렵다. 뿐만 아니라, 이러한 슈퍼컴퓨터를 사용하는 것은 막대한 비용을 요구하고, 일반 사용자들은 접근조차 어렵다는 단점을 지닌다.
실시 예들에 따르면, 복수 개의 저장장치를 포함하는 스토리지 시스템과 연결된 호스트 시스템에서 양자 회로를 복수 개의 부분 회로 단위로 시뮬레이션하는 시스템이 제공될 수 있다.
실시 예들에 따르면, 메모리 대비 저렴하고 저장용량이 큰 예를 들어 HDD, SSD, NVMe 등의 저장장치를 이용하여 양자 회로 시뮬레이션을 위해 필요한 저장 공간을 확보하고, 합리적인 비용과 시간 내에 양자 회로를 시뮬레이션하는 방법이 제공될 수 있다.
실시 예들에 따르면, 메모리 접근 횟수를 최소화하는 부분 회로 단위로 시뮬레이션하고, 메모리 대역폭을 최대 활용하기 위한 순열 연산을 3단계 연산으로 실행하고, 프리페칭 기법을 적용하여 최적화된 시뮬레이션 방법이 제공될 수 있다.
전술한 것 외의 다른 측면, 특징, 및 이점이 이하의 도면, 청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
실시 예의 일 측면에 따른 양자 회로 시뮬레이션 장치는, 하나 이상의 저장장치를 포함하는 저장장치 시스템; 및 상기 저장장치 시스템과 연결되어 양자 회로를 시뮬레이션하는 호스트 시스템을 포함하고, 상기 저장장치 시스템에 저장된 상기 양자 회로를 하나 이상의 부분 회로로 분할하여, 상기 호스트 시스템이 상기 하나 이상의 부분 회로를 순차로 메인 메모리 상에서 시뮬레이션할 수 있다.
다른 일 측면에 따른 양자 회로를 시뮬레이션 하는 방법은, 저장장치에 저장된 입력 양자 회로를 하나 이상의 부분 회로로 분할하는 단계 및 상기 하나 이상의 부분 회로를 순차로 상기 저장장치로부터 읽어들여 메인 메모리 상에서 시뮬레이션하는 단계를 포함할 수 있다.
종래 기술에서 사용되는 DRAM은 GB당 비용을 기준으로 HDD보다 297배 비쌀 뿐만 아니라, 2021년 세계 최고의 성능을 지닌 슈퍼 컴퓨터의 경우에도 50 큐비트급 양자 회로 시뮬레이션이 불가능하다. 그러나, 본 개시의 실시 예들에 따르면, 80x 16TB HDD로 구성된 저장장치 시스템을 16개만을 사용하여 50 큐비트 크기의 양자 회로를 시뮬레이션할 수 있다. 실시 예들에 따른 저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 최적화 방법은 확장성(scalability)와 경제성을 동시에 갖는 효과가 있다.
도 1은 일 실시 예에 따른 저장장치를 이용한 양자 회로 시뮬레이션 장치의 블록도이다.
도 2는 일 실시 예에 따른 저장장치를 이용한 양자 회로 시뮬레이션 방법의 순서도이다.
도 3은 일 실시 예에서 입력 양자 회로를 분할한 부분 회로들의 예시이다.
도 4는 일 실시 예에 따른 입력 양자 회로를 분할하는 방법의 순서도이다.
도 5는 일 실시 예에 따른 복수 개의 부분 회로를 시뮬레이션하는 방법의 순서도이다.
도 6은 일 실시 예에 따른 복수 개의 부분 회로를 시뮬레이션하는 데이터 표현의 예시이다.
도 7은 일 실시 예에 따른 저장장치 시스템의 구현 예시이다.
이하에서, 실시 예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 이러한 실시 예들에 의해 권리 범위가 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명에서 사용되는 용어는, 연관되는 기술 분야에서 일반적이고 보편적인 것으로 선택되었으나, 기술의 발달 및/또는 변화, 관례 기술자의 선호 등에 따라 다른 용어가 있을 수 있다. 따라서, 아래 설명에서 사용되는 용어는 기술적 사상을 한정하는 것으로 이해되어서는 안 되며, 실시 예들을 설명하기 위한 예시적 용어로 이해되어야 한다.
또한 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세한 그 의미를 기재할 것이다. 따라서 아래 설명에서 사용되는 용어는 단순한 용어의 명칭이 아닌 그 용어가 가지는 의미와 명세서 전반에 걸친 내용을 토대로 이해되어야 한다.
도 1은 일 실시 예에 따른 저장장치를 이용한 양자 회로 시뮬레이션 장치의 블록도이다. 양자 회로 시뮬레이션 장치(100)는 호스트 시스템(110)과 저장장치 시스템(120)을 포함할 수 있다. 호스트 시스템(110)은 실제 연산이 실행되는 시스템으로 CPU, 메인 메모리를 가지고 GPU를 포함하는 이종 시스템을 망라한다. 저장장치 시스템(120)은 복수 개의 저장장치로 구성된 시스템으로, 저장장치는 예를 들어, HDD, SSD, NVMe 등이다. 저장장치 시스템(120)은 호스트 시스템(110)과 RAID(Redundant Array of Independent Disks; RAID) 카드(130)를 매개로 연결될 수 있다. RAID 카드(130)는 복수 배열 독립 디스크를 호스트 CPU와 연결하기 위한 것으로, 주로 PCIe 슬롯에 결합하여 동작할 수 있다. PCIe(PCI express)는 입출력을 위한 직렬 구조의 인터페이스를 말한다.
양자 회로 시뮬레이션 장치(100)는 입력 데이터로 양자 회로를 입력 받아 부분 회로 분할(sub-circuit partitioning) 과정을 통해 여러 개의 부분 회로로 분할한다. 양자 회로 시뮬레이션 장치(100)는 각 부분 회로 단위로 모든 부분 회로를 순차적으로 실행한다. 양자 회로 시뮬레이션 장치(100)는 양자 시스템의 상태(큐비트들의 중첩 및 얽힘 상태)를 확률 진폭(probability amplitude)으로 표현할 수 있다. N 큐비트 양자 회로를 표현하기 위해서는 양자 회로 시뮬레이션 장치(100)는 2N개의 확률 진폭 데이터를 저장해야 하며, 각 양자 게이트 연산은 2N개의 확률 진폭 데이터의 갱신으로 볼 수 있다.
일 실시 예에 따른, 양자 회로 시뮬레이션 장치(100)는 하나 이상의 저장장치를 포함하는 저장장치 시스템(120) 및 저장장치 시스템(120)과 연결되어 양자 회로를 시뮬레이션 하는 호스트 시스템(110)을 포함하고, 저장장치 시스템(120)에 저장된 양자 회로를 하나 이상의 부분 회로로 분할하여, 호스트 시스템(110)이 하나 이상의 부분 회로를 순차로 메인 메모리 상에서 시뮬레이션 할 수 있다. 일 실시 예에서, 상기 호스트 시스템은 하나 이상의 부분 회로 각각에 대하여 각 시뮬레이션 동안 필요한 각각의 확률 진폭 데이터가 연속적으로 저장되어 있는 상기 저장장치 시스템에 한번 접근하여 상기 각각의 확률 진폭 데이터를 상기 메인 메모리 상에 연속적으로 읽어들이고, 상기 하나 이상의 부분 회로 각각의 시뮬레이션 결과인 확률 진폭 데이터가 연속적으로 저장되어 있는 상기 메인 메모리 상에서 상기 확률 진폭 데이터를 상기 저장장치 시스템에 연속적으로 쓰도록 할 수 있다. 일 실시 예에서, 상기 호스트 시스템은 입력 양자 회로를 가능한 한 적은 개수의 부분 회로로 분할하도록 할 수 있다.
일 실시 예에 따른, 양자 회로 시뮬레이션 장치(100)의 호스트 시스템(110)은 메인 메모리의 크기에 따라 설정된 파라미터 M을 기준으로 휴리스틱한 알고리즘을 이용하여 입력 양자 회로의 양자 게이트를 순차로 확인하여 부분 회로를 생성할 수 있다.
일 실시 예에 따른, 양자 회로 시뮬레이션 장치(100)의 호스트 시스템(110)은 하나 이상의 부분 회로 각각에 대한 순열 연산을 1단계 인메모리 순열 연산, 2단계 블록 순열 연산 및 3단계 인메모리 순열 연산으로 변환하여 순차로 실행할 수 있다. 일 실시 예에서, 1단계 인메모리 순열 연산 및 3단계 인메모리 순열 연산은 메인 메모리 상에서 데이터 레이아웃을 변경하고, 2단계 블록 순열 연산을 저장장치 상에서 데이터 레이아웃을 변경할 수 있다.
일 실시 예에 따른, 양자 회로 시뮬레이션 장치(100)는 하나 이상의 부분 회로를 순차로 시뮬레이션 하는 동안, 현재 메모리 연산 중인 부분 회로의 연산 중에 다음 차례의 부분 회로에 대한 확률 진폭 데이터를 상기 저장장치 시스템에 한번 접근하여 상기 다음 차례의 부분 회로의 시뮬레이션 전에 미리 상기 메인 메모리로 연속적으로 읽어들일 수 있다.
일 실시 예에서, 저장장치 시스템(120)은 HDD, SSD 또는 NVMe 중 어느 하나를 포함할 수 있다.
도 2는 일 실시 예에 따른 저장장치를 이용한 양자 회로 시뮬레이션 방법의 순서도이다.
S210 단계에서, 양자 회로 시뮬레이션 장치(100)는 제1 양자 회로를 입력 받을 수 있다. 제1 양자 회로는 N개의 큐비트와 이 큐비트들에 작용하는 일련의 양자 게이트 집합이다. N개의 큐비트가 표현하는 상태는 총 2N개의 진폭으로 나타낼 수 있고, 각 진폭은 복소수로 표현되며, 일반적으로 16바이트의 메모리로 나타낸다. 제1 양자 회로는 2N개의 확률 진폭 데이터로 표현될 수 있고, 각 양자 게이트 연산은 2N개의 확률 진폭 데이터의 갱신으로 표현될 수 있다. N개의 큐비트로 이루어진 양자 회로를 시뮬레이션하기 위해서는 2(N+4) 바이트의 저장 공간이 필요하다.
S220 단계에서, 양자 회로 시뮬레이션 장치(100)는 파라미터 M을 이용하여 제1 양자 회로를 하나 이상의 부분 회로로 분할할 수 있다. 부분 회로는 두 가지 특징을 가진다. 첫째, 각 부분 회로에서 게이트는 처음부터 M개의 연속된 큐비트들에 대해서만 적용될 수 있다. 이 때, M 값은 파라미터로 주어지며, 2(M+4)가 호스트 시스템의 전체 메모리(DRAM) 사이즈보다 작은 값으로 설정된다. 둘째, 각 부분 회로는 하나의 순열(permutation)을 할당받게 되며, 이러한 순열의 순서에 맞게 게이트들이 재위치하게 된다. 예를 들어, 입력 양자 회로를 3개의 부분 회로로 분할하는 경우, 각 부분 회로는 (q4q3q2q1q0), (q1q2q0q4q3), (q3q1q4q2q0)의 순열을 할당받을 수 있다. 입력 양자 회로를 부분 회로로 분할하는 목적은 시뮬레이션 실행 중 저장장치에 대한 접근 횟수(또는 크기)를 줄이기 위한 것이다. 다양한 실시 예에서, 입력으로 주어진 양자 회로를 복수의 부분 회로로 분할하고, 각 부분회로는 오직 실행 가능한 양자 게이트만을 포함할 수 있다. 실행 가능한 양자 게이트만을 포함하는 부분 회로를 실행하는 경우, 각 부분 회로의 모든 양자 게이트 연산은 추가적인 저장장치 접근 없이 실행될 수 있다. 일 실시 예에서, 양자 회로 시뮬레이션 장치(100)는 입력 양자 회로를 부분 회로로 분할하기 위해, 휴리스틱한 알고리즘을 이용하여, 다음에 사용될 가능성이 큰 큐비트들을 양자 회로 상에서 아래 위치하도록 할 수 있다. 다양한 실시 예에서, 입력 양자 회로를 효율적인 실행 단위인 부분 회로로 분할하는 알고리즘은 하나 이상일 수 있으며, 양자 회로 시뮬레이션 장치(100)의 특징에 따라 다르게 구현될 수 있음은 자명하다. 다양한 실시 예에서, 입력 양자 회로에 대하여 가능한 한 적은 수의 부분 회로를 생성할 수 있다.
S230 단계에서, 양자 회로 시뮬레이션 장치(100)는 하나 이상의 부분 회로를 순차적으로 시뮬레이션 할 수 있다. 양자 회로 시뮬레이션 장치(100)는 부분 회로를 시뮬레이션하기 위해 부분 회로에 대한 확률 진폭 데이터가 연속적으로 저장되어 있는 저장장치 시스템에 오직 한번 접근하여 확률 진폭 데이터를 메인 메모리 상에 연속적으로 읽어들 일 수 있다. 각 부분 회로에 할당된 순열에 따라 저장장치로부터 읽어들이는 단위 크기가 최소 16바이트로 매우 작아질 수 있고, 이러한 경우 저장장치의 대역폭을 충분히 활용하지 못하는 문제가 발생할 수 있다. 다양한 실시 예에서, 양자 회로 시뮬레이션 장치(100)는 3단계 순열 연산(3-step permutation)을 적용하여 모든 저장장치에 대한 접근 연산의 최소 단위를 비교적 크게 고정시킬 수 있다. 3단계 순열 연산은 하나의 순열 연산을 3단계로 나누어 실행한다. 이 때, 순열은 2개의 인메모리 순열(in-memory permutation)과 블록 순열(block permutation)로 나뉘며, 인메모리 순열-블록 순열-인메모리 순열의 순서로 실행된다. 인메모리 순열은 데이터를 메인 메모리로 읽어들인 후에 메모리 상에서 데이터 레이아웃을 변경하는 연산을 말한다. 블록 순열은 저장장치 상에서 데이터 레이아웃을 변경하는 것을 말한다. 3단계 순열 연산을 사용하여 모든 저장장치에 대한 접근 연산의 최소 단위를 비교적 크게 고정시킴으로써, 단순한 메모리 접근 연산을 수행하는 것보다 훨씬 저장장치의 대역폭을 잘 활용하는 효과를 가진다. 다만, 2개의 인메모리 순열을 위한 추가 메모리 연산이 소요되지만, 이는 메모리에 대한 접근이고 저장장치 접근보다 훨씬 빠르기 때문에 전체 연산시간을 고려할 때, 3단계 순열 연산을 적용하는 것이 더 효율적이다.
일 실시 예에서, 양자 회로 시뮬레이션 장치(100)는 분할된 부분회로들은 순차로 시뮬레이션하기 때문에, 현재 실행 중인 부분회로 다음으로 사용될 부분회로에 대한 데이터의 정확한 위치 값을 알 수 있다. 따라서, 양자 회로 시뮬레이션 장치(100)는 시뮬레이션을 최적화하기 위해 프리페칭 기술을 적용할 수 있다. 양자 회로 시뮬레이션 장치(100)는 현재 실행 중인 제1 부분 회로 다음에 실행될 제2 부분 회로에 대한 확률 진폭 데이터를 미리 즉, 제1 부분 회로 실행 중에 제2 부분 회로에 대한 확률 진폭 데이터가 연속적으로 저장된 저장장치에 한번 접근하여 메인 메모리로 로딩할 수 있다.
일 실시 예에서, 양자 회로 시뮬레이션 장치(100)는 각 부분 회로에 대한 시뮬레이션 결과에따라 메인 메모리에 연속적으로 저장된 확률 진폭 데이터를 오직 한번의 접근으로 저장장치에 연속적으로 쓰도록 할 수 있다.
도 3은 일 실시 예에서 입력 양자 회로를 분할한 부분 회로들의 예시이다. 다양한 실시 예에서, 입력 양자 회로를 효율적으로 실행하기 위한 단위인 부분 회로로 분할할 수 있다. 부분 회로 분할의 목적은 저장장치에 대한 접근을 줄이는데 있다. 양자 회로에서 각 양자 게이트의 적용 위치에 따라 메모리 액세스 패턴이 결정된다. 예컨대, 첫 번째 큐비트에 적용되는 양자 게이트는 16 바이트 거리(stride)에 위치한 두 데이터를 동시에 읽어들여야 하며, 아래에서 두 번째 큐비트에 적용되는 양자 게이트는 32 바이트 거리에 위치한 두 데이터를 동시에 접근해야 한다. 일반적으로 아래에서 k 번째 큐비트에 적용되는 양자 게이트는 2k+3 바이트 거리에 위치한 두 데이터를 동시에 필요로 한다. 만약 메인 메모리에 연속된 2M 개의 데이터가 저장되어 있을 경우, 아래에서 M 번째 혹은 그 이상에 위치한 큐비트들에 대한 양자 게이트는 즉시 실행될 수 없다. 양자 게이트 적용에 필요한 데이터 쌍 중 한짝이 메인 메모리에 올려져 있지 않기 때문이다. 따라서, 이러한 경우에는 양자 게이트 실행을 위해 추가적인 저장장치 접근이 필요하다. 다양한 실시 예에서, 양자 회로 시뮬레이션 장치(100)는 입력 양자 회로를 효율적으로 실행하기 위해 메인 메모리의 크기에 따라 파라미터 M을 설정하고, M을 이용하여 입력 양자 회로를 하나 이상의 부분 회로로 분할하여, 부분 회로 단위로 시뮬레이션을 실행할 수 있다.
도 3을 참조하면, 양자 회로 시뮬레이션 장치(100)는 휴리스틱한 알고리즘을 이용하여 입력 양자 회로(310)를 3개의 부분 회로(320, 330, 340)로 분할할 수 있다. 양자 회로 시뮬레이션 장치(100)는 별도의 저장장치 시스템(120)의 추가 접근 없이 실행 가능한 최대 크기의 부분 회로로 분할하기 위해서, 호스트 시스템(110)의 메인 메모리(DRAM)의 크기를 고려하여, 파라미터 M을 설정할 수 있다. 예를 들어, 파라미터 M은 메인 메모리의 크기 사이즈보다 2(M+4)가 작도록 설정될 수 있다. 도 3에서는 M=4이다. 각 부분 회로에서 게이트는 처음부터 M개의 연속된 큐비트들에 대해서만 적용될 수 있다. 즉, 각 부분회로들에 적용되는 게이트는 아래에서부터 최대 4개(M 크기)의 큐비트들까지만 적용될 수 있고, 최상단에 위치한 큐비트에는 적용되지 않는다. 파라미터 M을 이용하여 분할된 부분 회로들은 오직 실행 가능한 양자 게이트만 포함하고, 실행 중에 추가적인 저장장치에 대한 접근이 필요하지 않다. 양자 회로 시뮬레이션 장치(100)는 부분 회로 단위로 시뮬레이션을 실행함으로써, 오직 필요한 데이터쌍들을 저장장치에서 읽어들이는 연산 1회, 계산된 결과 값을 다시 저장장치에 저장하는 연산 1회가 소요된다.
양자 회로 시뮬레이션 장치(100)는 분할된 부분 회로들에 각각 순열을 할당하고, 도 3과 같이 순열의 순서에 맞게 게이트들을 재위치시킬 수 있다. 입력 양자 회로는 (q4q3q2q1q0)의 순서로 할당되어 있고, 분할된 제1 부분회로(320)는 (q4q3q2q1q0) 순서, 제2 부분회로(330)는 (q1q2q0q4q3) 순서, 제3 부분회로(340)는 (q3q1q4q2q0) 순서로 할당되면, 순열에 따라 게이트 위치가 변경된다.
도 4는 일 실시 예에 따른 입력 양자 회로를 분할하는 방법의 순서도이다. 양자 회로 시뮬레이션 장치(100)는 메인 메모리의 크기에 따라 부분 회로를 분할할 수 있다. 다양한 실시 예에서, 양자 회로 시뮬레이션 장치(100)의 양자 회로 시뮬레이션에 요구되는 총 저장장치 접근 횟수는 부분 회로의 개수에 비례한다. 고성능 시뮬레이션을 하기 위해서는 적은 수의 부분 회로를 생성해야 한다. 따라서, 부분 회로를 분할하는 알고리즘은 어려운 문제이고, 하나 이상일 수 있다. 다양한 실시 예에서, 양자 회로 시뮬레이션 장치(100)는 입력 양자 회로에 대하여 가능한 한 적은 수의 부분 회로를 생성할 수 있다.` 일 실시 예에서, 양자 회로 시뮬레이션 장치(100)는 휴리스틱(heuristic)한 방법에 따라 입력 양자 회로를 실행 가능한 게이트만 포함하는 부분 회로들로 분할할 수 있다. 하기에서는 도 3의 입력 양자 회로를 예를 들어, 분할하는 방법을 설명하겠다.
S410 단계에서, 양자 회로 시뮬레이션 장치(100)는 양자 게이트를 정렬할 수 있다. 양자 회로 시뮬레이션 장치(100)는 게이트가 적용되는 큐비트의 번호가 작은 것이 앞에 오도록 정렬할 수 있고, 서로 다른 두 개의 게이트가 같은 큐비트에 적용될 때에는 입력 양자 회로에서의 순서를 만족시키도록 정렬할 수 있다.
S420 단계에서, 양자 회로 시뮬레이션 장치(100)는 현재 순열 변수를 동일 순열(identity permutation)로 초기화할 수 있다. 예컨대, 도 3의 입력 양자 회로의 동일 순열은 (q4q3q2q1q0)이다.
S430 단계에서, 양자 회로 시뮬레이션 장치(100)는 양자 게이트 정렬 리스트를 순차로 양자 게이트가 적용되는 큐비트의 번호가 파라미터 M보다 큰 게이트를 탐색할 수 있다. 만약 파라미터 M보다 큰 게이트가 존재하지 않으면, 양자 회로 시뮬레이션 장치(100)는 전체 게이트 집합을 하나의 부분회로로 만들고 알고리즘을 종료할 수 있다. 이때, 양자 회로 시뮬레이션 장치(100)는 부분 회로에 현재 순열 변수에 저장된 순열을 할당한다.
S440 단계에서, 양자 회로 시뮬레이션 장치(100)는 맨 앞 양자 게이트와 탐색된 양자 게이트 사이에 위치한 모든 게이트들을 포함하는 부분 회로를 생성할 수 있다. 단, 탐색된 양자 게이트는 포함되지 않는다. 이때 생성된 부분 회로에 현재 순열 변수에 저장된 순열이 할당되고, 휴리스틱한 순열 생성 방법에 따라 얻은 순열을 현재 순열 변수에 저장할 수 있다. 휴리스틱한 순열 생성 방법은 다음 A, B, C 단계로 정의할 수 있다.
A 단계에서, 현재 순열 변수에 저장된 순열의 오른쪽에서부터 M개의 큐비트들을 로컬(local) 큐비트, 그 이외의 큐비트들을 비-로컬(non-local) 큐비트라고 정의할 수 있다. 예를 들어, 현재 저장된 순열(갱신하기 전에 저장된 순열)이 (q1q2q0q4q3)이고, M=4이면 q3, q4, q0, q2는 로컬 큐비트, q1은 비-로컬 큐비트이다.
B 단계에서, 탐색된 양자 게이트와 그 뒤에 위치한 양자 게이트를 하나씩 살펴본다. 이 때, 각 양자 게이트가 적용되는 큐비트가 로컬이면 해당 큐비트의 로컬 카운트를 1 증가시키고, 비-로컬이면 해당 큐비트의 비-로컬 카운트를 1 증가시킨다. 탐색된 양자 게이트가 적용되는 큐비트들의 로컬 및 비-로컬 카운트 값은 무한대로 설정한다.
C 단계에서, B 단계에서 찾은 카운트를 바탕으로 큐비트를 정렬하여 순열을 반환한다. 이 때, 큐비트의 순서는 비-로컬 카운트가 클수록, 동일한 경우 로컬 카운트가 클수록 오른쪽에 위치하도록 한다. 즉, 양자 회로 상에서 아래에 위치하게 된다.
S450 단계에서, 양자 회로 시뮬레이션 장치(100)는 정렬된 양자 게이트가 남아 있는 동안, S430 내지 S430 단계를 반복할 수 있다.
도 5는 일 실시 예에 따른 복수 개의 부분 회로를 시뮬레이션하는 방법의 순서도이다. 양자 회로 시뮬레이션 장치(100)는 입력 양자 회로를 분할한 복수 개의 부분 회로 각각에 대해서 하기 단계에 따라 시뮬레이션을 실행할 수 있다.
S510 단계에서, 양자 회로 시뮬레이션 장치(100)는 제1 부분 회로에 대한 확률 진폭 데이터를 연속적으로 읽어들일 수 있다. 일 실시 예에서, 양자 회로 시뮬레이션 장치(100)는 저장장치 시스템(120)으로부터 저장장치에 연속적으로 저장된 제1 부분회로에 대한 2(M+4) 바이트의 확률 진폭 데이터를 메인 메모리로 연속적으로 읽기(read)할 수 있다. 각 부분 회로의 확률 진폭 데이터가 저장된 정확한 위치는 해당 부분 회로에 할당된 순열에 따라 결정된다. 임의의 순열이 주어졌을 때 임의의 큐비트의 정보(i.e., amplitude)
Figure PCTKR2022005230-appb-I000001
가 저장된 위치는 수학식 1과 같다.
Figure PCTKR2022005230-appb-M000001
수학식 1에서
Figure PCTKR2022005230-appb-I000002
는 주어진 순열에서
Figure PCTKR2022005230-appb-I000003
가 오른쪽에서 몇 번째 위치하는지 나타낸다. 예컨대, 순열
Figure PCTKR2022005230-appb-I000004
에 대해
Figure PCTKR2022005230-appb-I000005
,
Figure PCTKR2022005230-appb-I000006
는 각각 0과 3이다. 수학식 1을 통해 임의의 순열에 대해 각 큐비트의 위치 정보를 모두 알 수 있지만, 단순히 이를 이용해 값을 읽거나 쓰는 것은 비효율적이다. 왜냐하면 순열에 따라 저장장치로부터 읽어 들이는 단위 크기가 매우 작아질 수 있으며 (최소 16 바이트), 이러한 경우에 저장 장치의 대역폭을 충분히 활용하지 못하는 문제가 발생하기 때문이다. 일 실시 예에서는, 이러한 문제를 해결하기 위해 3단계 순열 연산(3-step permutation) 방법에 따라 양자 회로를 시뮬레이션한다.
S520 단계에서, 양자 회로 시뮬레이션 장치(100)는 제1 부분 회로에 대한 순열 연산을 3단계 순열 연산에 따라 실행한다. 일 실시 예에서, 3단계 순열 연산은 하나의 순열 연산을 3단계로 나누어 실행하는 것이다. 이 때, 순열은 2개의 인메모리 순열(in-memory permutation)과 블록 순열(block permutation)로 나뉘며, 인메모리 순열-블록 순열-인메모리 순열의 순서로 실행된다. 인메모리 순열은 데이터를 메인 메모리로 읽어들인 후에 메모리 상에서 데이터 레이아웃을 변경하는 연산을 말한다. 임의의 인메모리 순열은 순열 중에서도 로컬 큐비트들만 변화하는 순열을 말한다. 예컨대,
Figure PCTKR2022005230-appb-I000007
는 인메모리 순열이 아니지만
Figure PCTKR2022005230-appb-I000008
는 인메모리 순열이다. 블록 순열은 저장 장치 상에서 데이터 레이아웃을 변경하는 것을 말한다. 이 때, 블록 순열은 순열 중에서도 왼쪽에서부터 B개의 큐비트들만 변화하는 순열을 의미한다. 예컨대, B=2일 경우
Figure PCTKR2022005230-appb-I000009
은 블록 순열이 아니지만,
Figure PCTKR2022005230-appb-I000010
은 블록 순열이다.
임의의 순열은 쉽게 3단계 순열로 변환될 수 있다. 예를 들어
Figure PCTKR2022005230-appb-I000011
의 순열은 아래와 같이 변환된다.
( q4q1q2q3q0 1단계 인메모리 순열)-(q1q4q2q3q0 2단계 블록 순열)-(q1q2q0q4q3 3단계 인메모리 순열)
S521 단계에서, 제1 부분 회로의 순열을 변환한 1단계 인메모리 순열 연산을 실행하고, S522 단계에서, 제1 부분 회로의 순열을 변환한 2단계 블록 순열 연산을 실행하고, S523 단계에서, 제1 부분 회로의 순열을 변환한 3단계 인메모리 순열 연산을 실행할 수 있다. 3단계 순열 연산을 사용하면 모든 저장장치에 대한 접근 연산의 최소 단위를 로 고정시킬 수 있어 단순한 접근보다 훨씬 저장장치의 대역폭을 잘 활용할 수 있다. 반면, 2개의 인메모리 순열을 위한 추가 메모리 연산이 소요되지만, 이는 메모리에 대한 접근이고 저장장치 접근보다 훨씬 빠르기 때문에 감수할 만 하다.
S520 단계에서, 양자 회로 시뮬레이션 장치(100)는 메인 메모리에 올려진 2(M+4) 바이트의 확률 진폭 데이터에 부분회로의 게이트 연산들을 적용할 수 있다. 게이트 연산을 위해, 임의 변용이 가능하다. 예를 들어 CPU 대신 GPU를 사용해 연산을 수행할 수도 있고, 이 경우 메인 메모리와 GPU 메모리 사이의 통신이 추가될 수 있다.
분할된 부분회로들은 순차적으로(예를 들어, 부분회로 1, 부분회로 2, 부분회로 3의 순서로) 양자 회로 시뮬레이터에 의해 시뮬레이션된다. 이 때, 양자 회로 시뮬레이터는 추후에 사용될 부분 회로에 대한 확률 진폭 데이터의 정확한 위치 값을 다 알고 있고, 이를 사용하기 전에 미리 메인 메모리에 올려놓는 프리페칭(Prefetching) 기술을 적용한다. 특히 양자 게이트 연산이 진행중일 때 다음에 사용될 확률 진폭 데이터를 미리 메인 메모리에 올려놓아 연산-통신 중첩 효과를 가져와 전체 실행시간을 효율적으로 최소화할 수 있다.
S530 단계에서, 양자 회로 시뮬레이션 장치(100)는 제1 부분 회로에 대한 연산 결과값으로 메인 메모리에 연속적으로 저장된 2(M+4) 바이트의 확률 진폭 데이터를 저장장치 시스템(120)에 연속적으로 쓰기(write)할 수 있다. 양자 회로 시뮬레이션 장치(100)는 다음 부분 회로에 대해 S510 단계 내지 S530 단계를 순차로 반복 수행할 수 있다.
도 6은 일 실시 예에 따른 복수 개의 부분 회로를 시뮬레이션하는 데이터 표현의 예시이다. 도 3의 입력 양자 회로(310)를 분할한 3개의 부분 회로(320, 330, 340)에 대하여 각각 3단계 순열 연산을 적용한 데이터 레이아웃의 변화를 도시한다.
먼저, 제1 부분 회로(320)는 동일 순열에서 출발하여, 1단계 인메모리 순열, 2단계 블록 순열, 3단계 인메모리 순열의 순서(①②③④)로 데이터 레이아웃이 변화하는 것을 보여준다. 저장장치에 대한 접근(storage write/read)은 2단계 블록 순열 전에 이루어진다. 다음으로, 제2 부분 회로(33)에 대한 3단계 순열 연산이 실행되는 것에 따라(⑤⑥⑦⑧) 데이터 레이아웃이 변화하는 것을 보여준다.
도 7은 일 실시 예에 따른 저장장치 시스템의 구현 예시이다. 저장장치 시스템은 DRAM보다 저비용의 고용량을 제공하는 저장장치로 구성될 수 있으며, 하나 이상의 저장장치를 포함하여 구성될 수 있다. 도 7을 참조하면, HDD를 이용하여 저장장치 시스템(120)을 구성하였다. 양자 회로 시뮬레이션 장치(100)는 RAID 카드(130)를 통해 호스트 시스템(110)과 저장장치 시스템(120)을 연결할 수 있다. RAID 카드(130)는 PCIe 슬롯으로 호스트 시스템과 연결될 수 있고, SAS 확장 카드를 이용해 SATA3를 지원하는 HDD 저장장치와 연결될 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 컨트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시 예들이 비록 한정된 실시 예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (15)

  1. 하나 이상의 저장장치를 포함하는 저장장치 시스템; 및
    상기 저장장치 시스템과 연결되어 양자 회로를 시뮬레이션 하는 호스트 시스템을 포함하고,
    상기 저장장치 시스템에 저장된 상기 양자 회로를 하나 이상의 부분 회로로 분할하여, 상기 호스트 시스템이 상기 하나 이상의 부분 회로를 순차로 메인 메모리 상에서 시뮬레이션 하도록 하는 양자 회로 시뮬레이션 장치.
  2. 제1항에 있어서,
    상기 호스트 시스템은 상기 하나 이상의 부분 회로 각각에 대하여 각 시뮬레이션 동안 필요한 각각의 확률 진폭 데이터가 연속적으로 저장되어 있는 상기 저장장치 시스템에 한번 접근하여 상기 각각의 확률 진폭 데이터를 상기 메인 메모리 상에 연속적으로 읽어들이고, 상기 하나 이상의 부분 회로 각각의 시뮬레이션 결과인 확률 진폭 데이터가 연속적으로 저장되어 있는 상기 메인 메모리 상에서 상기 확률 진폭 데이터를 상기 저장장치 시스템에 연속적으로 쓰도록 하는 양자 회로 시뮬레이션 장치.
  3. 제1항에 있어서,
    상기 호스트 시스템은, 상기 메인 메모리의 크기에 따라 설정된 파라미터 M을 기준으로 휴리스틱한 알고리즘을 이용하여 상기 양자 회로의 양자 게이트를 순차로 확인하여 부분 회로를 생성하도록 하는 양자 회로 시뮬레이션 장치.
  4. 제1항에 있어서,
    상기 호스트 시스템은, 상기 하나 이상의 부분 회로 각각에 대한 순열 연산을 1단계 인메모리 순열 연산, 2단계 블록 순열 연산, 및 3단계 인메모리 순열 연산으로 변환하여 순차로 실행하도록 하는 양자 회로 시뮬레이션 장치.
  5. 제4항에 있어서,
    상기 1단계 인메모리 순열 연산 및 상기 3단계 인메모리 순열 연산은, 상기 메인 메모리 상에서 데이터 레이아웃을 변경하고, 상기 2단계 블록 순열 연산은 상기 저장장치 상에서 데이터 레이아웃을 변경하도록 하는 양자 회로 시뮬레이션 장치.
  6. 제1항에 있어서,
    상기 호스트 시스템은, 상기 하나 이상의 부분 회로를 순차로 시뮬레이션 하는 동안, 현재 메모리 연산 중인 부분 회로의 연산 중에 다음 차례의 부분 회로에 대한 확률 진폭 데이터를 상기 저장장치 시스템에 한번 접근하여 상기 다음 차례의 부분 회로의 시뮬레이션 전에 미리 상기 메인 메모리로 연속적으로 읽어들이도록 하는 양자 회로 시뮬레이션 장치.
  7. 제1항에 있어서,
    상기 저장장치는 HDD, SSD 또는 NVMe 중 어느 하나를 포함하도록 하는 양자 회로 시뮬레이션 장치.
  8. 저장장치에 저장된 입력 양자 회로를 하나 이상의 부분 회로로 분할하는 단계; 및
    상기 하나 이상의 부분 회로를 순차로 상기 저장장치로부터 읽어들여 메인 메모리 상에서 시뮬레이션하는 단계;
    를 포함하는 양자 회로를 시뮬레이션하는 방법.
  9. 제8항에 있어서,
    상기 메인 메모리 상에서 시뮬레이션 하는 단계는,
    상기 하나 이상의 부분 회로 각각에 대하여 각 시뮬레이션 동안 필요한 각각의 확률 진폭 데이터가 연속적으로 저장되어 있는 상기 저장장치에 한번 접근하여 상기 각각의 확률 진폭 데이터를 상기 메인 메모리 상에 연속적으로 읽어들이도록 하는 양자 회로를 시뮬레이션하는 방법.
  10. 제9항에 있어서,
    상기 하나 이상의 부분 회로 각각의 시뮬레이션 결과인 확률 진폭 데이터가 연속적으로 저장되어 있는 상기 메인 메모리 상에서 상기 확률 진폭 데이터를 상기 저장장치에 연속적으로 쓰도록 하는 단계;
    를 더 포함하는 양자 회로를 시뮬레이션하는 방법.
  11. 제8항에 있어서,
    상기 하나 이상의 부분 회로로 분할하는 단계는,
    상기 메인 메모리의 크기에 따라 설정된 파라미터 M을 기준으로 휴리스틱한 알고리즘을 이용하여 상기 입력 양자 회로의 양자 게이트를 순차로 확인하여 부분 회로를 생성하도록 하는 양자 회로를 시뮬레이션하는 방법.
  12. 제8항에 있어서,
    상기 시뮬레이션하는 단계는,
    상기 하나 이상의 부분 회로 각각에 대한 순열 연산을 1단계 인메모리 순열 연산, 2단계 블록 순열 연산, 및 3단계 인메모리 순열 연산으로 변환하여 순차로 실행하도록 하는 양자 회로를 시뮬레이션 하는 방법.
  13. 제12항에 있어서,
    상기 1단계 인메모리 순열 연산 및 상기 3단계 인메모리 순열 연산은, 상기 메인 메모리 상에서 데이터 레이아웃을 변경하고, 상기 2단계 블록 순열 연산은 상기 저장장치 상에서 데이터 레이아웃을 변경하도록 하는 양자 회로를 시뮬레이션하는 방법.
  14. 제8항에 있어서,
    상기 시뮬레이션하는 단계는,
    상기 하나 이상의 부분 회로를 순차로 시뮬레이션하는 동안, 현재 메모리 연산 중인 부분 회로의 연산 중에 다음 차례의 부분 회로에 대한 확률 진폭 데이터를 상기 저장장치에 한번 접근하여 상기 다음 차례의 부분 회로의 시뮬레이션 전에 미리 상기 메인 메모리로 연속적으로 읽어들이도록 하는 양자 회로를 시뮬레이션하는 방법.
  15. 제8항 내지 제14항 중 어느 한 항에 따른 양자 회로를 시뮬레이션하는 방법을 프로세서에 의해 실행하도록 구성된 적어도 하나의 명령어를 포함한 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능한 비 일시적 기록 매체.
PCT/KR2022/005230 2021-10-21 2022-04-11 저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 그 동작 방법 WO2023068464A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202280070490.5A CN118140224A (zh) 2021-10-21 2022-04-11 利用存储装置的量子电路模拟系统及其操作方法
EP22883695.3A EP4418162A1 (en) 2021-10-21 2022-04-11 Quantum circuit simulation system using storage device, and operation method thereof

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20210141160 2021-10-21
KR10-2021-0141160 2021-10-21
KR10-2022-0043556 2022-04-07
KR1020220043556A KR20230057246A (ko) 2021-10-21 2022-04-07 저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 그 동작 방법

Publications (1)

Publication Number Publication Date
WO2023068464A1 true WO2023068464A1 (ko) 2023-04-27

Family

ID=86059314

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/005230 WO2023068464A1 (ko) 2021-10-21 2022-04-11 저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 그 동작 방법

Country Status (2)

Country Link
EP (1) EP4418162A1 (ko)
WO (1) WO2023068464A1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170372217A1 (en) * 2016-06-28 2017-12-28 International Business Machines Corporation Optimized testing of a partially symmetric quantum-logic circuit
US20190095561A1 (en) * 2017-09-22 2019-03-28 International Business Machines Corporation Simulating quantum circuits
CN110188885A (zh) * 2019-06-28 2019-08-30 合肥本源量子计算科技有限责任公司 一种量子计算模拟方法、装置、存储介质和电子装置
US20190347575A1 (en) * 2018-05-08 2019-11-14 International Business Machines Corporation Simulating quantum circuits on a computer using hierarchical storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170372217A1 (en) * 2016-06-28 2017-12-28 International Business Machines Corporation Optimized testing of a partially symmetric quantum-logic circuit
US20190095561A1 (en) * 2017-09-22 2019-03-28 International Business Machines Corporation Simulating quantum circuits
US20190347575A1 (en) * 2018-05-08 2019-11-14 International Business Machines Corporation Simulating quantum circuits on a computer using hierarchical storage
CN110188885A (zh) * 2019-06-28 2019-08-30 合肥本源量子计算科技有限责任公司 一种量子计算模拟方法、装置、存储介质和电子装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANDERSON AVILA, RENATA H. S. REISER, MAURICIO L. PILLA, ADENAUER C. YAMIN: "Optimizing D-GM quantum computing by exploring parallel and distributed quantum simulations under GPUs arquitecture", 2016 IEEE CONGRESS ON EVOLUTIONARY COMPUTATION (CEC), 1 July 2016 (2016-07-01) - 29 July 2016 (2016-07-29), pages 5146 - 5153, XP055603464, ISBN: 978-1-5090-0623-6, DOI: 10.1109/CEC.2016.7748342 *

Also Published As

Publication number Publication date
EP4418162A1 (en) 2024-08-21

Similar Documents

Publication Publication Date Title
US11194943B2 (en) FPGA-based hardware emulator system with an inter-FPGA connection switch
CN101447986B (zh) 具有分区的片上网络及其处理方法
Zhang et al. The PetscSF scalable communication layer
Fu et al. PUMPS architecture for pattern analysis and image database management
US10997102B2 (en) Multidimensional address generation for direct memory access
US9495501B1 (en) Large cluster persistence during placement optimization of integrated circuit designs
CN113312283B (zh) 一种基于fpga加速的异构图学习系统
US11573793B2 (en) Lazy push strategies for vectorized D-Heaps
CN114830135A (zh) 算子的层次分区
BR112019027531A2 (pt) processadores de alto rendimento
Zhang et al. Enabling highly efficient capsule networks processing through a PIM-based architecture design
US12079734B1 (en) Compilation time reduction for memory and compute bound neural networks
CN116601585A (zh) 数据类型感知时钟门控
KR20140070493A (ko) 신호 흐름이 프로그램된 디지털 신호 프로세서 코드의 효율적인 자원 관리를 위한 시스템 및 방법
CN114008635A (zh) 神经网络逐层调试
WO2023068463A1 (ko) 양자 회로 시뮬레이션을 위한 저장장치 시스템
He et al. Parallel GMRES solver for fast analysis of large linear dynamic systems on GPU platforms
WO2023068464A1 (ko) 저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 그 동작 방법
Bian et al. PAS: A new powerful and simple quantum computing simulator
US11921784B2 (en) Flexible, scalable graph-processing accelerator
KR20230057246A (ko) 저장장치를 이용한 양자 회로 시뮬레이션 시스템 및 그 동작 방법
WO2021020848A2 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
JP2024539890A (ja) 貯蔵装置を用いた量子回路シミュレーションシステム及びその動作方法
WO2012030027A1 (ko) 멀티 코어 프로세서를 기반으로 하는 문자열 매칭 장치 및 그것의 문자열 매칭 방법
WO2023214608A1 (ko) 양자 회로 시뮬레이션 하드웨어

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22883695

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2024523532

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 202280070490.5

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2022883695

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2022883695

Country of ref document: EP

Effective date: 20240513

NENP Non-entry into the national phase

Ref country code: DE