US20210132969A1 - Quantum Virtual Machine for Simulation of a Quantum Processing System - Google Patents
Quantum Virtual Machine for Simulation of a Quantum Processing System Download PDFInfo
- Publication number
- US20210132969A1 US20210132969A1 US17/251,766 US201917251766A US2021132969A1 US 20210132969 A1 US20210132969 A1 US 20210132969A1 US 201917251766 A US201917251766 A US 201917251766A US 2021132969 A1 US2021132969 A1 US 2021132969A1
- Authority
- US
- United States
- Prior art keywords
- quantum
- virtual
- wavefunction
- qubits
- processing system
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 213
- 238000004088 simulation Methods 0.000 title description 7
- 230000005428 wave function Effects 0.000 claims abstract description 280
- 230000015654 memory Effects 0.000 claims abstract description 102
- 239000002096 quantum dot Substances 0.000 claims description 205
- 238000004422 calculation algorithm Methods 0.000 claims description 167
- 238000000034 method Methods 0.000 claims description 80
- 239000013598 vector Substances 0.000 claims description 59
- 239000011159 matrix material Substances 0.000 claims description 52
- 238000005259 measurement Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 10
- 238000009826 distribution Methods 0.000 claims description 5
- 238000005192 partition Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000005588 Kraus reaction Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 19
- 230000003993 interaction Effects 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 11
- 230000011664 signaling Effects 0.000 description 9
- 230000007704 transition Effects 0.000 description 9
- 230000000007 visual effect Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 4
- 230000005281 excited state Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000004907 flux Effects 0.000 description 3
- 230000012846 protein folding Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003750 conditioning effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000009396 hybridization Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004821 distillation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000005283 ground state Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005040 ion trap Methods 0.000 description 1
- 150000002500 ions Chemical class 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000005610 quantum mechanics Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003325 tomography Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
- G06N10/80—Quantum programming, e.g. interfaces, languages or software-development kits for creating or handling programs capable of running on quantum computers; Platforms for simulating or accessing quantum computers, e.g. cloud-based quantum computing
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B82—NANOTECHNOLOGY
- B82Y—SPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
- B82Y10/00—Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Definitions
- This invention relates generally to executing algorithms on a hybrid classical/quantum computing system, and in particular to a quantum virtual machine for simulating the quantum hardware operations on a classical computation system.
- Quantum computation systems excel at solving complex problems which are often unsolvable using classical computation systems.
- physical quantum computation systems of the desired computing power may not be presently available with enough fidelity or performance to execute certain quantum algorithms of interest.
- debugging algorithms on physical hardware is an expensive endeavor. Therefore, in such cases, it would be beneficial to be able to simulate the execution of a quantum algorithm on a quantum computation system having the desired properties (e.g., a given large number of qubits), even though such a system is not yet readily available, or not available at all.
- a system and method for determining the result of a quantum operation included in a hybrid algorithm (e.g., an algorithm including quantum and classical processing instructions executed in concert) using a quantum virtual machine allows for classical processors to simulate quantum operations that would, otherwise, be executed on a quantum processing system.
- a “quantum virtual machine” is a classical implementation of a “quantum abstract machine”, such as the hybrid classical/quantum computing model described in the paper “ A Practical Quantum Instruction Set Architecture ,” arXiv:1608.03355v2.
- the system determines whether or not to execute the hybrid algorithm using the quantum virtual machine based on the number of quantum operations and number of qubits included in the hybrid algorithm.
- the hybrid algorithm includes a quantum virtual state including a number of qubits (a virtual wavefunction).
- the system stores every possible combination of qubits in the virtual wavefunction as probability amplitudes in memory locations of a (shared) memory.
- the hybrid algorithm includes a quantum operation that acts on a subset of the qubits in the virtual wavefunction.
- the system simulates the hybrid algorithm using a classical processor by executing a classical representation of the quantum operation on the virtual wavefunction and manipulating the complex amplitudes stored in the memory locations.
- the system determines a number of virtual partial wavefunctions based on the number of qubits represented by the virtual wavefunction (total qubits) and the number of qubits the quantum operation acts on (acted-on qubits).
- the qubits that an operation acts on determines the Hilbert subsystem in which the wavefunction state is changed.
- the system also determines elements of the virtual partial wavefunctions and the order of the elements in the virtual partial wavefunctions based on the total qubits and acted-on qubits.
- Each element of a virtual partial wavefunction is a probability amplitude stored in a memory location.
- the system accesses the elements of each virtual wavefunction and applies a classical representation of the quantum operation by the virtual partial wavefunction.
- Each application yields a resulting virtual partial wavefunction including resulting complex amplitudes as the elements.
- Each resulting complex amplitude of the resulting virtual partial wavefunction is stored in a corresponding memory location of the shared memory.
- the system determines the result of the quantum operation based on the resulting complex amplitudes.
- the system executes a quantum algorithm using a classical processing system to determine a result of the quantum algorithm.
- the quantum algorithm includes a quantum operation acting on at least one qubit of a virtual wavefunction.
- the virtual wavefunction includes a plurality of qubits, each combination of qubits of the virtual wavefunction represented by a complex amplitude stored at a memory location of the classical processing system.
- the classical processing system instantiates a virtual quantum processing system on a datastore of the classical processing system.
- the virtual quantum processing system is configured to execute the quantum operation. To do so, the virtual quantum processing system, using classical processors, identifies a set of virtual partial wavefunctions based on the qubits the quantum operation acts on and the qubits of the virtual wavefunction. Each virtual partial wavefunction includes one or more complex amplitudes of the virtual wavefunction.
- the virtual quantum processing system accesses the one or more complex amplitudes of each virtual partial wavefunction of the set of virtual partial wavefunctions from a corresponding memory location of the classical processing system.
- the virtual quantum processing system then executes the quantum operation on the accessed complex amplitudes for each virtual partial wavefunction of the set of virtual partial wavefunctions to determine resulting complex amplitudes.
- the resulting complex amplitudes represent a state evolution of the virtual wavefunction.
- the complex amplitudes are stored in the memory of the classical processing system.
- the virtual quantum processing system determines the result of executing the quantum algorithm using the stored resulting complex amplitudes and provides the result of the quantum algorithm to the client device.
- the quantum operation is represented by a matrix stored in the classical processing system with a matrix size based on a number of the qubits of the virtual wavefunction that the quantum operation is acting on.
- the number of the qubits of the virtual wavefunction is k and the matrix size of the matrix representing the quantum operation is 2 k ⁇ 2 k .
- the virtual wavefunction is represented by a bitstring vector stored in the classical processing system with a bitstring vector size based on a number of qubits in the virtual wavefunction.
- the number of qubits in the virtual wavefunction is n and the bitstring vector size is 2 n .
- the virtual partial wavefunctions is represented by a bitstring sub-vector with a sub-bitstring vector sized based on the number of qubits the quantum operation is acting on.
- the number of qubits the quantum operation is acting on is k and the sub-bitstring vector size is 2 k .
- a number of virtual partial wavefunctions in the set of quantum bitstrings is based on the qubits the quantum operation acts on and the qubits of the virtual wavefunction.
- the number of qubits in the virtual wavefunction is n
- the number of qubits the quantum operation acts on is k
- the number of virtual partial wavefunctions is 2 n-k .
- executing the quantum operation includes multiplying a matrix representing the quantum operation and a set of sub-bitstring vectors representing the virtual partial wavefunctions, the matrix stored in the classical processing system having a matrix size based on a number of qubits the quantum operations acts on, and the sub-bitstring vectors having a vector sized based on the number of qubits the quantum operation acts on.
- the number of qubits the quantum operation acts on is k
- the matrix size is 2 k ⁇ 2 k
- the sub-bitstring vector size is 2 k
- Further executing the quantum algorithm includes multiplying the matrix representing the quantum operation with matrix size 2 k ⁇ 2 k by the set of sub-bitstring vectors with sub-bitstring vector sizes 2 k .
- the number of the virtual partial wavefunctions is based on the number of qubits the quantum operation acts on, and a number of qubits in the virtual wavefunction.
- the number of qubits the quantum operation acts on may be k
- the number of qubits in the virtual wavefunction may be n
- the number of sub-bitstring vectors may be 2 n-k .
- executing the quantum algorithm comprises multiplying the matrix representing the quantum operation by the 2 n-k sub-bitstring vectors.
- the system may determine and execute a stochastic quantum operation to introduce stochastic errors in the virtual wavefunction when the quantum operation is executed such that the determined result includes stochastic error, the stochastic quantum operation being based on the quantum algorithm.
- the system may determine and execute a unitary quantum operation to introduce unitary errors in the virtual wavefunction when the quantum operation is executed such that the determined result includes unitary error, the unitary quantum operation being based on the quantum algorithm
- the complex amplitudes of each combination of qubits in the virtual wavefunction are accessible by an alternate processor of the classical processing system.
- the quantum operation may be executed on each virtual partial wavefunction of the set of quantum sub-bitstrings by separate processors of the classical processing system.
- determining the result of the quantum algorithm includes simulating a quantum measurement on at least one qubit of the virtual wavefunction based on the resulting complex amplitudes and a set of basis states for the quantum measurement.
- executing the quantum operation includes generating a set of machine instructions to execute the quantum operation on the set of virtual partial wavefunctions.
- the set of machine instructions may be executed by the classical processing system.
- the system determines, whether to instantiate the virtual quantum processing system based on the received quantum algorithm.
- the virtual quantum processing system is instantiated in response to a determination to simulate the virtual quantum processing system. Further, in an example, the determination to instantiate the virtual quantum processing system is based on a number of quantum operations included in the quantum algorithm. Finally, in an example, the determination to instantiate the virtual quantum processing is based on a number of the plurality of qubits included in the quantum algorithm.
- the virtual quantum processing system is an application downloadable from a remote network system via a network.
- the client device is an application executing on a partition of the classical processing system.
- the client device is the classical processing system.
- the quantum operation is a density operator such as a Krauss operator.
- the virtual wavefunction comprising the plurality of qubits is a concatenated density matrix comprising a plurality of values representing a probability distribution.
- the system can introduce noise to the quantum operation, compile instructions to simulate a hybrid algorithm in real-time, access a library of matrices and vectors to simulate a hybrid algorithm, or generate more efficient classical machine instructions for simulating the hybrid algorithm on a classical processing system.
- the system may include one or more processors.
- the processors may be located on a client system or a network system.
- the system includes a datastore storing a non-transitory computer-readable storage medium computer program code that, when executed by the one or more processors, cause the processors to execute the methods and processes described herein.
- FIG. 1A-1E are illustrations of qubit states represented on a Bloch sphere.
- FIG. 2 is an illustration of a cloud quantum computing system, according to one example embodiment.
- FIG. 3 is an illustration of a quantum processing system, according to one example embodiment.
- FIG. 4 is an illustration of a classical processing system, according to one example embodiment.
- FIG. 5 is a visual representation of a classical implementation of a quantum state stored as a virtual wavefunction in the (shared) memory of the quantum cloud system, according to one example embodiment.
- FIG. 6 is a visual representation of the evolution of a virtual wavefunction using quantum operations, according to one example embodiment.
- FIG. 7 is an illustration of a method for determining the result of a hybrid algorithm using a quantum virtual machine, according to one example embodiment.
- FIGS. 8A-8F are a visual representation of determining the result of a hybrid algorithm using a quantum virtual machine, the hybrid algorithm including a four qubit virtual wavefunction and a quantum operation that acts on two qubits of the virtual wavefunction, according to one example embodiment.
- Quantum computations are fundamentally different from classical computations.
- Real world computing applications generally implement a hybridization of quantum and classical computations. Executing quantum computations efficiently requires a highly specific set of hardware and integrating the results of those quantum computations with classical systems can be challenging. In some cases, it can be beneficial to simulate a quantum computation on a classical processing system if executing the quantum operations on a quantum processing system is infeasible, expensive, inefficient and/or not fully optimized.
- Described herein as an example is a cloud quantum computing system that allows for the integration of quantum computations by classical processing systems and simulations of those quantum computations by classical processing systems. Further examples described herein include classical processing systems configured for simulation of quantum computations.
- Quantum algorithms when executed, manipulate and read information stored in a qubit (i.e. qubit).
- a qubit is fundamentally different from a classical bit.
- a classical bit has two possible states, typically represented as a 0 or a 1.
- Ostensibly, a qubit also has two measurable outcomes which can likewise be represented as a 0 or a 1.
- the state of a qubit is a superposition of the two measurable outcomes, i.e. some probability of a 0 state and some probability of a 1 state.
- a qubit can encode more information in its state than a classical bit.
- the two measurable outcomes of a qubit are known as the basis states.
- the basis states can be written as
- ⁇ can be represented as a linear combination of
- ⁇ ⁇
- the complex-valued probability amplitudes can be defined as
- 2 Pr(
- 2 Pr(
- 2 1.
- each qubit is a combination over these complex values.
- FIG. 1 is an illustration of the possible states for a single qubit
- a classical bit can only be represented at the “north pole” or the “south pole” of the sphere (e.g., the Z axis). As seen in FIG. 1B and FIG. 1C , these poles are the visual representation of the basis state
- a qubit state can be represented by any point on the surface of the Bloch sphere.
- ⁇ of FIG. 1D can be represented as
- ⁇ (1/ ⁇ square root over (2) ⁇ ) (
- ⁇ (1/ ⁇ square root over (2) ⁇ ) (
- Measurement of a qubit state is a measurement of the basis states
- direct measurement of the qubit alters the values of ⁇ and ⁇ .
- a measurement of a qubit state measures the projection of the qubit state (e.g., projection 114 of qubit 102 ) along an axis of the Bloch sphere (e.g., the vertical axis). That is, a measurement of a quantum state at any point during execution of a hybrid algorithm is a measurement of the probabilities of the complex amplitudes.
- Quantum entanglement allows a qubit state to express correlation between a set of qubit states that is more difficult or not possible between classical bits.
- the qubit state of two entangled qubits is most generally expressed as
- ⁇ ⁇ 00
- multiple qubits can store an exponentially larger amount of information in their states than the equivalent number of classical bits.
- quantum algorithms are executed on a quantum computation system to encode information into a qubit (or group of qubits) state, manipulate the state, and measure the state.
- quantum processing systems introduce errors when executing a quantum algorithm and reducing or accommodating those errors is necessary to determine an accurate result of the quantum algorithm.
- FIG. 2 is a block diagram of a system environment 200 for a quantum computation system, such as quantum cloud system 230 , which can provide the results of quantum computations to access nodes remote from the quantum cloud system 230 .
- the system environment 200 of FIG. 2 includes access nodes 210 ( 210 A, 210 B & 210 C), a network 220 , and a quantum cloud system 230 .
- Alternate embodiments of the system environment can include any number of access nodes 210 and quantum cloud systems 230 .
- the functions performed by the various entities of FIG. 2 may vary in different embodiments.
- a user of an access node 210 generates a set of quantum calculation instructions using an application 212 executing on the access node 210 .
- the quantum calculation instructions can be written in a defined quantum instruction language (e.g., Quil, See “ A Practical Quantum Instruction Set Architecture ,” arXiv:1608.03355v2) as a quantum algorithm (e.g., algorithm 222 ).
- a quantum algorithm can include any computer executable representation of quantum instructions, a series of quantum computations, hardware commands, software commands, programs, or control signals.
- a quantum algorithm 222 can additionally include any number of classical calculation instructions.
- the implementation or execution of the quantum algorithm 222 by the quantum cloud system 230 includes the determination of at least one result (e.g., result 224 ) of a quantum operation (e.g., reading a qubit or multiple qubits).
- the access node 210 transmits the quantum algorithm 222 to the quantum cloud system 230 .
- the quantum cloud system 230 receives the quantum algorithm 222 , schedules instructions of the quantum algorithm 222 on the quantum cloud system 230 , and executes the quantum algorithm 222 on the quantum cloud system 230 .
- the quantum cloud system 230 determines the result 224 of the quantum algorithm 222 by executing the quantum algorithm 222 using the classical processing system 400 and the quantum processing system 300 (or any combination of the systems).
- the quantum cloud system 230 can access any other computational resource to execute the quantum algorithm 222 (e.g., a supercomputer or other high-performing computer resource).
- the quantum algorithm 222 is executed by a quantum virtual machine 420 , which simulates the native execution of the algorithm by the quantum processing system 300 through operations performed purely by the classical processing system 400 .
- the quantum cloud system 230 transmits the determined result 224 of the quantum algorithm 222 to an access node 210 .
- a detailed example of a quantum algorithm 222 , its execution within using a quantum processing system 300 , and measuring a result 224 is described in Section VII, below.
- Quantum cloud system 230 can receive any number of quantum algorithms 222 from any number of access nodes 210 in the environment. Additionally, the quantum cloud system 230 includes functionality to execute quantum algorithms 222 received from disparate access nodes 210 such that the quantum algorithms 222 are executed efficiently.
- access nodes 210 are any device that can access the functionality of the quantum cloud system 230 .
- access nodes 210 are classical computing devices adapted to execute classical computer programs (e.g. access node 210 A).
- a typical access node 210 can be a lap-top computer, tablet, or cell-phone, or any other client device.
- the access nodes 210 include software applications, such as application 212 , which execute on the processor of the respective access node 210 .
- the application 212 can be a programming application, such as a compiler and/or integrated development environment, configured to program quantum processing systems.
- Application 212 can generate a quantum algorithm 222 for determining the result of a quantum calculation on the quantum cloud system 230 .
- access nodes 210 generate a quantum algorithm 222 that uses quantum calculations in the context of classical application 212 .
- applications 212 can be a web browser, a word processor, a networking application, a messaging application, etc.
- each application 212 can be linked to a user account on the quantum cloud system 230 associated with an access node 210 , an access node user, or group of access node users.
- Applications 212 of disparate access nodes 210 can communicate with one another and with quantum cloud system 230 via network 220 .
- application 212 uses an application programming interface (API) 214 to communicate with the quantum cloud system 230 through the network 220 .
- the API can expose the application to a quantum machine instruction library.
- the quantum machine instruction library may include, for example, calibration procedures, hardware tests, quantum algorithms, quantum gates, etc.
- the quantum machine instruction library can include a file structure, naming convention, or other system that allows the resources in the quantum machine instruction library to be invoked by quantum algorithms 222 .
- the API 214 is configured to allow the application 212 to generate quantum algorithms 222 that control both the classical processing system and quantum processing system using the quantum machine instruction library.
- access nodes 210 can include an access node datastore 216 .
- the access node datastore 216 contains information associated with the access node user, the access node 210 , a user account, application 212 , and application-specific data (i.e., data and variables used by or related to quantum algorithms 222 ). This information can be accessed by the application 212 when generating or transmitting a quantum algorithm 222 to the quantum cloud system 230 . In one embodiment, the information can be used to build, store, modify, or update user profiles.
- the information stored in the access node datastore 216 can include: inter-node security metrics, intra-node security metrics, network security metrics, authentication protocols, user account information and preferences, access node information and preferences, access node user information and preferences, a record of preferences and changes, location based information, identities of applications or other application information executing on an access node, and any other information associated with executing quantum algorithms 222 in the environment 200 .
- an access node can store a local copy of the quantum machine instruction library in access node datastore 216 .
- Access nodes 210 communicate with the quantum cloud system 230 via the network 220 , which may include any combination of local area and wide area networks employing wired or wireless communication links. In some embodiments, all or some of the communication on the network 220 may be encrypted or subject to security settings within the environment. In some examples, an access node 210 (e.g., access node 210 C) can be directly connected to and communicate directly with quantum cloud system 230 .
- the quantum cloud system 230 receives, interprets, and executes quantum algorithms 222 from an access node 220 .
- a user generates the quantum algorithm 222 on an access node 210 and transmits the quantum algorithm 222 to the quantum cloud system 230 .
- the quantum cloud system transmits the result 224 of the quantum algorithm 222 to the access node 210 .
- the quantum cloud system 230 includes a quantum processing system 300 , a classical processing system 400 , and a shared memory 240 .
- the quantum processing system includes controllers 310 , signal hardware 320 , and a quantum processing cell 330 .
- the quantum cloud system 230 includes a number of systems and modules, which refers to hardware components and/or computational logic for providing the specified functionality. That is, a system or module can be implemented in hardware elements, firmware, and/or software (e.g., a hardware server comprising computational logic, or computer storage medium comprising computational logic). Other embodiments can include additional systems and modules, can distribute functionality between systems and modules, and can attribute functionality to more or fewer systems or modules. Note that, in general, quantum processing systems and modules require specialty quantum hardware systems as described herein. Further, some modules of the quantum cloud system 230 are designed for control of the specialty quantum hardware systems.
- Quantum cloud system 230 includes a classical processing system 400 .
- the classical processing system 400 is described in more detail with reference to FIG. 4 .
- the classical processing system 400 receives a quantum algorithm 222 from an access node 210 and generates a set of algorithm instructions to determine the result of the quantum algorithm 222 .
- the quantum cloud system 230 executes the algorithm instructions to determine the result 224 of the quantum algorithm 222 and returns the result 224 of the quantum algorithm 222 to the access node 210 .
- the classical processing system 400 determines the set of algorithm instructions based on the quantum instruction language (e.g., Quil) of the received quantum algorithm and the quantum machine instruction library.
- the quantum instruction language e.g., Quil
- the quantum algorithm is executing on quantum cloud system 230 , which includes both classical and quantum systems
- the set of algorithm instructions can likewise include both classical instructions and quantum instructions.
- the quantum algorithm can be viewed as a quantum/classical algorithm (i.e., a “hybrid algorithm”).
- the classical instructions are instructions of the hybrid algorithm that execute on the classical processing system 400 .
- the quantum instructions are instructions of the hybrid algorithm that execute on the quantum processing system 300 .
- the quantum instructions are alternatively executed in the quantum virtual machine 420 , rather than on the quantum processing system 300 .
- Algorithm instructions can be scheduled for execution by the quantum cloud system 230 in a variety of manners.
- Instruction scheduling is a process that determines which instructions are executed on which resources at which times.
- the classical processing system 400 may schedule two classical instructions on the classical processing system 400 and a single quantum instruction on the quantum processing system 300 , and two synchronous quantum instructions on the quantum processing system 300 , etc.
- the classical processing system 400 directly schedules the quantum instructions on the quantum processing system 300 .
- executing a classical instruction initiates the scheduling and execution of a quantum instruction on the quantum processing system 300 .
- the scheduled algorithm instructions can be executed by the quantum cloud system 230 in a variety of manners.
- the quantum cloud system 230 may execute the two classical instructions, then the quantum instruction, then the three classical instructions, etc.
- the algorithm instructions are executed based on a system clock of the quantum cloud system (e.g., each instruction executes at a specific time).
- the algorithm instructions execute sequentially (e.g., a first instruction, a second instruction, etc.).
- the classical processing system 400 can schedule classical and quantum operations, or multiple quantum operations, to execute simultaneously on their respective systems.
- the classical processing system 400 may schedule algorithm instructions in any manner, consistent with some known or desired semantics, across any of the systems and modules of the quantum cloud system 230 such that, when executed, the algorithm instructions determine the result of the quantum algorithm.
- Classical processing system 400 includes a quantum virtual machine (QVM) 420 capable of simulating quantum operations on a classical system.
- the QVM 420 receives a hybrid algorithm including a classical state, a quantum state, and hybrid quantum-classical operations; in some embodiments the QVM could also use sparse representation.
- the QVM 420 represents the quantum state as a set of probability amplitudes stored in memory locations of the shared memory. The probability amplitudes are a complex number representing the probability of measuring a particular state of the quantum state in the measurement basis.
- the QVM 420 executes the quantum operations by manipulating both the shared memory and the probability amplitudes based on the characteristics of the quantum state and the hybrid quantum operations.
- the QVM 420 determines the result of the hybrid algorithm by simulating a measurement of the quantum state.
- the QVM 420 can perform “just in time” compilations, share the memory addresses that contain the classical representation of the quantum state, introduce error to the quantum state, or evolve the quantum state using the Feynman formalism.
- the QVM 420 may be instantiated on the classical processing system in different manners.
- the QVM 420 ( i ) may be an application installed on a datastore of the quantum cloud system 230 , (ii) an application executing on a partition of the quantum cloud system 230 and/or an access node 210 , and (iii) an application installed on an access node 210 or client device, etc.
- the QVM 420 may be downloaded from a network system (e.g., quantum cloud system 230 ) via the network 220 .
- Quantum cloud system 230 includes a quantum processing system 300 .
- the quantum processing system 300 is described in more detail with reference to FIG. 3 .
- the quantum processing system 300 is configured to execute quantum operations to facilitate determining the result of the quantum algorithm.
- the quantum processing system receives scheduled quantum instructions from the classical processing system 400 and executes the quantum instructions.
- the quantum processing system 300 receives and executes a quantum instruction as a result of the classical processing system 400 executing a classical instruction.
- the quantum processing system stores the result of the quantum computation in the shared memory 240 .
- the quantum processing system 300 returns the result of the quantum computation to the classical processing system 400 .
- the shared memory 240 stores information that can be used by any system or module of the quantum cloud system 230 to facilitate determining the result of a quantum algorithm (e.g., the quantum processing system 300 and the classical processing system 400 ).
- the shared memory 240 stores the result of executed quantum computations (e.g., qubit measurements) by the quantum processing system 300 , which are then directly accessible by the classical processing system 400 .
- the algorithm instructions can include information stored in the shared memory 240 of the quantum cloud system 230 .
- the shared memory 240 can store a rotation angle as an input parameter that a quantum instruction can access and apply to a qubit when executing.
- the shared memory 240 can store the results of two previously executed quantum operations which a classical instruction can perform arithmetic on using the classical processing system 400 .
- the shared memory 240 stores probability amplitudes for a quantum virtual state used by the QVM 420 . The probability amplitudes can be accessed at any time by elements of the quantum cloud system 230 .
- the researcher Providing a more contextual example of the environment 200 , consider a researcher working to understand the dynamics of protein folding in a biological environment.
- the researcher generates computer code modeling protein folding using a hybrid classical/quantum algorithm including several classical and quantum calculations.
- the code is generated on a client device 210 using an application 212 with an installed API 214 configured to generate code using a quantum programming language, such as the Quil programming language.
- the researcher transmits the code to the quantum cloud system 230 via the network 220 .
- the quantum cloud system 230 receives the code and the classical processing system 400 generates a set of algorithm instructions, including both classical instructions and quantum instructions, based on the code.
- the classical processing system 400 then schedules the algorithm instructions such that the result of the code can be determined.
- the classical processing system 400 schedules the classical operations on the classical processing system 400 , and the remainder of the quantum instructions on the quantum processing system 300 .
- the quantum processing system 300 executes the quantum instructions and stores the result in the shared memory 240 .
- the algorithm instructions executed across the systems and modules of the quantum cloud system 230 determine a result to the protein folding code. Once determined, the quantum cloud system 230 transmits the result to the client device 210 via the network 220 . The graduate student researcher celebrates the computation and completion of such a complex problem.
- FIG. 3 is a block diagram showing devices and interactions in an example quantum processing system 300 of the quantum cloud system 230 .
- the example quantum processing system 300 includes control system 310 , signaling hardware 320 , and a quantum processing cell 330 .
- the quantum processing system 300 may include additional or different features, and the components may be arranged differently from the arrangement described herein.
- the example quantum processing cell 330 includes a qubit device array, which includes qubit devices arranged in a two-dimensional or three-dimensional lattice structure.
- the qubits may be arranged in any interconnected structure.
- FIG. 3 shows five tunable qubit devices 312 ( 312 A, 312 C, 312 D, 312 E & 312V) and four other qubit devices 314 ( 314 A, 314 B, 314 C & 314 D).
- the tunable qubit devices are implemented as tunable transmon qubit devices, flux qubit devices, flatsonium qubit devices, fluxonium qubit devices, or other types of tunable devices.
- the other qubit devices 314 are also implemented as tunable qubit devices.
- the other qubit devices 314 are implemented as fixed-frequency qubit devices.
- other qubit devices 314 may be implemented as fixed-frequency transmon devices or other types of fixed-frequency qubit devices.
- the devices shown in FIG. 3 may be implemented by other types of devices or components.
- one or more of the qubit devices shown in FIG. 3 may be implemented as a resonator device, a coupler device, or otherwise.
- the quantum processor includes a quantum circuit system.
- the quantum circuit system may include qubit devices, resonator devices and possibly other devices that are used to store and process quantum information.
- the quantum processor includes a superconducting circuit, and the qubit devices are implemented as circuit devices that include Josephson junctions, for example, in superconducting quantum interference device (SQUID) loops or other arrangements, and are controlled by radio-frequency signals, microwave signals, and bias signals delivered to the quantum processor.
- the quantum processor includes an ion trap system, and the qubit devices are implemented as trapped ions controlled by optical signals delivered to the quantum processor.
- the quantum processor includes a spin system, and the qubit devices are implemented as nuclear or electron spins controlled by microwave or radio-frequency signals delivered to the quantum processor.
- the quantum processor may be implemented based on another physical modality of quantum computing.
- the devices are arranged in a rectilinear (e.g., rectangular or square) array that extends in two spatial dimensions, and each qubit device has up to four nearest-neighbor qubit devices.
- the devices can be arranged in another type of array (e.g., an ordered hexagonal array, an unordered random array, etc.).
- the rectilinear array also extends in a third spatial dimension to form a cubic array or another type of three-dimensional array.
- a third spatial dimension can also include components configured for signal delivery. Signal delivery in the third dimension can allow non-proximally located qubits to interact.
- the quantum processing cell 330 may include additional devices, including additional qubit devices, readout resonators, on chip parametric amplifiers, any type of interconnects, superconducting vias, etc.
- the quantum processing cell 330 can process quantum information by applying control signals (e.g., signals 308 ) to the qubits (e.g., qubits 312 and 314 ) in the quantum processing cell 300 .
- the control signals 308 can be configured to encode information in the qubits, to process the information by performing quantum logic gates or other types of operations, or to extract information from the qubits.
- the operations can be expressed as single-qubit logic gates, two-qubit logic gates, or other types of quantum logic gates that operate on one or more qubits.
- a sequence of quantum logic operations can be applied to the qubits to perform a quantum algorithm.
- the quantum algorithm may correspond to a computational task, a hardware test, a quantum error correction procedure, a quantum state distillation procedure, or a combination of these and other types of operations.
- Signal hardware 320 includes components that communicate with the quantum processing cell 330 .
- the signal hardware 320 may include, for example, waveform generators, amplifiers, digitizers, high-frequency sources, DC sources, AC sources and other type of components.
- the signal hardware may include additional or different features and components.
- components of the signal hardware 320 are adapted to interact with the quantum processing cell 330 .
- the signal hardware 320 can be configured to operate in a particular frequency range, configured to generate and process signals in a particular format, or the hardware may be adapted in another manner.
- one or more components of the signal hardware 320 generate signals 308 , for example, based on control information from control system 310 .
- the signals can be delivered to the quantum processing cell 330 to operate the quantum processor system 300 .
- the signal hardware 320 may generate signals 308 to implement quantum logic operations, readout operations or other types of operations.
- the signal hardware 320 may include arbitrary waveform generators (AWGs) that generate electromagnetic waveforms (e.g., microwave or radio-frequency) or laser systems that generate optical waveforms.
- AMGs arbitrary waveform generators
- the waveforms or other types of signals 308 generated by the signal hardware 320 can be delivered to devices in the quantum processing cell 330 to operate qubit devices, readout devices, bias devices, coupler devices or other types of components in the quantum processing cell 330 .
- the signal hardware 320 receives and processes signals from the quantum processing cell 330 .
- the received signals can be generated by operation of the quantum processing system 300 .
- the signal hardware 320 may receive signals 308 from the devices in the quantum processing cell 330 in response to readout or other operations performed by the quantum processing cell 330 .
- Signals 308 received from the quantum processing cell 330 can be mixed, digitized, filtered, or otherwise processed by the signal hardware 320 to extract information, and the information extracted can be provided to the control system 310 or handled in another manner.
- the signal hardware 320 may include a digitizer that digitizes electromagnetic waveforms (e.g., microwave or radio-frequency) or optical signals, and a digitized waveform can be delivered to the control system 310 or to other signal hardware components.
- the control system 310 processes the information from the signal hardware 320 and provides feedback to the signal hardware 320 ; based on the feedback, the signal hardware 320 can in turn generate new control signals that are delivered to the quantum processing cell 330 .
- the signal hardware 320 includes signal delivery hardware that interfaces with the quantum processing cell 330 .
- the signal hardware 320 may include filters, attenuators, directional couplers, multiplexers, diplexers, bias components, signal channels, isolators, amplifiers, power dividers and other types of components.
- the signal delivery hardware performs preprocessing, signal conditioning, or other operations to the control signals to be delivered to the quantum processing cell 330 .
- signal delivery hardware performs preprocessing, signal conditioning or other operations on readout signals received from the quantum processing cell 330 .
- Control system 310 communicates with the signal hardware 320 to control operation of the quantum processing system 300 .
- the control system 310 may include digital computing hardware that directly interface with components of the signal hardware 320 .
- the control system can include features similar to classical processing system 400 . That is, control system 310 may include processors, memory, clocks and other types of systems or subsystems.
- control system 310 can interpret the quantum instructions generated by classical processing system 400 and generate hardware-specific control sequences configured to execute the operations prescribed by the quantum machine instructions. For example, the control system 310 may generate control information that is delivered to the signal hardware 320 and converted to control signals that control the quantum processor cell 330 .
- Control system 310 can include one or more clocks that can assist in scheduling quantum operations. For example, operations performed by the control system 310 may be scheduled for execution over a series of clock cycles, and clock signals from one or more clocks can be used to control the relative timing of each operation or groups of operations. In some cases, the control system 310 schedules control operations according to quantum instructions generated from a quantum (or hybrid) algorithm, and the control information is delivered to the signal hardware 320 according to the schedule in response to clock signals from a clock or other timing system.
- control system 310 can execute classical computer program instructions (e.g., instructions formatted as software, firmware, or otherwise).
- the control system 310 may execute a quantum processor unit 330 (QPU) driver software, which may include machine code compiled from any type of programming language (e.g., Python, C++, Common Lisp, etc.) or instructions in another format.
- QPU driver software receives quantum instructions (e.g., based on information from the cloud quantum computing system 230 ) and quantum state information (e.g., based on information from the signal hardware 320 ), and generates control signals and sequences for the quantum processing cell 330 based on the quantum machine instructions and quantum state information.
- Control system 310 generates control information (e.g., a digital waveform) that is delivered to the signal hardware 320 and converted to control signals 308 (e.g., analog waveforms) for delivery to the quantum processing cell 330 .
- the digital control information can be generated based on quantum instructions, for example, to execute quantum logic operations, readout operations, or other types of control.
- Control system 310 extracts qubit state information from qubit readout signals, for example, to identify the quantum states of qubits in the quantum processor cell 102 or for other purposes.
- the controllers may receive the qubit readout signals (e.g., in the form of analog waveforms) from the signal hardware 320 , digitize the qubit readout signals, and extract qubit state information from the digitized signals.
- the quantum processing system 300 can span multiple different temperature and noise regimes.
- the signaling hardware 320 can include a series of temperature stages (e.g., 60 K, 3 K, 350 mK, 300 mK, 5 mK) that decrease between a higher temperature regime of the control system 310 and a lower temperature regime of the quantum processing cell 330 .
- the quantum processing cell 330 and in some cases all or part of the signaling hardware 320 , can be maintained in a controlled cryogenic environment.
- the cryogenic environment can be provided, by shielding equipment, cryogenic equipment, and other types of environmental control systems.
- the tunable qubit devices 312 are housed between neighboring pairs of the other qubit devices 314 in a device array within the quantum processing cell 330 .
- the quantum states of the respective qubit devices can be manipulated by control signals or read by readout signals generated by the control system 310 and signaling hardware 320 .
- the qubit devices can be controlled individually, for example, by delivering control signals 308 to the respective qubit devices.
- a neighboring pair of qubit devices e.g., tunable qubit device 312 C and other qubit device 314 A
- readout devices can detect the states of the qubit devices, for example, by interacting directly with the respective qubit devices.
- each tunable qubit device 312 has one or more tunable transition frequencies.
- the transition frequency is the energy level between any two adjacent energy levels in a qubit device.
- the transition frequency of a qubit device is tunable, for example, by application of an offset field.
- the transition frequencies of the tunable qubit devices 312 can be tuned by applying an offset field to the tunable qubit device.
- the offset field can be, for example, a magnetic flux bias, a DC electrical voltage, AC electrical voltage or another type of field.
- the tunability of the tunable qubit devices 312 in the quantum processing cell 330 allows neighboring pairs of qubits to be selectively coupled on-demand to perform multi-qubit gates, to entangle neighboring pairs of qubits, or to perform other types of operations.
- the tunable qubit devices can have a high “on/off” ratio, which refers to the ratio of the effective coupling rate provided by control of the tunable qubit device.
- each tunable qubit device can include a superconducting circuit loop including two Josephson junctions and a capacitor structure in parallel with the junctions.
- the other qubit devices 314 are implemented as fixed frequency qubit devices.
- a fixed frequency qubit device includes a Josephson junction connected in parallel with a capacitor structure.
- the transition frequency of a fixed-frequency qubit device is based in part on the Josephson energy of the junction.
- the coupling of a fixed-frequency qubit device with neighboring fixed-frequency qubit devices allows multi-qubit gate operations to be performed.
- the frequency of the qubit is not tunable with an offset field, and the qubit devices are less sensitive to low frequency flux noise, yielding improved longer coherence times.
- each of the qubit devices can be encoded with a single bit of quantum information.
- each of the qubit devices has two eigenstates that are used as basis states
- the two lowest energy levels (the ground state and first excited state) of each qubit device are defined as a qubit and used as basis states for quantum computation.
- higher energy levels e.g., a second excited state or a third excited state
- the information encoded in the qubit devices of the quantum processing cell 330 can be processed by operation of the tunable qubit devices 312 .
- input information can be encoded in the computational states or computational subsystems defined by some or all of the qubit devices in the quantum processing cell 330 .
- the information can be processed, for example, by applying a quantum algorithm or other operations to the input information.
- the quantum algorithm may be decomposed as gates or instruction sets that are performed by the qubit devices over a series of clock cycles.
- a quantum algorithm may be executed by a combination of single-qubit gates and two-qubit gates.
- information is processed in another manner. Processing the information encoded in the qubit devices can produce output information that can be extracted from the qubit devices.
- the output information can be extracted, for example, by performing state tomography or individual readout operations. In some instances, the output information is extracted over multiple clock cycles or in parallel with the processing operations.
- the control system 310 sends control signals 308 to the tunable qubit devices in the quantum processing cell 330 using the signaling hardware 320 .
- the control signals can be configured to modulate, increase, decrease, or otherwise manipulate the transition frequencies of the tunable qubit devices 312 .
- the control system 310 sends control signals 308 to the tunable qubit device 312 C to generate interactions between the tunable qubit device 312 C and individual nearest neighbor qubit devices.
- the control signals 308 can generate a first interaction 316 A between the tunable qubit device 312 C and the other qubit device 314 A, a second interaction 316 B between the tunable qubit device 312 C and the other qubit device 314 B, a third interaction 316 C between the tunable qubit device 312 C and the other qubit device 314 C, a fourth interaction 316 D between the tunable qubit device 312 C and the other qubit device 314 D, or a combination of them in series or in parallel.
- quantum algorithms include a set of quantum instructions (e.g. computations) that can be executed by the quantum cloud system.
- a quantum instruction can alter the state of a qubit, encode the state of a qubit, measure the state of a qubit, etc.
- a quantum computation e.g., those generated from a quantum algorithm
- Quantum gates are the building blocks of the quantum algorithm and function similarly to logic gates in traditional computation systems and algorithms.
- applying a quantum gate entails sending a specific set of signals for superconducting qubits to the control hardware of a qubit which induces a change in the state of the qubit.
- the control signals are configured to generate interactions that apply quantum gates on the quantum states (e.g., change, measure, etc.) of one or more of the qubit devices.
- the control signals 308 generates an interaction that applies a parametrically activated two-qubit quantum gate to a pair of qubits defined by the tunable qubit device 312 C and one or more of the other qubit devices 314 .
- the control signals 308 may activate quantum gates by modulating a transition frequency of the tunable qubit device 312 C, for example, at a modulation frequency. For instance, the modulation of the transition frequency over a specified time period can produce the unitary evolution associated with the quantum gate.
- Quantum gates can act on any number of qubits. For example, a swap quantum gate acts on two qubits and swaps the state information of the two qubits. Additionally, some two qubit gates are considered controlled gates. In controlled gates, the state of one of the qubits being acted on acts as a control for the quantum operation. Controlled gates are generally used to generate entangled qubits.
- control system 310 sends control signals 308 to the tunable qubit device 312 C via the signaling hardware to generate interactions between the tunable qubit device 312 C and individual nearest neighbor qubit devices.
- control signals 308 can generate a first interaction 316 A between the tunable qubit device 312 C and the other qubit device 314 A, a second interaction 316 B between the tunable qubit device 312 C and the other qubit device 314 B, a third interaction 316 C between the tunable qubit device 312 C and the other qubit device 314 C, a fourth interaction 316 D between the tunable qubit device 312 C and the other qubit device 314 D, or a combination of them in series or in parallel.
- quantum instructions generated from a quantum algorithm 222 can include instructions to apply a quantum gate (or series of quantum gates) on the qubits of the quantum processor 300 .
- the quantum instructions can include additional information to facilitate the application of a quantum gate to a qubit.
- the set of information k can include the location of the qubit on the quantum processor, timing instructions for the execution of the quantum computation, control signal information for applying the quantum gate, information from the shared memory for executing the quantum computation, etc.
- the result R of the quantum computation can include changing the state of the qubit, changing the position of the qubit on the quantum processor, measuring the state of the qubit, maintaining the state of the qubit, erasing the qubit, etc.
- FIG. 4 is a block diagram illustrating components of an example classical processing system 400 that facilitates determining the result of a quantum algorithm in the quantum cloud system of FIG. 2 . Additionally, the classical processing system 400 is capable of reading and executing instructions from a machine-readable medium.
- FIG. 4 shows a diagrammatic representation of the classical processing system 400 of FIG. 2 .
- the classical processing system can generate algorithm instructions using the classical processors 402 . Further, the classical processing system 400 can be used to execute the classical instructions 424 of the algorithm instructions.
- the classical processing system 400 operates as a standalone device or a connected (e.g., networked) device that connects to the network system.
- the classical processing system may be a server computer, capable of executing the classical instructions 424 (sequential or otherwise) that specify actions to be taken by the classical processing system 400 to determine the result of the quantum algorithm.
- the classical processing system 400 may be a non-uniform memory architecture, a distributed machine like a supercomputer, or some other high-fidelity distributed computing environment.
- the example classical processing system 400 includes one or more processing units (hereinafter referred to as processor 402 ).
- the processor 402 is, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a controller, a state machine, one or more application specific integrated circuits (ASICs), a field programmable gate array (FPGA), one or more radio-frequency integrated circuits (RFICs), or any combination of these.
- the processors 402 can generate control information, for example, based on the determined algorithm instructions (e.g., a set of quantum gates, offset field signals, quantum simulation parameters, etc.) to be performed by the quantum computing system 300 .
- algorithm instructions e.g., a set of quantum gates, offset field signals, quantum simulation parameters, etc.
- the classical processing system 400 also includes a main memory 404 .
- the computer system may include a storage unit 416 .
- the processor 402 , memory 404 , and the storage unit 416 communicate via a bus 408 .
- the computer processing system 400 can include a static memory 406 .
- the classical processing system 400 includes a storage unit 416 .
- the storage unit 416 includes a machine-readable medium 422 on which the classical instructions 424 embodying any one or more of the methodologies or functions described herein can be stored.
- the classical instructions 424 may include the functionalities of modules and systems of the quantum cloud system 230 described in FIG. 2 .
- the classical instructions 424 may also reside, completely or at least partially, within the main memory 404 or within the processor 402 (e.g., within a processor's cache memory) during execution thereof by the computer system 400 , the main memory 404 and the processor 402 also constituting machine-readable media.
- the instructions 424 may be transmitted or received over a network 426 via the network interface device 419 .
- the memory systems can include, for example, a random access memory (RAM), a storage device (e.g., a writable read-only memory (ROM) or others), a hard disk, or another type of storage medium.
- RAM random access memory
- ROM read-only memory
- the memory can include various forms of memory, media and memory devices, including by way of example, semiconductor memory devices (e.g., EPROM, EE PROM, flash memory devices, and others), magnetic disks (e.g., internal hard disks, removable disks, and others), magneto optical disks, and CD ROM and DVD-ROM disks.
- the classical processing system 400 may also include a graphics display 410 (e.g., to drive a plasma display panel (PDP), a liquid crystal display (LCD), or a projector), alphanumeric input device 412 (e.g., a keyboard), a cursor control device 414 (e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), and a network interface device 419 , which also are configured to communicate via the bus 408 .
- PDP plasma display panel
- LCD liquid crystal display
- a projector e.g., a graphics display 410
- alphanumeric input device 412 e.g., a keyboard
- a cursor control device 414 e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument
- network interface device 419 which also are configured to communicate via the bus 408 .
- the classical processing system includes a signal generation device 418 .
- the signal generation device can include radio frequency (RF) or microwave ( ⁇ W) generators, radio frequency (RF) or microwave ( ⁇ W) receivers, DC sources, or other type of radio frequency (RF) or microwave ( ⁇ W) devices.
- radio frequency (RF) or microwave ( ⁇ W) generators and DC sources of the signal generation devices 418 can each generate control signals based on control information provided by the processors 402 .
- the control signals can be delivered to the quantum processing system 300 by the signal generation devices 418 , for example, and interact with circuit devices in the quantum processing cell 330 .
- radio frequency (RF) or microwave ( ⁇ W) receivers in the signaling hardware 418 can receive and process signals from the quantum processing cell 330 .
- receivers in the signaling hardware 418 can include a digitizer, a microwave source, and other types of signal processing components.
- the receivers of the signaling hardware 418 can process (e.g., digitize, or otherwise process) the signals from the quantum processing cell 330 and provide the processed information to the processors 402 .
- the processors 402 can extract data to identify the quantum states of qubits in the quantum processing cell 330 or for other purposes.
- machine-readable medium 422 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions 424 .
- the term “machine-readable medium” shall also be taken to include any medium that is capable of storing instructions 424 for execution by the machine and that cause the machine to perform any one or more of the methodologies disclosed herein.
- the term “machine-readable medium” includes, but is not be limited to, data repositories in the form of solid-state memories, optical media, and magnetic media.
- the classical processing system 400 operates based on a clock cycle or another type of synchronization scheme.
- the synchronization scheme can be based on a quantum algorithm or quantum processing task.
- the quantum algorithm or quantum processing task may be expressed as a sequence of instructions corresponding to quantum gates, readouts, or other operations on the qubit devices, and a subset of the instructions can be executed on each clock cycle.
- the classical processing system 400 on each clock cycle, the classical processing system 400 generates control signals to implement a subset of instructions, control signals are delivered to the quantum computation system 300 , and qubit readout signals are delivered to the classical processing system 400 .
- the control signals delivered on each clock cycle can be configured, for example, based on the sequence of instructions, based on readout signals from a previous cycle, quantum error correction operations, error matching calculations, other information, or a combination of these.
- client devices may be similarly configured to the classical processing system 400 . That is, the client devices can include any elements of the classical processing system, or any additional element, such that the client devices are able to send quantum algorithms or instructions to the quantum cloud system and receive the results of quantum algorithms in response.
- the quantum virtual machine (QVM) 420 simulates a hybrid algorithm including quantum operations on the classical processing system 400 .
- the classical processing system 400 can determine that the hybrid algorithm His more efficiently executed on the QVM 420 rather than the quantum processing 300 system based on the complexity of the hybrid algorithm H.
- determining that the hybrid algorithm is more efficiently executed on a QVM can be based on the number of quantum operations included in the quantum algorithm, the length (in time, or in number of executions) of the hybrid algorithm, the number of qubits included in the hybrid algorithm, power and cost considerations for executing the hybrid algorithm on a quantum processor vs. a classical processor, and the like.
- the hybrid algorithm H can include an indicator representing that the hybrid algorithm H will be executed on the quantum virtual machine QVM rather than the quantum processing system 300 .
- a hybrid algorithm H received by the quantum cloud system 230 that can be simulated by the QVM 420 includes an encoding of a virtual quantum state.
- the virtual quantum state can be stored by the QVM 420 in the shared memory 240 in some embodiments.
- the virtual quantum state includes n qubits that form a virtual wavefunction
- FIG. 5 is a visual example of a virtual quantum state stored in the shared memory as virtual wavefunction ⁇ .
- the virtual wavefunction ⁇ 510 represents n qubits included in the quantum virtual state (n total qubits).
- the virtual wavefunction ⁇ 510 is represented by a set of probability amplitudes ⁇ 520 .
- the probability amplitudes ⁇ 520 are a complex probability that the n total qubits are measured in a particular combination in a measurement basis. Thus, there are 2 n probability amplitudes ⁇ 520 that represent the virtual wavefunction ⁇ 510 .
- Each of the probability amplitudes ⁇ 520 are stored in a memory location L 530 of the shared memory 240 . Thus, there are 2 n shared memory locations L 530 for the probability amplitudes ⁇ 520 representing a virtual wavefunction ⁇ 510 .
- FIG. 5 assumes dense representation.
- each permutation of the n total qubits can be represented by a bitwise address.
- a bitwise address is a representation for a distinct selection of qubits when that distance selection of qubits is measured in the computational basis. Therefore, each of the probability amplitudes ⁇ is associated with a bitwise address that represents each distinct selection of n total qubits that have that probability amplitude ⁇ .
- the bitstring address may be represented as a bitstring vector.
- a subset of probability amplitudes ⁇ representing a subset of the n total qubits may be represented as a sub-bitstring vector.
- the bitwise addresses for a virtual wavefunction including three qubits can be represented by Table 1.
- the first column represents all possible combinations of qubits in the virtual wavefunction ⁇ when measured in the computational basis.
- the second through fourth column in combination, represent the bitwise addresses for all combinations of qubits in the virtual wavefunction ⁇ .
- the second through fourth column individually, represent a classical measurement for each of the three qubits Q 1 , Q 2 , and Q 3 in the virtual wavefunction ⁇ .
- the fifth column represents the probability amplitude ⁇ for each possible combination of qubits in the virtual wavefunction ⁇ .
- a virtual wavefunction ⁇ that includes n total qubits is represented by 2 n probability amplitudes ⁇ stored at 2 n memory locations L.
- Each 2 n probability amplitudes ⁇ is associated with a bitwise address.
- the bitwise addresses for the n total qubits of the virtual wavefunction ⁇ are, effectively, a bitwise counter from 0 to 2 n-1 .
- the bitwise addresses are 0000000, 0000001, 0000010, 0000011, . . . , 1111111.
- Each of the 2 7 probability amplitudes ⁇ associated with a bitwise address is stored at one of 2 7 memory locations in the shared memory.
- the QVM 420 can manipulate the virtual wavefunction using quantum operations U included in a hybrid algorithm H.
- the quantum operations U can act on any k number of qubits included in the virtual wavefunction (k acted-on qubits) and change the probability amplitudes ⁇ associated with each bitwise address of the virtual wavefunction ⁇ .
- the QVM executes a quantum operation U by accessing subsets of the probability amplitudes ⁇ and performing the quantum operation U on the accessed subsets of probability amplitudes a.
- the order of the k acted-on qubits of a quantum operations U is significant.
- the QVM 420 accesses the probability amplitudes ⁇ in each subset in a particular order and performs the quantum operation U on a particular order of probability amplitudes a.
- the QVM 420 can perform any number of quantum operations U on a virtual wavefunction ⁇ and after every quantum operation some, or all, of the probability amplitudes ⁇ may change.
- the QVM 420 can evolve a quantum virtual state (pure state evolution) using quantum operations U acting on a virtual wavefunction ⁇ . Executing a hybrid algorithm H to evolve a quantum virtual state using the QVM 420 is described in more detail in Section VIII.
- a quantum operation may be represented in the shared memory as a matrix, a sparse matrix, a permutation representation, a diagonal representation of a matrix, or any other way to represent a quantum operation.
- FIG. 6 is a visual example of a state evolution of a quantum virtual state including a virtual wavefunction ⁇ by executing a quantum operation U on complex amplitudes ⁇ of the virtual wavefunction ⁇ stored in shared memory.
- FIG. 6 includes a virtual wavefunction 610 of n total qubits represented by 2 n probability amplitudes ⁇ i stored in 2 n memory locations 630 of the shared memory 240 .
- Virtual wavefunction ⁇ ′ n 610 B is represented by complex amplitudes ⁇ ′ i 620 B stored in memory locations 630 .
- Virtual wavefunction ⁇ ′ n 610 C is represented by complex amplitudes ⁇ ′′ i 620 C stored in memory locations 630 .
- Virtual wavefunction ⁇ * n 610 D is represented by complex amplitudes ⁇ * i 620 D stored in memory locations 630 .
- Quantum operations U of the hybrid algorithm H can act on any subset of the qubits (k acted on qubits) included in the n qubits (n total qubits) of the virtual wavefunction ⁇ .
- FIG. 7 illustrates a method for executing quantum operations U on a virtual wavefunction ⁇ based on the n total qubits and the k acted-on qubits.
- the method 700 of this embodiment can include additional or fewer steps, or the steps can be executed in another order.
- the quantum cloud system 230 receives 710 a hybrid algorithm H from an access node 210 via the network 220 .
- the hybrid algorithm H includes a quantum virtual state including virtual wavefunction ⁇ of n total qubits.
- the QVM 420 initializes the virtual wavefunction ⁇ in the shared memory 240 as a vector of 2 n probability amplitudes ⁇ (i.e., a bitstring vector).
- the virtual wavefunction ⁇ can include entangled qubits and/or untangled qubits. Each probability amplitude ⁇ is stored in a memory location L and is associated with a bitwise address.
- the bitwise address for each probability amplitude ⁇ represents a particular combination of qubits in the virtual wavefunction ⁇ measured in the computational basis (as shown in Table 1).
- the hybrid algorithm H includes a quantum operation U that evolves the virtual wavefunction ⁇ by applying the quantum operation U on subsets of the probability amplitudes ⁇ of the virtual wavefunction ⁇ .
- the quantum operation U includes k acted-on qubits of the n total qubits.
- the quantum operation U is sometimes represented as a 2 k ⁇ 2 k matrix and is stored in the shared memory 240 .
- the QVM determines 720 an ordered sequence of virtual partial wavefunctions based on the n total qubits and the k acted-on qubits.
- the QVM determines that there are 2 n-k virtual partial wavefunctions in a sequence and each virtual partial wavefunction is a vector of length 2 k .
- a virtual partial wavefunction ⁇ is some subset of the probability amplitudes ⁇ representing the virtual wavefunction ⁇ (i.e., a sub-bitstring vector) that can be represented as a vector of length 2 k . Therefore, each element of the virtual partial wavefunction is a probability amplitude ⁇ of the virtual wavefunction ⁇ .
- the QVM 420 determines 720 the elements and the element order for each virtual partial wavefunction ⁇ of the set of virtual partial wavefunctions based on n total qubits and the k acted-on qubits. To begin, the QVM 420 “mutes” bits of the bitwise addresses of the virtual wavefunction ⁇ associated with the k acted-on qubits. Muting a bit of the bitstring address results in the QVM 420 ignoring those bits when selecting probability amplitudes ⁇ for the elements of a virtual partial wavefunction and ordering the selected elements based on the muted bits. Each 2 n bitstring address is associated with a probability amplitude ⁇ and has k muted bits and n ⁇ k unmuted bits.
- the i th bit of the bitstring address is muted.
- the muted bitstring addresses are “0 x0” “0x1,” “0 x0,” “0x1,” . . . and “1x1,” where each “x” represents a muted bit.
- a span counter is a representation of all n ⁇ k unmuted bits in the bitwise addresses of a qubit-string.
- a span counter is a bitwise representation of all distinct choices of bits in a virtual wavefunction ⁇ that the quantum operation U does not act on.
- the span counter is a bitwise counter of n ⁇ k bits with 2 n-k combinations of bits and each bit in the span counter is associated with one of the n-k qubits in the virtual wavefunction ⁇ that the quantum operation U does not act on. For example, consider a virtual wavefunction including an i th , j th , and k th qubit.
- the i th , j th , and k th qubit are each associated with the i th , j th , and k th bit in the bitwise addresses of the virtual wavefunction ⁇ .
- the quantum operation U operates on the i th qubit of the virtual wavefunction ⁇ . Therefore, the span counter is a bitwise representation of all selections of the j th and k th bits of the virtual wavefunction.
- the span counter is generated from the unmuted bits in the bitwise addresses (the column of qubits Q 1 and Q 3 ).
- the span counter is all possible combinations of the unmuted bits in the bitwise addresses, which are, in this case, are “00,” “01,” “10,” and “11.”
- the span counter includes all possible combinations of bits in the bitwise addresses absent the bits associated with first qubit Q 1 and third qubit Q 3 , which, in this case, are “0” and “1”.
- the QVM 420 determines the elements for each of the set of virtual partial wavefunctions using the span counter and the muted bitstring addresses.
- the span counter includes n ⁇ k bits having 2 n-k bitwise combinations of the n ⁇ k bits.
- the bitwise addresses include 2 n bitwise combinations of the n qubits in the virtual wavefunction ⁇ . However, when considering the k muted bits in the muted bitwise addresses for the virtual wavefunction ⁇ , there are 2 n-k combinations of bits with each combination having 2 k repeated combinations of bits.
- the QVM 420 determines that the 2 k elements for each of the set of 2 n-k virtual partial wavefunctions are the 2 k probability amplitudes ⁇ associated with the 2 k muted bitstring addresses that have the same n ⁇ k unmuted bits as the n ⁇ k bits in the span counter.
- the QVM 420 determines that the elements for one of the set of quantum sub bitstrings ⁇ are the probability amplitudes ⁇ 000 , ⁇ 001 , ⁇ 010 , and ⁇ 011 associated with those four bitstring addresses.
- the other virtual partial wavefunctions in the set are similarly determined based on the span counter and muted bitstring addresses.
- the QVM 420 can determine the order for the elements for each of the virtual partial wavefunctions based on the muted bitstring addresses and the k acted-on qubits.
- the order that quantum operation U acts on the k acted-on qubits determines the order of the 2 k elements in each of the 2 n-k virtual partial wavefunctions.
- the order of the determined elements for each virtual partial wavefunction ⁇ follows the bitwise counting of muted bits in the bitstring address for the determined elements according to the order of the k acted-on qubits.
- the virtual wavefunction ⁇ including an i th , j th , and k th qubit and a quantum operation U that acts on the j th and k th qubits of the virtual wavefunction ⁇ .
- the j th and k th bits of the virtual wavefunction ⁇ are muted.
- the determined elements for the virtual partial wavefunction ⁇ are the 4 probability amplitudes ⁇ associated with a bitstring address whose unmuted i th bits are the same as the bit of the span counter.
- the order of the determined probability amplitudes for the virtual partial wavefunction ⁇ follows the bitwise counting of the j th and k th muted bits.
- the order of the determined probability amplitudes ⁇ follows the bitwise counting of the k th and j th muted bits.
- the determined elements of a virtual partial wavefunction ⁇ are the probability amplitudes ⁇ 000 , ⁇ 001 , ⁇ 010 , and ⁇ 011 that have the same muted bitstring address (“0xx”) as the first entry in the span counter “0”.
- the muted bits in the muted bitstring addresses follow “00” “01” “10” and “11” where the first bit is associated with the second qubit Q 2 and the second bit is associated with the third qubit Q 3 .
- the order of the probability amplitudes follows the order of the bitwise counting of the muted bits.
- the QVM determines the probability amplitudes are ordered as ⁇ 000 , ⁇ 001 , ⁇ 010 , and ⁇ 011 .
- the muted bits in the muted bitstring addresses follow “00” “01” “10” and “11” where the first bit is associated with the third qubit and the second bit is associated with the second qubit.
- the QVM determines the probability amplitudes are ordered as ⁇ 000 , ⁇ 010 , ⁇ 001 , and ⁇ 011 .
- the QVM accesses 730 the probability amplitudes ⁇ determined 720 for each virtual partial wavefunction ⁇ of the set of virtual partial wavefunctions from their corresponding memory locations. Because each of the virtual partial wavefunctions ⁇ accesses probability amplitudes ⁇ from different memory locations, the QVM can utilize a different processor for each virtual partial wavefunction.
- the QVM executes 740 the quantum operation U on the set of virtual partial wavefunctions.
- executing the quantum operation U on the set of virtual partial wavefunctions includes a matrix multiplication of the quantum operation U and each virtual partial wavefunction ⁇ of the set of virtual partial wavefunctions.
- the quantum operation U acting on k qubits can be represented by a 2 k ⁇ 2 k matrix and each virtual partial wavefunction ⁇ is represented by a 2 k vector.
- the quantum operation can be a permutation representation. Executing the quantum operation U on a virtual partial wavefunction ⁇ yields a resulting virtual partial wavefunction ⁇ *.
- the resulting virtual partial wavefunction ⁇ * is a 2 k vector including 2 k resulting probability amplitudes ⁇ *.
- the QVM 420 stores 750 the resulting probability amplitudes ⁇ * in the memory locations L of the corresponding accessed probability amplitudes ⁇ . More explicitly, each accessed probability amplitude is assigned a vector location in a 2 k virtual partial wavefunction and each resulting probability amplitude has a vector location in the 2 k resulting virtual partial wavefunction ⁇ . The resulting probability amplitudes ⁇ * at a given vector location of the resulting virtual partial wavefunction ⁇ * are stored in the same memory location L of the accessed probability amplitude ⁇ having the same vector location in the virtual partial wavefunction ⁇ .
- the accessed probability amplitude ⁇ from the memory location L i is assigned the j th vector location of the virtual partial wavefunction ⁇
- the resulting probability amplitude a* in the j th vector location of the resulting virtual partial wavefunction ⁇ * is stored in memory location L i .
- the QVM 420 determines 760 the result of the hybrid algorithm based on the stored resulting probability amplitudes ⁇ *. Generally, the QVM 420 determines 750 the result by executing a measurement operation on the evolved virtual wavefunction.
- the measurement operation is generally one or more matrix multiplications that calculates a probability of observing a specific combination of qubits from the resulting probability amplitudes. That is, a measurement calculates
- FIGS. 8A-8F are diagrams representing an example execution of a hybrid algorithm H using the QVM using method 700 , according to one example embodiment.
- Execution of the hybrid algorithm H includes evolving a quantum virtual state using the quantum virtual machine.
- the quantum virtual machine receives a hybrid algorithm H including a single quantum operation U.
- the left-hand table of FIG. 8A is a visual representation 800 of the virtual wavefunction ⁇ .
- the first column 802 represents all possible combinations of the 4 qubits of the virtual wavefunction ⁇ in the measurement basis.
- the second through fifth columns represent the bitwise address 804 for each of the possible combinations of the 4 qubits in the virtual wavefunction ⁇ .
- Each bit of the bitwise address 804 is associated with a qubit of the virtual wavefunction ⁇ . That is, the first bit of the bitwise address 804 is associated with the first qubit of the virtual wavefunction ⁇ , the second bit of the bitwise address 804 is associated with the second qubit of the virtual wavefunction ⁇ , etc.
- each combination of the 4 qubits has 4 bits that make up its bitwise address 804 .
- Each combination of qubits, or bitwise address 804 has a probability amplitude ⁇ 806 stored at memory location L n 808 .
- the virtual wavefunction ⁇ can be stored as a vector including 16 probability amplitudes ⁇ .
- the QVM 420 determines a number of virtual partial wavefunctions ⁇ 810 and their elements.
- the virtual partial wavefunctions ⁇ 810 are illustrated as the set of empty vectors on the right side of FIG. 8A .
- the QVM 420 mutes the bits of the bitwise addresses 804 based on the k acted-on qubits.
- the QVM 720 mutes the first bit and the third bit of the bitwise address 804 because the quantum operation U acts on the first and third qubit of the virtual wavefunction ⁇ 800 .
- FIG. 8B shows a representation of the virtual wavefunction 800 with the bits of the bitwise addresses 804 associated with the first and third qubit muted (muted bitwise addresses 820 ).
- a muted bit 822 includes a “x” overlaid on the “0” or “1” of the bitwise address.
- the QVM 420 generates a span counter 830 based on the n total qubits and the k acted-on qubits.
- the span counter 830 includes every bitwise combination of the unmuted bits in the muted bitwise addresses 820 .
- the span counter 830 is illustrated as a table including the possible combinations of unmuted bits (the second bit and fourth bit of the muted bitwise addresses 820 ).
- the QVM 420 determines 720 the virtual partial wavefunction ⁇ 810 elements based on the muted bitstring addresses 820 and the span counter 830 , accesses 730 probability amplitudes ⁇ 806 , executes 740 the quantum operation U, and stores 750 the resulting probability amplitudes.
- the 4 elements for a virtual partial wavefunction ⁇ 810 are, for each combination of 2 bits in the span counter 830 , the probability amplitudes ⁇ 806 that have a muted bitwise address 820 that are the same for that combination of bits in the span counter 830 .
- the QVM 420 accesses 730 the probability amplitudes 806 for each virtual partial wavefunction ⁇ 810 and executes 740 the quantum operation U on the virtual partial wavefunction ⁇ 810 .
- the result of the quantum operation is 4 resulting virtual partial wavefunctions ⁇ ′ 812 including a set of 4 resulting probability amplitudes.
- the QVM 420 stores 750 the resulting probability amplitudes in the memory locations 808 of the corresponding bitwise addresses 804 for the accessed probability amplitudes 806 .
- FIG. 8C-8E shows the processes of determining 720 virtual partial wavefunction elements, accessing 730 the probability amplitudes, executing 740 the quantum operation, and storing 750 the resulting probability amplitudes for each virtual partial wavefunction ⁇ 810 .
- the 4 elements for a virtual partial wavefunction ⁇ 810 are, for each combination of 2 bits in the span counter 830 , the probability amplitudes ⁇ 806 that have a muted bitwise address 820 that are the same for that combination of bits in the span counter 830 .
- the order of the accessed probability amplitudes ⁇ 806 is based on the k acted-on qubits.
- the QVM 420 accesses 730 the probability amplitudes 806 for each virtual partial wavefunction ⁇ 810 and executes 740 the quantum operation U on the virtual partial wavefunction ⁇ 810 .
- the result of the quantum operation is 4 resulting virtual partial wavefunctions ⁇ ′ 812 including sets of 4 resulting probability amplitudes 816 .
- the QVM 420 stores 750 the resulting probability amplitudes in the memory locations 808 corresponding to the bitwise addresses 804 for the accessed probability amplitudes 806 .
- FIG. 8C shows the determining 720 , accessing 730 , executing 740 , and storing 750 processes for the first virtual partial wavefunction ⁇ 1 810 A.
- the span counter 830 indicates “00” (indicated with a circled 1) as the bits for determining 720 elements of the first virtual partial wavefunction ⁇ 1 810 A.
- the QVM 420 determines 720 that the elements for the first virtual partial wavefunction ⁇ 1 810 A (indicated with a circled 2) are probability amplitudes 806 ⁇ 0000 , ⁇ 0010 , ⁇ 1000 , and ⁇ 1010 because their muted bitwise addresses 820 are “x0x0” which are similar to the span counter 830 “00” when ignoring the muted bits 822 .
- the order of the elements for the first virtual partial wavefunction ⁇ 1 810 A follows the bitwise counting of the muted bits 822 for the first qubit and third qubit. That is, in this example, the element order follows the “00,” “01,” “10,” and “11” bits of the first and third columns of the muted bitwise addresses 820 whose unmuted bits are the same as the span counter 830 .
- the QVM 720 accesses 730 (indicated with a circled 3) the probability amplitudes 806 from the memory locations 808 L 1 , L 3 , L 9 and L 11 , respectively.
- the QVM 420 executes (indicated with a circled 4) the quantum operation U 840 on the first virtual partial wavefunction ⁇ 1 810 A using a matrix multiplication that generates (indicated by circled 5) a resulting virtual partial wavefunction ⁇ * 1 812 A which includes the resulting probability amplitudes 816 ⁇ * 0000 , ⁇ * 0010 , ⁇ * 1000 , and ⁇ * 1010 .
- the QVM 420 stores 750 (indicated by circled 6) the resulting probability amplitudes 816 for a given vector location in the resulting virtual partial wavefunction ⁇ * 1 812 A at the same memory 808 location as the accessed probability amplitude 806 in the same vector location of the virtual partial wavefunction 810 A. That is, in this example, ⁇ * 0000 is stored in memory location L 1 , ⁇ * 0010 is stored in memory location L 3 , ⁇ * 1000 is stored in memory location L 9 , and ⁇ * 1010 is stored in memory location L 11 .
- the accessed 730 probability amplitudes 806 are ordered as ⁇ 0000 , ⁇ 1000 , ⁇ 0010 , and ⁇ 1010 .
- the order of the elements follows the bitwise counting of the muted bits for the third qubit and first qubit (rather than first and third, as above). Accordingly, in this example, the element order follows the “00,” “01,” “10,” and “11” bits of the third and first columns of the muted bitwise addresses 820 whose unmuted bits are the same as the span counter 830 .
- the QVM 420 stores 750 the resulting complex amplitudes similarly to above. This reordering example can be similarly applied to the virtual partial wavefunctions 810 in FIGS. 8D-8F but is not expressly described.
- FIG. 8D shows the determining 720 , accessing 730 , executing 740 , and storing 750 processes for the second virtual partial wavefunction ⁇ 2 810 B.
- the resulting probability amplitudes 816 from the previous step are illustrated (and bolded) in their appropriate memory locations 808 .
- the span counter 830 for the second virtual partial wavefunction 810 B is at “01” (indicated with a circled 1). Therefore, the QVM 420 determines 720 that the elements for the second virtual partial wavefunction ⁇ 2 810 B (indicated with a circled 2) are probability amplitudes 806 ⁇ 0001 , ⁇ 0011 , ⁇ 1001 , and ⁇ 1011 .
- the order of the elements follows the bitwise counting of the muted bits 822 for the first qubit then the third qubit.
- the QVM 420 accesses 730 (indicated with a circled 3) the probability amplitudes 806 from the memory locations 808 L 2 , L 4 , L 10 and L 12 , respectively.
- the QVM 420 executes 740 the quantum operation (indicated with a circled 4) on the second virtual partial wavefunction ⁇ 2 810 B and generates (indicated with a circled 5) a resulting virtual partial wavefunction ⁇ * 2 812 B which includes the resulting probability amplitudes 816 ⁇ * 0001 , ⁇ * 0011 , ⁇ * 1001 , and ⁇ * 1011 .
- the QVM 420 stores 750 (indicated with a circled 6) the resulting probability amplitudes 816 at the appropriate memory locations 808 .
- FIG. 8E shows the determining 720 , accessing 730 , executing 740 , and storing 750 processes for the third virtual partial wavefunction ⁇ 3 810 C.
- the resulting probability amplitudes 816 from the previous steps are illustrated (and bolded) in their appropriate memory locations 808 .
- the span counter 830 for the third virtual partial wavefunction ⁇ 3 810 C is at “10” (indicated with a circled 1). Therefore, the QVM 420 determines 720 that the elements for the third virtual partial wavefunction ⁇ 3 810 C (indicated with a circled 2) are probability amplitudes 806 ⁇ 0100 , ⁇ 0110 , ⁇ 1100 , and ⁇ 1110 .
- the order of the elements follows the bitwise counting of the muted bits 822 for the first qubit then the third qubit.
- the QVM 420 accesses 730 (indicated with a circled 3) the probability amplitudes 806 from the memory locations 808 L 5 , L 7 , L 13 and L 15 , respectively.
- the QVM 420 executes 740 the quantum operation (indicated with a circled 4) on the third virtual partial wavefunction ⁇ 3 810 C and generates (indicated with a circled 5) a resulting virtual partial wavefunction ⁇ * 3 812 C which includes the resulting probability amplitudes 816 ⁇ * 0100 , ⁇ * 0110 , ⁇ * 1100 , and ⁇ * 1110 .
- the QVM 420 stores 750 (indicated with a circled 6) the resulting probability amplitudes 816 at the appropriate memory locations 808 .
- FIG. 8F shows the determining 720 , accessing 730 , executing 740 , and storing 750 processes for the fourth virtual partial wavefunction ⁇ 4 810 D.
- the resulting probability amplitudes 816 from the previous steps are illustrated (and bolded) in their appropriate memory locations 808 .
- the span counter 830 for the fourth virtual partial wavefunction ⁇ 4 810 D is at “11” (indicated with a circled 1). Therefore, the QVM 420 determines 720 that the elements for the fourth virtual partial wavefunction ⁇ 4 810 D (indicated with a circled 2) are probability amplitudes 806 ⁇ 0101 , ⁇ 0111 , ⁇ 1101 and ⁇ 1111 .
- the order of the elements follows the bitwise counting of the muted bits 822 for the first qubit then third qubit.
- the QVM 420 accesses 730 (indicated with a circled 3) the probability amplitudes 806 from the memory locations 808 L 6 , L 8 , L 14 and L 16 , respectively.
- the QVM 420 executes 740 the quantum operation (indicated with a circled 4) on the fourth virtual partial wavefunction ⁇ 4 810 D and generates (indicated with a circled 5) a resulting virtual partial wavefunction ⁇ * 4 812 D which includes the resulting probability amplitudes 816 ⁇ * 0101 , ⁇ * 0111 ⁇ * 1101 and ⁇ * 1111 .
- the QVM 420 stores 750 (indicated with a circled 6) the resulting probability amplitudes 816 at the appropriate memory locations 808 .
- the QVM determines 460 the result of the hybrid algorithm H by measuring the resulting probability amplitudes 816 of the evolved virtual wavefunction 800 .
- Measurement of the resulting probability amplitudes 816 includes a matrix operation that results in a probability of measuring the n qubits of the virtual wavefunction ⁇ in a particular combination (“ ⁇ 0000 ” at probability p 0000 , “ ⁇ 0001 ” at probability p 0001 , . . . , and “ ⁇ 1111 ” at probability p 1111 ).
- the QVM 420 is configured to dynamically determine virtual partial wavefunctions ⁇ and evolve a virtual wavefunction ⁇ for n total qubits and k acted-on qubits.
- a quantum operation U can be represented by a 2 k ⁇ 2 k matrix in the shared memory 240 .
- Tensoring up the quantum operation U includes generating a 2 n ⁇ 2 n matrix that includes the 2 k ⁇ 2 k quantum operation.
- This allows traditional simulators to use traditional routines of linear algebra libraries to simulate quantum operations because the state evolution becomes a 2 n ⁇ 2 n on a 2 n element state vector.
- this process can be incredibly wasteful, especially when the k acted-on qubits and the n total qubits are highly different.
- the QVM 420 mitigates this issue by “picking apart” virtual wavefunctions to simulate quantum operations. For example, the QVM 420 allocates 4 memory locations for a quantum operation acting on a single qubit of ten total qubits, whereas traditional simulators allocate roughly 10 10 memory locations for the same quantum operation. This means that, in general, the QVM 420 executes quantum operations more quickly than traditional simulators.
- the QVM 420 mitigates this issue by avoiding manually or automatically generated kernels entirely.
- the QVM 420 can be implemented with two for-loops regardless of k, the outer of which is trivially parallelized. This means that, in general, the QVM 420 executes a broader class of quantum operations more efficiently than other simulators.
- the method presented for applying a quantum operation to a quantum state can be parallelized across different execution units (CPU cores, CPUs, etc.) without additional work or without changing the method. That is, one or more of the complex amplitudes stored in a local memory can be accessed and manipulated by one or more different processors simultaneously.
- the QVM can execute method 700 in one of two modes: interpreted mode and compiled mode.
- interpreted mode the QVM accesses libraries storing the process steps, vectors, and matrices used in method 700 .
- the libraries include the vector and matrices applicable to any combination of n total qubits, k acted on qubits, different quantum operations U, and qubit ordering that the quantum operation U acts on. Further, the library includes the processing steps and machine instructions for executing any of those combinations.
- the QVM determines the vectors and matrices for the necessary combination of n total qubits, k acted on qubits, different quantum operations U, and qubit ordering that the quantum operation U acts on in real-time. In effect, the QVM 420 generates the machine instructions for executing a quantum operation in real-time.
- the QVM 420 can perform just-in-time compilations to increase the efficiency of a quantum operation.
- a just-in-time compilation replaces the machine instructions determined for a particular quantum operation with a more efficient set of machine instructions.
- the just in time compilation replaces generalized machine instructions (e.g., Quil code) with a specialized native code (e.g., binary code) for a particular gate.
- the QVM 420 can perform a just-in-time compilation for a quantum operation based on n total qubits, k acted on qubits, different quantum operations U, and qubit ordering that the quantum operation U acts on in real-time.
- the quantum operation U is a CNOT gate acting on two qubits
- executing the quantum operation is a matrix multiplication of a 4 ⁇ 4 matrix on a length 4 vector.
- the matrix multiplication includes 16 complex multiplications and 12 complex additions, but can be reduced to a single transposition of complex amplitudes in the appropriate memory locations.
- the QVM 420 stores the virtual wavefunction as a vector of probability amplitudes in the shared memory 240 of the quantum cloud system 230 .
- This allows any access node 210 with the appropriate API the ability to access the probability amplitudes of a virtual wavefunction in the shared memory. Therefore, the virtual wavefunction can be analyzed during state evolution. Further, this approach allows any access node (and corresponding processor) with the appropriate API to change probability amplitudes of the virtual wavefunction at any point. This can be useful for initializing a virtual wavefunction, correcting errors in a virtual wavefunction, etc.
- the QVM 420 can simulate stochastic errors that occur when executing a quantum operation on quantum processing systems.
- Stochastic errors are incoherent errors that occur when a quantum gate (or any other quantum operation) is applied to a qubit state.
- Stochastic errors can be quantum gate agnostic (i.e., can occur for any quantum gate) and do not constructively interfere when multiple stochastic errors occur when executing quantum operations.
- the QVM 420 simulates stochastic errors by introducing a stochastic noise operation S to the quantum operation U.
- the stochastic noise operation is an operation configured to simulate the stochastic noise of the quantum operation executed on a quantum processing system.
- the stochastic error noise operation is a Pauli channel.
- a Pauli channel introduces stochastic errors by introducing random stochastic rotations about three axes of the Bloch sphere. The stochastic errors occur along an axis of the Bloch sphere with a particular probability.
- the QVM 420 can include options to execute quantum operations either with, or without, stochastic errors.
- the QVM 420 can simulate unitary errors that occur when executing a quantum operation on quantum processing systems.
- Unitary errors are coherent errors that occur when a quantum gate (or any other quantum operation) is applied to a qubit state during execution of quantum operations on a quantum processing system.
- Unitary errors are, generally, associated with a specific quantum gate when the quantum gate is applied to a qubit state and each quantum gate can have a different unitary error.
- the QVM 420 simulates unitary errors by replacing perfect quantum operations U with imperfect quantum operations U′.
- the imperfect quantum operations U′ are a Krauss operator.
- the imperfect quantum operations U′ are configured to simulate the unitary error of the quantum operation U on a quantum processing system.
- the imperfect quantum operation can be implemented as a particular unitary error operation T executed in series with a particular quantum operation U.
- Each quantum operation U can have its own unitary error operation T
- the QVM 420 can include options to execute quantum operations either with, or without, unitary errors.
- the QVM can also simulate a quantum operation using a multi-amplitude discrete path integral technique (discrete path technique) analogous to the Feynman path integral formalism of quantum mechanics.
- the QVM 420 initializes an initial virtual wavefunction ⁇ i and a set F of final virtual wavefunctions ⁇ f .
- the QVM using the discrete path technique determines ⁇ ⁇ f
- the QVM sums the probability amplitudes ⁇ for each trajectory from the initial bitstring state ⁇ i to the final bitstring state ⁇ f .
- Each quantum operation U i in the quantum circuit connects any given intermediate virtual wavefunction state to at most k other complex amplitudes of the subsequent virtual wavefunction. Therefore, the complex amplitudes for the final virtual wavefunction can be calculated for the entire circuit P. This process is similar to calculating a propagator in the Feynman formalism using the techniques described in method 700 .
- one or more density matrix simulations may be made to run on any of the systems described herein, and employ any of the methods described herein.
- the calculation techniques of the QVM may be applied to calculations on density matrices.
- the techniques and systems described herein are also applicable to density matrix evolution.
- Density matrices are mathematical constructs that allow one to represent a probability distribution of pure states. Such distributions are often called mixed states and are used in the study and computation of quantum systems.
- described herein is a technique for applying a k-qubit unitary operator U to a quantum state s.
- a unitary operator U is a 2 k ⁇ 2 k matrix and is applied to a quantum state s that is a column vector of 2 n complex amplitudes.
- a density matrix r is a 2 n ⁇ 2 n matrix and represents a probability distribution of pure quantum states.
- a density operator on a density matrix also known as a super-operator, is written as
- a density matrix calculation can be transformed into the equivalent of a quantum state calculation.
- a density matrix r may be represented in vectorized form as, for example, vec(r).
- a system generates vec(r) by concatenating rows of the density matrix r to form a single linear vector.
- the (i,j)th element of the density matrix r corresponds to the (2 n i+j)th element of vec(r).
- vec(r) is compatible with the wavefunction formalism.
- the operation I ⁇ B i T is equivalent to an operation B i T acting on qubits 0, . . . , n ⁇ 1, while A i ⁇ I is equivalent to an operation A i acting on “qubits” n, . . . 2n ⁇ 1.
- qubits do not represent physical qubits, but are a mathematical construction to assist with the representation of a density operator.
- aspects of the invention are implemented in computer hardware, firmware, software, and/or combinations thereof.
- Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output.
- the invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device.
- Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language.
- Suitable processors include, by way of example, both general and special purpose microprocessors.
- a processor will receive instructions and data from a read-only memory and/or a random access memory.
- a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks.
- Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits) and other forms of hardware, such as FPGAs.
- ASICs application-specific integrated circuits
- a QVM may be run on a computer system using “Non-Uniform Memory Architecture”—NUMA.
- NUMA Non-Uniform Memory Architecture
- a QVM may be run on a distributed machine, like a supercomputer.
- other computer architectures and/or other computer components may be used beyond what has been described herein.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Artificial Intelligence (AREA)
- Complex Calculations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Advance Control (AREA)
Abstract
Description
- This application claims the benefit of U.S. Provisional application No. 62/684,609 filed on Jun. 13, 2018, which is incorporated in its entirety by this reference.
- This invention relates generally to executing algorithms on a hybrid classical/quantum computing system, and in particular to a quantum virtual machine for simulating the quantum hardware operations on a classical computation system.
- Quantum computation systems excel at solving complex problems which are often unsolvable using classical computation systems. However, physical quantum computation systems of the desired computing power may not be presently available with enough fidelity or performance to execute certain quantum algorithms of interest. Additionally, debugging algorithms on physical hardware is an expensive endeavor. Therefore, in such cases, it would be beneficial to be able to simulate the execution of a quantum algorithm on a quantum computation system having the desired properties (e.g., a given large number of qubits), even though such a system is not yet readily available, or not available at all.
- A system and method for determining the result of a quantum operation included in a hybrid algorithm (e.g., an algorithm including quantum and classical processing instructions executed in concert) using a quantum virtual machine allows for classical processors to simulate quantum operations that would, otherwise, be executed on a quantum processing system. Herein a “quantum virtual machine” is a classical implementation of a “quantum abstract machine”, such as the hybrid classical/quantum computing model described in the paper “A Practical Quantum Instruction Set Architecture,” arXiv:1608.03355v2. The system determines whether or not to execute the hybrid algorithm using the quantum virtual machine based on the number of quantum operations and number of qubits included in the hybrid algorithm. The hybrid algorithm includes a quantum virtual state including a number of qubits (a virtual wavefunction). The system stores every possible combination of qubits in the virtual wavefunction as probability amplitudes in memory locations of a (shared) memory. The hybrid algorithm includes a quantum operation that acts on a subset of the qubits in the virtual wavefunction. The system simulates the hybrid algorithm using a classical processor by executing a classical representation of the quantum operation on the virtual wavefunction and manipulating the complex amplitudes stored in the memory locations.
- To execute the algorithm, the system determines a number of virtual partial wavefunctions based on the number of qubits represented by the virtual wavefunction (total qubits) and the number of qubits the quantum operation acts on (acted-on qubits). The qubits that an operation acts on determines the Hilbert subsystem in which the wavefunction state is changed. The system also determines elements of the virtual partial wavefunctions and the order of the elements in the virtual partial wavefunctions based on the total qubits and acted-on qubits. Each element of a virtual partial wavefunction is a probability amplitude stored in a memory location. The system accesses the elements of each virtual wavefunction and applies a classical representation of the quantum operation by the virtual partial wavefunction. Each application yields a resulting virtual partial wavefunction including resulting complex amplitudes as the elements. Each resulting complex amplitude of the resulting virtual partial wavefunction is stored in a corresponding memory location of the shared memory. The system determines the result of the quantum operation based on the resulting complex amplitudes.
- In a particular example, the system executes a quantum algorithm using a classical processing system to determine a result of the quantum algorithm. To do so the system receives the quantum algorithm from a client device. The quantum algorithm includes a quantum operation acting on at least one qubit of a virtual wavefunction. The virtual wavefunction includes a plurality of qubits, each combination of qubits of the virtual wavefunction represented by a complex amplitude stored at a memory location of the classical processing system.
- The classical processing system instantiates a virtual quantum processing system on a datastore of the classical processing system. The virtual quantum processing system is configured to execute the quantum operation. To do so, the virtual quantum processing system, using classical processors, identifies a set of virtual partial wavefunctions based on the qubits the quantum operation acts on and the qubits of the virtual wavefunction. Each virtual partial wavefunction includes one or more complex amplitudes of the virtual wavefunction.
- The virtual quantum processing system accesses the one or more complex amplitudes of each virtual partial wavefunction of the set of virtual partial wavefunctions from a corresponding memory location of the classical processing system. The virtual quantum processing system then executes the quantum operation on the accessed complex amplitudes for each virtual partial wavefunction of the set of virtual partial wavefunctions to determine resulting complex amplitudes. Here, the resulting complex amplitudes represent a state evolution of the virtual wavefunction.
- The complex amplitudes are stored in the memory of the classical processing system. The virtual quantum processing system then determines the result of executing the quantum algorithm using the stored resulting complex amplitudes and provides the result of the quantum algorithm to the client device.
- In an embodiment, the quantum operation is represented by a matrix stored in the classical processing system with a matrix size based on a number of the qubits of the virtual wavefunction that the quantum operation is acting on. In a particular example, the number of the qubits of the virtual wavefunction is k and the matrix size of the matrix representing the quantum operation is 2k×2k.
- In an embodiment, the virtual wavefunction is represented by a bitstring vector stored in the classical processing system with a bitstring vector size based on a number of qubits in the virtual wavefunction. In a particular example, the number of qubits in the virtual wavefunction is n and the bitstring vector size is 2n.
- In an embodiment, the virtual partial wavefunctions is represented by a bitstring sub-vector with a sub-bitstring vector sized based on the number of qubits the quantum operation is acting on. In a particular example, the number of qubits the quantum operation is acting on is k and the sub-bitstring vector size is 2k.
- In an embodiment, a number of virtual partial wavefunctions in the set of quantum bitstrings is based on the qubits the quantum operation acts on and the qubits of the virtual wavefunction. In a particular example, the number of qubits in the virtual wavefunction is n, the number of qubits the quantum operation acts on is k, and the number of virtual partial wavefunctions is 2n-k.
- In an embodiment, executing the quantum operation includes multiplying a matrix representing the quantum operation and a set of sub-bitstring vectors representing the virtual partial wavefunctions, the matrix stored in the classical processing system having a matrix size based on a number of qubits the quantum operations acts on, and the sub-bitstring vectors having a vector sized based on the number of qubits the quantum operation acts on. In a particular example, the number of qubits the quantum operation acts on is k, the matrix size is 2k×2k the sub-bitstring vector size is 2k. Further executing the quantum algorithm includes multiplying the matrix representing the quantum operation with
matrix size 2k×2k by the set of sub-bitstring vectors withsub-bitstring vector sizes 2k. In another particular example, the number of the virtual partial wavefunctions is based on the number of qubits the quantum operation acts on, and a number of qubits in the virtual wavefunction. In this example, the number of qubits the quantum operation acts on may be k, the number of qubits in the virtual wavefunction may be n, and the number of sub-bitstring vectors may be 2n-k. Here, executing the quantum algorithm comprises multiplying the matrix representing the quantum operation by the 2n-k sub-bitstring vectors. - In an embodiment, the system may determine and execute a stochastic quantum operation to introduce stochastic errors in the virtual wavefunction when the quantum operation is executed such that the determined result includes stochastic error, the stochastic quantum operation being based on the quantum algorithm.
- In an embodiment, the system may determine and execute a unitary quantum operation to introduce unitary errors in the virtual wavefunction when the quantum operation is executed such that the determined result includes unitary error, the unitary quantum operation being based on the quantum algorithm
- In an embodiment, the complex amplitudes of each combination of qubits in the virtual wavefunction are accessible by an alternate processor of the classical processing system. Further, the quantum operation may be executed on each virtual partial wavefunction of the set of quantum sub-bitstrings by separate processors of the classical processing system.
- In an embodiment, determining the result of the quantum algorithm includes simulating a quantum measurement on at least one qubit of the virtual wavefunction based on the resulting complex amplitudes and a set of basis states for the quantum measurement.
- In an embodiment, executing the quantum operation includes generating a set of machine instructions to execute the quantum operation on the set of virtual partial wavefunctions. The set of machine instructions may be executed by the classical processing system.
- In an embodiment, the system determines, whether to instantiate the virtual quantum processing system based on the received quantum algorithm. In an example, the virtual quantum processing system is instantiated in response to a determination to simulate the virtual quantum processing system. Further, in an example, the determination to instantiate the virtual quantum processing system is based on a number of quantum operations included in the quantum algorithm. Finally, in an example, the determination to instantiate the virtual quantum processing is based on a number of the plurality of qubits included in the quantum algorithm.
- In an embodiment, the virtual quantum processing system is an application downloadable from a remote network system via a network. In an embodiment, the client device is an application executing on a partition of the classical processing system. In an embodiment, the client device is the classical processing system.
- In embodiment, the quantum operation is a density operator such as a Krauss operator. In this case, the virtual wavefunction comprising the plurality of qubits is a concatenated density matrix comprising a plurality of values representing a probability distribution.
- In various other configurations, the system can introduce noise to the quantum operation, compile instructions to simulate a hybrid algorithm in real-time, access a library of matrices and vectors to simulate a hybrid algorithm, or generate more efficient classical machine instructions for simulating the hybrid algorithm on a classical processing system.
- In various configurations, the system may include one or more processors. The processors may be located on a client system or a network system. In either case, the system includes a datastore storing a non-transitory computer-readable storage medium computer program code that, when executed by the one or more processors, cause the processors to execute the methods and processes described herein.
- The invention has other advantages and features which will be more readily apparent from the following detailed description of the invention and the appended claims, when taken in conjunction with the accompanying drawings, in which:
-
FIG. 1A-1E are illustrations of qubit states represented on a Bloch sphere. -
FIG. 2 is an illustration of a cloud quantum computing system, according to one example embodiment. -
FIG. 3 is an illustration of a quantum processing system, according to one example embodiment. -
FIG. 4 is an illustration of a classical processing system, according to one example embodiment. -
FIG. 5 is a visual representation of a classical implementation of a quantum state stored as a virtual wavefunction in the (shared) memory of the quantum cloud system, according to one example embodiment. -
FIG. 6 is a visual representation of the evolution of a virtual wavefunction using quantum operations, according to one example embodiment. -
FIG. 7 is an illustration of a method for determining the result of a hybrid algorithm using a quantum virtual machine, according to one example embodiment. -
FIGS. 8A-8F are a visual representation of determining the result of a hybrid algorithm using a quantum virtual machine, the hybrid algorithm including a four qubit virtual wavefunction and a quantum operation that acts on two qubits of the virtual wavefunction, according to one example embodiment. - The figures depict various embodiments for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein.
- Quantum computations are fundamentally different from classical computations. Real world computing applications generally implement a hybridization of quantum and classical computations. Executing quantum computations efficiently requires a highly specific set of hardware and integrating the results of those quantum computations with classical systems can be challenging. In some cases, it can be beneficial to simulate a quantum computation on a classical processing system if executing the quantum operations on a quantum processing system is infeasible, expensive, inefficient and/or not fully optimized. Described herein as an example is a cloud quantum computing system that allows for the integration of quantum computations by classical processing systems and simulations of those quantum computations by classical processing systems. Further examples described herein include classical processing systems configured for simulation of quantum computations.
- Quantum algorithms, when executed, manipulate and read information stored in a qubit (i.e. qubit). A qubit is fundamentally different from a classical bit. A classical bit has two possible states, typically represented as a 0 or a 1. Ostensibly, a qubit also has two measurable outcomes which can likewise be represented as a 0 or a 1. However, more specifically, the state of a qubit is a superposition of the two measurable outcomes, i.e. some probability of a 0 state and some probability of a 1 state. Hence, a qubit can encode more information in its state than a classical bit.
- The two measurable outcomes of a qubit are known as the basis states. The basis states can be written as |0 and |1. Accordingly, a qubit state is a linear superposition of the basis states. Thus, a qubit state |ψ can be represented as a linear combination of |0 and |1: |ψ=α|0+β|1, where α and β are complex-valued probability amplitudes of the basis states. The complex-valued probability amplitudes can be defined as |α|2=Pr(|0), |β|2=Pr(|1), and |α|2+|β|2=1. Thus, each qubit is a combination over these complex values.
- As a visual aid,
FIG. 1 is an illustration of the possible states for a single qubit |ψ 102 using aBloch sphere 100. On thissphere 100, a classical bit can only be represented at the “north pole” or the “south pole” of the sphere (e.g., the Z axis). As seen inFIG. 1B andFIG. 1C , these poles are the visual representation of the basis state |0 106 and the basis state |1 108 on theBloch sphere 100. Unlike a classical bit, a qubit state can be represented by any point on the surface of the Bloch sphere. For example, the qubit state |ψ ofFIG. 1D can be represented as |ψ=(1/√{square root over (2)}) (|0+i|1), and the qubit state |ψ ofFIG. 1E can be represented as |ψ=(1/√{square root over (2)}) (|0+|1). - Measurement of a qubit state is a measurement of the basis states |0 and |1 with probabilities |α|2 and |β|2, respectively. Generally, direct measurement of the qubit alters the values of α and β. Referring to
FIG. 1 , a measurement of a qubit state measures the projection of the qubit state (e.g.,projection 114 of qubit 102) along an axis of the Bloch sphere (e.g., the vertical axis). That is, a measurement of a quantum state at any point during execution of a hybrid algorithm is a measurement of the probabilities of the complex amplitudes. - Another dissimilarity between a qubit and a classical bit is that multiple qubits can demonstrate quantum entanglement. Quantum entanglement allows a qubit state to express correlation between a set of qubit states that is more difficult or not possible between classical bits. As an example, the qubit state of two entangled qubits is most generally expressed as |ψ=γ00|00+γ01|01+γ10|10+γ11|11 where the γ values are the probability amplitudes of the entangled states. Thus, multiple qubits can store an exponentially larger amount of information in their states than the equivalent number of classical bits.
- Generally, quantum algorithms are executed on a quantum computation system to encode information into a qubit (or group of qubits) state, manipulate the state, and measure the state. In many cases, quantum processing systems introduce errors when executing a quantum algorithm and reducing or accommodating those errors is necessary to determine an accurate result of the quantum algorithm.
- Execution of quantum algorithms via a quantum computation system requires a complex set of computational hardware that is typically inaccessible to the general population. However, the described computing environment allows for the remote control and execution of quantum algorithms using a network based quantum computation system. As an example,
FIG. 2 is a block diagram of asystem environment 200 for a quantum computation system, such asquantum cloud system 230, which can provide the results of quantum computations to access nodes remote from thequantum cloud system 230. Thesystem environment 200 ofFIG. 2 includes access nodes 210 (210A, 210B & 210C), anetwork 220, and aquantum cloud system 230. Alternate embodiments of the system environment can include any number of access nodes 210 andquantum cloud systems 230. The functions performed by the various entities ofFIG. 2 may vary in different embodiments. - Within the context of the
environment 200 ofFIG. 2 , a user of an access node 210 generates a set of quantum calculation instructions using anapplication 212 executing on the access node 210. In some embodiments, the quantum calculation instructions can be written in a defined quantum instruction language (e.g., Quil, See “A Practical Quantum Instruction Set Architecture,” arXiv:1608.03355v2) as a quantum algorithm (e.g., algorithm 222). A quantum algorithm can include any computer executable representation of quantum instructions, a series of quantum computations, hardware commands, software commands, programs, or control signals. Additionally, aquantum algorithm 222 can additionally include any number of classical calculation instructions. - The implementation or execution of the
quantum algorithm 222 by thequantum cloud system 230 includes the determination of at least one result (e.g., result 224) of a quantum operation (e.g., reading a qubit or multiple qubits). The access node 210 transmits thequantum algorithm 222 to thequantum cloud system 230. Thequantum cloud system 230 receives thequantum algorithm 222, schedules instructions of thequantum algorithm 222 on thequantum cloud system 230, and executes thequantum algorithm 222 on thequantum cloud system 230. Thequantum cloud system 230 determines theresult 224 of thequantum algorithm 222 by executing thequantum algorithm 222 using theclassical processing system 400 and the quantum processing system 300 (or any combination of the systems). In various other embodiments, thequantum cloud system 230 can access any other computational resource to execute the quantum algorithm 222 (e.g., a supercomputer or other high-performing computer resource). In some embodiments, thequantum algorithm 222 is executed by a quantumvirtual machine 420, which simulates the native execution of the algorithm by thequantum processing system 300 through operations performed purely by theclassical processing system 400. Thequantum cloud system 230 transmits thedetermined result 224 of thequantum algorithm 222 to an access node 210. A detailed example of aquantum algorithm 222, its execution within using aquantum processing system 300, and measuring aresult 224, is described in Section VII, below. - This hybridization of classical processing and quantum processing allows for direct integration of quantum computations and classical computations into a familiar classical computer program framework.
-
Quantum cloud system 230 can receive any number ofquantum algorithms 222 from any number of access nodes 210 in the environment. Additionally, thequantum cloud system 230 includes functionality to executequantum algorithms 222 received from disparate access nodes 210 such that thequantum algorithms 222 are executed efficiently. - In the environment of
FIG. 2 , access nodes 210 are any device that can access the functionality of thequantum cloud system 230. In some configurations, access nodes 210 are classical computing devices adapted to execute classical computer programs (e.g. access node 210A). A typical access node 210 can be a lap-top computer, tablet, or cell-phone, or any other client device. The access nodes 210 include software applications, such asapplication 212, which execute on the processor of the respective access node 210. In one example, theapplication 212 can be a programming application, such as a compiler and/or integrated development environment, configured to program quantum processing systems.Application 212 can generate aquantum algorithm 222 for determining the result of a quantum calculation on thequantum cloud system 230. Thus, access nodes 210 generate aquantum algorithm 222 that uses quantum calculations in the context ofclassical application 212. - In various embodiments,
applications 212 can be a web browser, a word processor, a networking application, a messaging application, etc. In some embodiments, eachapplication 212 can be linked to a user account on thequantum cloud system 230 associated with an access node 210, an access node user, or group of access node users.Applications 212 of disparate access nodes 210 can communicate with one another and withquantum cloud system 230 vianetwork 220. - In some cases,
application 212 uses an application programming interface (API) 214 to communicate with thequantum cloud system 230 through thenetwork 220. The API can expose the application to a quantum machine instruction library. The quantum machine instruction library may include, for example, calibration procedures, hardware tests, quantum algorithms, quantum gates, etc. The quantum machine instruction library can include a file structure, naming convention, or other system that allows the resources in the quantum machine instruction library to be invoked byquantum algorithms 222. In some examples, the API 214 is configured to allow theapplication 212 to generatequantum algorithms 222 that control both the classical processing system and quantum processing system using the quantum machine instruction library. - Additionally, access nodes 210 can include an
access node datastore 216. Theaccess node datastore 216 contains information associated with the access node user, the access node 210, a user account,application 212, and application-specific data (i.e., data and variables used by or related to quantum algorithms 222). This information can be accessed by theapplication 212 when generating or transmitting aquantum algorithm 222 to thequantum cloud system 230. In one embodiment, the information can be used to build, store, modify, or update user profiles. The information stored in theaccess node datastore 216 can include: inter-node security metrics, intra-node security metrics, network security metrics, authentication protocols, user account information and preferences, access node information and preferences, access node user information and preferences, a record of preferences and changes, location based information, identities of applications or other application information executing on an access node, and any other information associated with executingquantum algorithms 222 in theenvironment 200. In some embodiments, an access node can store a local copy of the quantum machine instruction library inaccess node datastore 216. - Access nodes 210 communicate with the
quantum cloud system 230 via thenetwork 220, which may include any combination of local area and wide area networks employing wired or wireless communication links. In some embodiments, all or some of the communication on thenetwork 220 may be encrypted or subject to security settings within the environment. In some examples, an access node 210 (e.g.,access node 210C) can be directly connected to and communicate directly withquantum cloud system 230. - The
quantum cloud system 230 receives, interprets, and executesquantum algorithms 222 from anaccess node 220. In some examples, a user generates thequantum algorithm 222 on an access node 210 and transmits thequantum algorithm 222 to thequantum cloud system 230. After execution, the quantum cloud system transmits theresult 224 of thequantum algorithm 222 to the access node 210. In the example embodiment ofFIG. 2 , thequantum cloud system 230 includes aquantum processing system 300, aclassical processing system 400, and a sharedmemory 240. The quantum processing system includescontrollers 310,signal hardware 320, and aquantum processing cell 330. - The
quantum cloud system 230 includes a number of systems and modules, which refers to hardware components and/or computational logic for providing the specified functionality. That is, a system or module can be implemented in hardware elements, firmware, and/or software (e.g., a hardware server comprising computational logic, or computer storage medium comprising computational logic). Other embodiments can include additional systems and modules, can distribute functionality between systems and modules, and can attribute functionality to more or fewer systems or modules. Note that, in general, quantum processing systems and modules require specialty quantum hardware systems as described herein. Further, some modules of thequantum cloud system 230 are designed for control of the specialty quantum hardware systems. -
Quantum cloud system 230 includes aclassical processing system 400. Theclassical processing system 400 is described in more detail with reference toFIG. 4 . Theclassical processing system 400 receives aquantum algorithm 222 from an access node 210 and generates a set of algorithm instructions to determine the result of thequantum algorithm 222. Thequantum cloud system 230 executes the algorithm instructions to determine theresult 224 of thequantum algorithm 222 and returns theresult 224 of thequantum algorithm 222 to the access node 210. In one embodiment, theclassical processing system 400 determines the set of algorithm instructions based on the quantum instruction language (e.g., Quil) of the received quantum algorithm and the quantum machine instruction library. - Because the quantum algorithm is executing on
quantum cloud system 230, which includes both classical and quantum systems, the set of algorithm instructions can likewise include both classical instructions and quantum instructions. Accordingly, the quantum algorithm can be viewed as a quantum/classical algorithm (i.e., a “hybrid algorithm”). The classical instructions are instructions of the hybrid algorithm that execute on theclassical processing system 400. Similarly, the quantum instructions are instructions of the hybrid algorithm that execute on thequantum processing system 300. In some embodiments, the quantum instructions are alternatively executed in the quantumvirtual machine 420, rather than on thequantum processing system 300. - Algorithm instructions can be scheduled for execution by the
quantum cloud system 230 in a variety of manners. Instruction scheduling is a process that determines which instructions are executed on which resources at which times. As a basic example, theclassical processing system 400 may schedule two classical instructions on theclassical processing system 400 and a single quantum instruction on thequantum processing system 300, and two synchronous quantum instructions on thequantum processing system 300, etc. In another embodiment, theclassical processing system 400 directly schedules the quantum instructions on thequantum processing system 300. In another embodiment, executing a classical instruction initiates the scheduling and execution of a quantum instruction on thequantum processing system 300. - Further, the scheduled algorithm instructions can be executed by the
quantum cloud system 230 in a variety of manners. Using the previous example, thequantum cloud system 230 may execute the two classical instructions, then the quantum instruction, then the three classical instructions, etc. In some embodiments, the algorithm instructions are executed based on a system clock of the quantum cloud system (e.g., each instruction executes at a specific time). In another embodiment, the algorithm instructions execute sequentially (e.g., a first instruction, a second instruction, etc.). In another embodiment, theclassical processing system 400 can schedule classical and quantum operations, or multiple quantum operations, to execute simultaneously on their respective systems. - Whatever the embodiment, the
classical processing system 400 may schedule algorithm instructions in any manner, consistent with some known or desired semantics, across any of the systems and modules of thequantum cloud system 230 such that, when executed, the algorithm instructions determine the result of the quantum algorithm. -
Classical processing system 400 includes a quantum virtual machine (QVM) 420 capable of simulating quantum operations on a classical system. TheQVM 420 receives a hybrid algorithm including a classical state, a quantum state, and hybrid quantum-classical operations; in some embodiments the QVM could also use sparse representation. TheQVM 420 represents the quantum state as a set of probability amplitudes stored in memory locations of the shared memory. The probability amplitudes are a complex number representing the probability of measuring a particular state of the quantum state in the measurement basis. TheQVM 420 executes the quantum operations by manipulating both the shared memory and the probability amplitudes based on the characteristics of the quantum state and the hybrid quantum operations. TheQVM 420 determines the result of the hybrid algorithm by simulating a measurement of the quantum state. In various configurations, theQVM 420 can perform “just in time” compilations, share the memory addresses that contain the classical representation of the quantum state, introduce error to the quantum state, or evolve the quantum state using the Feynman formalism. - In various embodiments, the
QVM 420 may be instantiated on the classical processing system in different manners. For example, the QVM 420 (i) may be an application installed on a datastore of thequantum cloud system 230, (ii) an application executing on a partition of thequantum cloud system 230 and/or an access node 210, and (iii) an application installed on an access node 210 or client device, etc. When installed on an access node 210 or partition, theQVM 420 may be downloaded from a network system (e.g., quantum cloud system 230) via thenetwork 220. -
Quantum cloud system 230 includes aquantum processing system 300. Thequantum processing system 300 is described in more detail with reference toFIG. 3 . Thequantum processing system 300 is configured to execute quantum operations to facilitate determining the result of the quantum algorithm. For example, the quantum processing system receives scheduled quantum instructions from theclassical processing system 400 and executes the quantum instructions. In another example, thequantum processing system 300 receives and executes a quantum instruction as a result of theclassical processing system 400 executing a classical instruction. In some cases, the quantum processing system stores the result of the quantum computation in the sharedmemory 240. In some embodiments, thequantum processing system 300 returns the result of the quantum computation to theclassical processing system 400. - The shared
memory 240 stores information that can be used by any system or module of thequantum cloud system 230 to facilitate determining the result of a quantum algorithm (e.g., thequantum processing system 300 and the classical processing system 400). In a particular example, the sharedmemory 240 stores the result of executed quantum computations (e.g., qubit measurements) by thequantum processing system 300, which are then directly accessible by theclassical processing system 400. As noted above, the algorithm instructions can include information stored in the sharedmemory 240 of thequantum cloud system 230. For example, the sharedmemory 240 can store a rotation angle as an input parameter that a quantum instruction can access and apply to a qubit when executing. As another example, the sharedmemory 240 can store the results of two previously executed quantum operations which a classical instruction can perform arithmetic on using theclassical processing system 400. In some embodiments, the sharedmemory 240 stores probability amplitudes for a quantum virtual state used by theQVM 420. The probability amplitudes can be accessed at any time by elements of thequantum cloud system 230. - Providing a more contextual example of the
environment 200, consider a researcher working to understand the dynamics of protein folding in a biological environment. The researcher generates computer code modeling protein folding using a hybrid classical/quantum algorithm including several classical and quantum calculations. The code is generated on a client device 210 using anapplication 212 with an installed API 214 configured to generate code using a quantum programming language, such as the Quil programming language. The researcher transmits the code to thequantum cloud system 230 via thenetwork 220. - The
quantum cloud system 230 receives the code and theclassical processing system 400 generates a set of algorithm instructions, including both classical instructions and quantum instructions, based on the code. Theclassical processing system 400 then schedules the algorithm instructions such that the result of the code can be determined. For example, theclassical processing system 400 schedules the classical operations on theclassical processing system 400, and the remainder of the quantum instructions on thequantum processing system 300. In this example, thequantum processing system 300 executes the quantum instructions and stores the result in the sharedmemory 240. - In aggregate, the algorithm instructions executed across the systems and modules of the
quantum cloud system 230 determine a result to the protein folding code. Once determined, thequantum cloud system 230 transmits the result to the client device 210 via thenetwork 220. The graduate student researcher celebrates the computation and completion of such a complex problem. -
FIG. 3 is a block diagram showing devices and interactions in an examplequantum processing system 300 of thequantum cloud system 230. As shown inFIG. 3 , the examplequantum processing system 300 includescontrol system 310, signalinghardware 320, and aquantum processing cell 330. Thequantum processing system 300 may include additional or different features, and the components may be arranged differently from the arrangement described herein. - The example
quantum processing cell 330 includes a qubit device array, which includes qubit devices arranged in a two-dimensional or three-dimensional lattice structure. In various other embodiments, the qubits may be arranged in any interconnected structure. Nine of the devices in the qubit device array are shown inFIG. 3 . In particular,FIG. 3 shows five tunable qubit devices 312 (312A, 312C, 312D, 312E & 312V) and four other qubit devices 314 (314A, 314B, 314C & 314D). In some examples, the tunable qubit devices are implemented as tunable transmon qubit devices, flux qubit devices, flatsonium qubit devices, fluxonium qubit devices, or other types of tunable devices. In some examples, the other qubit devices 314 are also implemented as tunable qubit devices. In some examples, the other qubit devices 314 are implemented as fixed-frequency qubit devices. For instance, other qubit devices 314 may be implemented as fixed-frequency transmon devices or other types of fixed-frequency qubit devices. The devices shown inFIG. 3 may be implemented by other types of devices or components. As an example, one or more of the qubit devices shown inFIG. 3 may be implemented as a resonator device, a coupler device, or otherwise. - In some instances, all or part of the
quantum processing cell 330 functions as a quantum processor, a quantum memory, or another type of subsystem. In some examples, the quantum processor includes a quantum circuit system. The quantum circuit system may include qubit devices, resonator devices and possibly other devices that are used to store and process quantum information. In some cases, the quantum processor includes a superconducting circuit, and the qubit devices are implemented as circuit devices that include Josephson junctions, for example, in superconducting quantum interference device (SQUID) loops or other arrangements, and are controlled by radio-frequency signals, microwave signals, and bias signals delivered to the quantum processor. In some cases, the quantum processor includes an ion trap system, and the qubit devices are implemented as trapped ions controlled by optical signals delivered to the quantum processor. In some cases, the quantum processor includes a spin system, and the qubit devices are implemented as nuclear or electron spins controlled by microwave or radio-frequency signals delivered to the quantum processor. The quantum processor may be implemented based on another physical modality of quantum computing. - In the example shown in
FIG. 3 , the devices are arranged in a rectilinear (e.g., rectangular or square) array that extends in two spatial dimensions, and each qubit device has up to four nearest-neighbor qubit devices. In some implementations, the devices can be arranged in another type of array (e.g., an ordered hexagonal array, an unordered random array, etc.). In some instances, the rectilinear array also extends in a third spatial dimension to form a cubic array or another type of three-dimensional array. In some configurations, a third spatial dimension can also include components configured for signal delivery. Signal delivery in the third dimension can allow non-proximally located qubits to interact. More broadly, thequantum processing cell 330 may include additional devices, including additional qubit devices, readout resonators, on chip parametric amplifiers, any type of interconnects, superconducting vias, etc. - In some implementations, the
quantum processing cell 330 can process quantum information by applying control signals (e.g., signals 308) to the qubits (e.g., qubits 312 and 314) in thequantum processing cell 300. The control signals 308 can be configured to encode information in the qubits, to process the information by performing quantum logic gates or other types of operations, or to extract information from the qubits. In some examples, the operations can be expressed as single-qubit logic gates, two-qubit logic gates, or other types of quantum logic gates that operate on one or more qubits. A sequence of quantum logic operations can be applied to the qubits to perform a quantum algorithm. The quantum algorithm may correspond to a computational task, a hardware test, a quantum error correction procedure, a quantum state distillation procedure, or a combination of these and other types of operations. -
Signal hardware 320 includes components that communicate with thequantum processing cell 330. Thesignal hardware 320 may include, for example, waveform generators, amplifiers, digitizers, high-frequency sources, DC sources, AC sources and other type of components. The signal hardware may include additional or different features and components. In the example shown, components of thesignal hardware 320 are adapted to interact with thequantum processing cell 330. For example, thesignal hardware 320 can be configured to operate in a particular frequency range, configured to generate and process signals in a particular format, or the hardware may be adapted in another manner. - In some instances, one or more components of the
signal hardware 320 generatesignals 308, for example, based on control information fromcontrol system 310. The signals can be delivered to thequantum processing cell 330 to operate thequantum processor system 300. For instance, thesignal hardware 320 may generatesignals 308 to implement quantum logic operations, readout operations or other types of operations. As an example, thesignal hardware 320 may include arbitrary waveform generators (AWGs) that generate electromagnetic waveforms (e.g., microwave or radio-frequency) or laser systems that generate optical waveforms. The waveforms or other types ofsignals 308 generated by thesignal hardware 320 can be delivered to devices in thequantum processing cell 330 to operate qubit devices, readout devices, bias devices, coupler devices or other types of components in thequantum processing cell 330. - In some instances, the
signal hardware 320 receives and processes signals from thequantum processing cell 330. The received signals can be generated by operation of thequantum processing system 300. For instance, thesignal hardware 320 may receivesignals 308 from the devices in thequantum processing cell 330 in response to readout or other operations performed by thequantum processing cell 330.Signals 308 received from thequantum processing cell 330 can be mixed, digitized, filtered, or otherwise processed by thesignal hardware 320 to extract information, and the information extracted can be provided to thecontrol system 310 or handled in another manner. In some examples, thesignal hardware 320 may include a digitizer that digitizes electromagnetic waveforms (e.g., microwave or radio-frequency) or optical signals, and a digitized waveform can be delivered to thecontrol system 310 or to other signal hardware components. In some instances, thecontrol system 310 processes the information from thesignal hardware 320 and provides feedback to thesignal hardware 320; based on the feedback, thesignal hardware 320 can in turn generate new control signals that are delivered to thequantum processing cell 330. - In some implementations, the
signal hardware 320 includes signal delivery hardware that interfaces with thequantum processing cell 330. For example, thesignal hardware 320 may include filters, attenuators, directional couplers, multiplexers, diplexers, bias components, signal channels, isolators, amplifiers, power dividers and other types of components. In some instances, the signal delivery hardware performs preprocessing, signal conditioning, or other operations to the control signals to be delivered to thequantum processing cell 330. In some instances, signal delivery hardware performs preprocessing, signal conditioning or other operations on readout signals received from thequantum processing cell 330. -
Control system 310 communicates with thesignal hardware 320 to control operation of thequantum processing system 300. Thecontrol system 310 may include digital computing hardware that directly interface with components of thesignal hardware 320. In various embodiments, the control system can include features similar toclassical processing system 400. That is,control system 310 may include processors, memory, clocks and other types of systems or subsystems. - Generally, the
control system 310 can interpret the quantum instructions generated byclassical processing system 400 and generate hardware-specific control sequences configured to execute the operations prescribed by the quantum machine instructions. For example, thecontrol system 310 may generate control information that is delivered to thesignal hardware 320 and converted to control signals that control thequantum processor cell 330. -
Control system 310 can include one or more clocks that can assist in scheduling quantum operations. For example, operations performed by thecontrol system 310 may be scheduled for execution over a series of clock cycles, and clock signals from one or more clocks can be used to control the relative timing of each operation or groups of operations. In some cases, thecontrol system 310 schedules control operations according to quantum instructions generated from a quantum (or hybrid) algorithm, and the control information is delivered to thesignal hardware 320 according to the schedule in response to clock signals from a clock or other timing system. - In some embodiments,
control system 310 can execute classical computer program instructions (e.g., instructions formatted as software, firmware, or otherwise). For example, thecontrol system 310 may execute a quantum processor unit 330 (QPU) driver software, which may include machine code compiled from any type of programming language (e.g., Python, C++, Common Lisp, etc.) or instructions in another format. In some cases, QPU driver software receives quantum instructions (e.g., based on information from the cloud quantum computing system 230) and quantum state information (e.g., based on information from the signal hardware 320), and generates control signals and sequences for thequantum processing cell 330 based on the quantum machine instructions and quantum state information. -
Control system 310 generates control information (e.g., a digital waveform) that is delivered to thesignal hardware 320 and converted to control signals 308 (e.g., analog waveforms) for delivery to thequantum processing cell 330. The digital control information can be generated based on quantum instructions, for example, to execute quantum logic operations, readout operations, or other types of control. -
Control system 310 extracts qubit state information from qubit readout signals, for example, to identify the quantum states of qubits in thequantum processor cell 102 or for other purposes. For example, the controllers may receive the qubit readout signals (e.g., in the form of analog waveforms) from thesignal hardware 320, digitize the qubit readout signals, and extract qubit state information from the digitized signals. - In some implementations, the
quantum processing system 300 can span multiple different temperature and noise regimes. For example, the signalinghardware 320 can include a series of temperature stages (e.g., 60 K, 3 K, 350 mK, 300 mK, 5 mK) that decrease between a higher temperature regime of thecontrol system 310 and a lower temperature regime of thequantum processing cell 330. Thequantum processing cell 330, and in some cases all or part of thesignaling hardware 320, can be maintained in a controlled cryogenic environment. In some examples, the cryogenic environment can be provided, by shielding equipment, cryogenic equipment, and other types of environmental control systems. - In some implementations, the tunable qubit devices 312 are housed between neighboring pairs of the other qubit devices 314 in a device array within the
quantum processing cell 330. The quantum states of the respective qubit devices can be manipulated by control signals or read by readout signals generated by thecontrol system 310 and signalinghardware 320. The qubit devices can be controlled individually, for example, by deliveringcontrol signals 308 to the respective qubit devices. In some cases, a neighboring pair of qubit devices (e.g.,tunable qubit device 312C andother qubit device 314A) is controlled jointly by delivering control signals to the tunable qubit device. In some cases, readout devices can detect the states of the qubit devices, for example, by interacting directly with the respective qubit devices. - In the example shown in
FIG. 3 , each tunable qubit device 312 has one or more tunable transition frequencies. The transition frequency is the energy level between any two adjacent energy levels in a qubit device. The transition frequency of a qubit device is tunable, for example, by application of an offset field. In particular, the transition frequencies of the tunable qubit devices 312 can be tuned by applying an offset field to the tunable qubit device. The offset field can be, for example, a magnetic flux bias, a DC electrical voltage, AC electrical voltage or another type of field. In some implementations, the tunability of the tunable qubit devices 312 in thequantum processing cell 330 allows neighboring pairs of qubits to be selectively coupled on-demand to perform multi-qubit gates, to entangle neighboring pairs of qubits, or to perform other types of operations. The tunable qubit devices can have a high “on/off” ratio, which refers to the ratio of the effective coupling rate provided by control of the tunable qubit device. In one embodiment, each tunable qubit device can include a superconducting circuit loop including two Josephson junctions and a capacitor structure in parallel with the junctions. - In some implementations, the other qubit devices 314 are implemented as fixed frequency qubit devices. In one embodiment, a fixed frequency qubit device includes a Josephson junction connected in parallel with a capacitor structure. In this example, the transition frequency of a fixed-frequency qubit device is based in part on the Josephson energy of the junction. In some implementations, the coupling of a fixed-frequency qubit device with neighboring fixed-frequency qubit devices allows multi-qubit gate operations to be performed. In this implementation, the frequency of the qubit is not tunable with an offset field, and the qubit devices are less sensitive to low frequency flux noise, yielding improved longer coherence times.
- In the example
quantum processing cell 330 each of the qubit devices can be encoded with a single bit of quantum information. As described in regards toFIG. 1 , each of the qubit devices has two eigenstates that are used as basis states |0 and |1, and each qubit device can transition between the basis states or exist in an arbitrary superposition of the basis states. Generally, the two lowest energy levels (the ground state and first excited state) of each qubit device are defined as a qubit and used as basis states for quantum computation. In some examples, higher energy levels (e.g., a second excited state or a third excited state) are also defined by a qubit device and may be used for quantum computation in some instances. - In some instances, the information encoded in the qubit devices of the
quantum processing cell 330 can be processed by operation of the tunable qubit devices 312. For instance, input information can be encoded in the computational states or computational subsystems defined by some or all of the qubit devices in thequantum processing cell 330. The information can be processed, for example, by applying a quantum algorithm or other operations to the input information. The quantum algorithm may be decomposed as gates or instruction sets that are performed by the qubit devices over a series of clock cycles. For instance, a quantum algorithm may be executed by a combination of single-qubit gates and two-qubit gates. In some cases, information is processed in another manner. Processing the information encoded in the qubit devices can produce output information that can be extracted from the qubit devices. The output information can be extracted, for example, by performing state tomography or individual readout operations. In some instances, the output information is extracted over multiple clock cycles or in parallel with the processing operations. In some aspects of operation, thecontrol system 310 sends control signals 308 to the tunable qubit devices in thequantum processing cell 330 using thesignaling hardware 320. The control signals can be configured to modulate, increase, decrease, or otherwise manipulate the transition frequencies of the tunable qubit devices 312. - In the example shown in
FIG. 3 , thecontrol system 310 sends control signals 308 to thetunable qubit device 312C to generate interactions between thetunable qubit device 312C and individual nearest neighbor qubit devices. In particular, the control signals 308 can generate afirst interaction 316A between thetunable qubit device 312C and theother qubit device 314A, asecond interaction 316B between thetunable qubit device 312C and theother qubit device 314B, athird interaction 316C between thetunable qubit device 312C and theother qubit device 314C, afourth interaction 316D between thetunable qubit device 312C and theother qubit device 314D, or a combination of them in series or in parallel. - As described previously, quantum algorithms include a set of quantum instructions (e.g. computations) that can be executed by the quantum cloud system. Broadly, a quantum instruction can alter the state of a qubit, encode the state of a qubit, measure the state of a qubit, etc. Within the context of this description, a quantum computation (e.g., those generated from a quantum algorithm) is executed by applying a quantum gate to a qubit or performing a measurement. Quantum gates are the building blocks of the quantum algorithm and function similarly to logic gates in traditional computation systems and algorithms.
- In practical terms, applying a quantum gate entails sending a specific set of signals for superconducting qubits to the control hardware of a qubit which induces a change in the state of the qubit. In one example embodiment, the control signals are configured to generate interactions that apply quantum gates on the quantum states (e.g., change, measure, etc.) of one or more of the qubit devices. For example, referring to
FIG. 3 , one or more of the control signals 308 generates an interaction that applies a parametrically activated two-qubit quantum gate to a pair of qubits defined by thetunable qubit device 312C and one or more of the other qubit devices 314. The control signals 308 may activate quantum gates by modulating a transition frequency of thetunable qubit device 312C, for example, at a modulation frequency. For instance, the modulation of the transition frequency over a specified time period can produce the unitary evolution associated with the quantum gate. - Quantum gates can act on any number of qubits. For example, a swap quantum gate acts on two qubits and swaps the state information of the two qubits. Additionally, some two qubit gates are considered controlled gates. In controlled gates, the state of one of the qubits being acted on acts as a control for the quantum operation. Controlled gates are generally used to generate entangled qubits.
- As a practical example of a multi-qubit quantum gate, again referring to
FIG. 3 , thecontrol system 310 sends control signals 308 to thetunable qubit device 312C via the signaling hardware to generate interactions between thetunable qubit device 312C and individual nearest neighbor qubit devices. In particular, the control signals 308 can generate afirst interaction 316A between thetunable qubit device 312C and theother qubit device 314A, asecond interaction 316B between thetunable qubit device 312C and theother qubit device 314B, athird interaction 316C between thetunable qubit device 312C and theother qubit device 314C, afourth interaction 316D between thetunable qubit device 312C and theother qubit device 314D, or a combination of them in series or in parallel. - As previously described, quantum instructions generated from a
quantum algorithm 222 can include instructions to apply a quantum gate (or series of quantum gates) on the qubits of thequantum processor 300. In some configurations, the quantum instructions can include additional information to facilitate the application of a quantum gate to a qubit. Thus, the quantum instructions can be represented most generally by G (k)=R, where G is the executed quantum instruction (e.g., quantum gate(s)), k is a set of information (or parameters) associated with the quantum instruction to facilitate its execution, and R is the result of the quantum computation. In some configurations, the set of information k can include the location of the qubit on the quantum processor, timing instructions for the execution of the quantum computation, control signal information for applying the quantum gate, information from the shared memory for executing the quantum computation, etc. Additionally, in some configurations, the result R of the quantum computation can include changing the state of the qubit, changing the position of the qubit on the quantum processor, measuring the state of the qubit, maintaining the state of the qubit, erasing the qubit, etc. -
FIG. 4 is a block diagram illustrating components of an exampleclassical processing system 400 that facilitates determining the result of a quantum algorithm in the quantum cloud system ofFIG. 2 . Additionally, theclassical processing system 400 is capable of reading and executing instructions from a machine-readable medium. - As an example,
FIG. 4 shows a diagrammatic representation of theclassical processing system 400 ofFIG. 2 . The classical processing system can generate algorithm instructions using theclassical processors 402. Further, theclassical processing system 400 can be used to execute theclassical instructions 424 of the algorithm instructions. In alternative embodiments, theclassical processing system 400 operates as a standalone device or a connected (e.g., networked) device that connects to the network system. In the illustrated embodiment, the classical processing system may be a server computer, capable of executing the classical instructions 424 (sequential or otherwise) that specify actions to be taken by theclassical processing system 400 to determine the result of the quantum algorithm. In some examples, theclassical processing system 400 may be a non-uniform memory architecture, a distributed machine like a supercomputer, or some other high-fidelity distributed computing environment. - The example
classical processing system 400 includes one or more processing units (hereinafter referred to as processor 402). Theprocessor 402 is, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a controller, a state machine, one or more application specific integrated circuits (ASICs), a field programmable gate array (FPGA), one or more radio-frequency integrated circuits (RFICs), or any combination of these. Theprocessors 402 can generate control information, for example, based on the determined algorithm instructions (e.g., a set of quantum gates, offset field signals, quantum simulation parameters, etc.) to be performed by thequantum computing system 300. - The
classical processing system 400 also includes amain memory 404. The computer system may include astorage unit 416. Theprocessor 402,memory 404, and thestorage unit 416 communicate via abus 408. In addition, thecomputer processing system 400 can include astatic memory 406. - Additionally, the
classical processing system 400 includes astorage unit 416. Thestorage unit 416 includes a machine-readable medium 422 on which theclassical instructions 424 embodying any one or more of the methodologies or functions described herein can be stored. For example, theclassical instructions 424 may include the functionalities of modules and systems of thequantum cloud system 230 described inFIG. 2 . Theclassical instructions 424 may also reside, completely or at least partially, within themain memory 404 or within the processor 402 (e.g., within a processor's cache memory) during execution thereof by thecomputer system 400, themain memory 404 and theprocessor 402 also constituting machine-readable media. Theinstructions 424 may be transmitted or received over anetwork 426 via thenetwork interface device 419. - In various embodiments, the memory systems can include, for example, a random access memory (RAM), a storage device (e.g., a writable read-only memory (ROM) or others), a hard disk, or another type of storage medium. The memory can include various forms of memory, media and memory devices, including by way of example, semiconductor memory devices (e.g., EPROM, EE PROM, flash memory devices, and others), magnetic disks (e.g., internal hard disks, removable disks, and others), magneto optical disks, and CD ROM and DVD-ROM disks.
- The
classical processing system 400 may also include a graphics display 410 (e.g., to drive a plasma display panel (PDP), a liquid crystal display (LCD), or a projector), alphanumeric input device 412 (e.g., a keyboard), a cursor control device 414 (e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), and anetwork interface device 419, which also are configured to communicate via thebus 408. - The classical processing system includes a
signal generation device 418. The signal generation device can include radio frequency (RF) or microwave (μW) generators, radio frequency (RF) or microwave (μW) receivers, DC sources, or other type of radio frequency (RF) or microwave (μW) devices. - In these implementations, radio frequency (RF) or microwave (μW) generators and DC sources of the
signal generation devices 418, can each generate control signals based on control information provided by theprocessors 402. The control signals can be delivered to thequantum processing system 300 by thesignal generation devices 418, for example, and interact with circuit devices in thequantum processing cell 330. In some implementations, radio frequency (RF) or microwave (μW) receivers in thesignaling hardware 418 can receive and process signals from thequantum processing cell 330. For example, receivers in thesignaling hardware 418 can include a digitizer, a microwave source, and other types of signal processing components. The receivers of thesignaling hardware 418 can process (e.g., digitize, or otherwise process) the signals from thequantum processing cell 330 and provide the processed information to theprocessors 402. Theprocessors 402 can extract data to identify the quantum states of qubits in thequantum processing cell 330 or for other purposes. - While machine-
readable medium 422 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store theinstructions 424. The term “machine-readable medium” shall also be taken to include any medium that is capable of storinginstructions 424 for execution by the machine and that cause the machine to perform any one or more of the methodologies disclosed herein. The term “machine-readable medium” includes, but is not be limited to, data repositories in the form of solid-state memories, optical media, and magnetic media. - In some instances, the
classical processing system 400 operates based on a clock cycle or another type of synchronization scheme. For example, the synchronization scheme can be based on a quantum algorithm or quantum processing task. The quantum algorithm or quantum processing task may be expressed as a sequence of instructions corresponding to quantum gates, readouts, or other operations on the qubit devices, and a subset of the instructions can be executed on each clock cycle. In some instances, on each clock cycle, theclassical processing system 400 generates control signals to implement a subset of instructions, control signals are delivered to thequantum computation system 300, and qubit readout signals are delivered to theclassical processing system 400. The control signals delivered on each clock cycle can be configured, for example, based on the sequence of instructions, based on readout signals from a previous cycle, quantum error correction operations, error matching calculations, other information, or a combination of these. - In some embodiments, client devices may be similarly configured to the
classical processing system 400. That is, the client devices can include any elements of the classical processing system, or any additional element, such that the client devices are able to send quantum algorithms or instructions to the quantum cloud system and receive the results of quantum algorithms in response. - The quantum virtual machine (QVM) 420 simulates a hybrid algorithm including quantum operations on the
classical processing system 400. In some configurations, theclassical processing system 400 can determine that the hybrid algorithm His more efficiently executed on theQVM 420 rather than thequantum processing 300 system based on the complexity of the hybrid algorithm H. In one example, determining that the hybrid algorithm is more efficiently executed on a QVM can be based on the number of quantum operations included in the quantum algorithm, the length (in time, or in number of executions) of the hybrid algorithm, the number of qubits included in the hybrid algorithm, power and cost considerations for executing the hybrid algorithm on a quantum processor vs. a classical processor, and the like. In some configurations, the hybrid algorithm H can include an indicator representing that the hybrid algorithm H will be executed on the quantum virtual machine QVM rather than thequantum processing system 300. - Generally, a hybrid algorithm H received by the
quantum cloud system 230 that can be simulated by theQVM 420 includes an encoding of a virtual quantum state. The virtual quantum state can be stored by theQVM 420 in the sharedmemory 240 in some embodiments. The virtual quantum state includes n qubits that form a virtual wavefunction -
FIG. 5 is a visual example of a virtual quantum state stored in the shared memory as virtual wavefunction ψ. Thevirtual wavefunction ψ 510 represents n qubits included in the quantum virtual state (n total qubits). Thevirtual wavefunction ψ 510 is represented by a set of probability amplitudes α 520. The probability amplitudes α 520 are a complex probability that the n total qubits are measured in a particular combination in a measurement basis. Thus, there are 2n probability amplitudes α 520 that represent thevirtual wavefunction ψ 510. Each of the probability amplitudes α 520 are stored in amemory location L 530 of the sharedmemory 240. Thus, there are 2n sharedmemory locations L 530 for the probability amplitudes α 520 representing avirtual wavefunction ψ 510. (FIG. 5 assumes dense representation.) - For the
QVM 420, each permutation of the n total qubits can be represented by a bitwise address. A bitwise address is a representation for a distinct selection of qubits when that distance selection of qubits is measured in the computational basis. Therefore, each of the probability amplitudes α is associated with a bitwise address that represents each distinct selection of n total qubits that have that probability amplitude α. In some example, the bitstring address may be represented as a bitstring vector. Further, as shown below, a subset of probability amplitudes α representing a subset of the n total qubits may be represented as a sub-bitstring vector. - As an example, the bitwise addresses for a virtual wavefunction including three qubits can be represented by Table 1. In Table 1, the first column represents all possible combinations of qubits in the virtual wavefunction ψ when measured in the computational basis. The second through fourth column, in combination, represent the bitwise addresses for all combinations of qubits in the virtual wavefunction ψ. The second through fourth column, individually, represent a classical measurement for each of the three qubits Q1, Q2, and Q3 in the virtual wavefunction ψ. The fifth column represents the probability amplitude α for each possible combination of qubits in the virtual wavefunction ψ.
-
TABLE 1 Q1 Q2 Q3 Prob. Amp. ψ 0000 0 0 α000 ψ001 0 0 1 α001 ψ010 0 1 0 α010 ψ011 0 1 1 α011 ψ100 1 0 0 α100 ψ101 1 0 1 α101 ψ110 1 1 0 α110 ψ111 1 1 1 α111 - As a more general example, a virtual wavefunction ψ that includes n total qubits is represented by 2n probability amplitudes α stored at 2n memory locations L. Each 2n probability amplitudes α is associated with a bitwise address. The bitwise addresses for the n total qubits of the virtual wavefunction ψ are, effectively, a bitwise counter from 0 to 2n-1. For example, for a virtual wavefunction including 7 qubits, the bitwise addresses are 0000000, 0000001, 0000010, 0000011, . . . , 1111111. Each of the 27 probability amplitudes α associated with a bitwise address is stored at one of 27 memory locations in the shared memory.
- The
QVM 420 can manipulate the virtual wavefunction using quantum operations U included in a hybrid algorithm H. The quantum operations U can act on any k number of qubits included in the virtual wavefunction (k acted-on qubits) and change the probability amplitudes α associated with each bitwise address of the virtual wavefunction ψ. The QVM executes a quantum operation U by accessing subsets of the probability amplitudes α and performing the quantum operation U on the accessed subsets of probability amplitudes a. Generally, the order of the k acted-on qubits of a quantum operations U is significant. Accordingly, theQVM 420 accesses the probability amplitudes α in each subset in a particular order and performs the quantum operation U on a particular order of probability amplitudes a. TheQVM 420 can perform any number of quantum operations U on a virtual wavefunction φ and after every quantum operation some, or all, of the probability amplitudes α may change. Alternatively stated, theQVM 420 can evolve a quantum virtual state (pure state evolution) using quantum operations U acting on a virtual wavefunction ψ. Executing a hybrid algorithm H to evolve a quantum virtual state using theQVM 420 is described in more detail in Section VIII. A quantum operation may be represented in the shared memory as a matrix, a sparse matrix, a permutation representation, a diagonal representation of a matrix, or any other way to represent a quantum operation. -
FIG. 6 is a visual example of a state evolution of a quantum virtual state including a virtual wavefunction ψ by executing a quantum operation U on complex amplitudes α of the virtual wavefunction ψ stored in shared memory.FIG. 6 includes a virtual wavefunction 610 of n total qubits represented by 2n probability amplitudes αi stored in 2nmemory locations 630 of the sharedmemory 240. TheQVM 420 initializes the virtual wavefunction ψn 610A with probability amplitudes αi 620A at time t=t 0 640A. TheQVM 420 executes a firstquantum operation U 1 650A on the virtual wavefunction ψn 610A at time t=t′ 640B which evolves the virtual wavefunction ψn 610A to virtual wavefunction ψ′n 610B. Virtual wavefunction ψ′n 610B is represented by complex amplitudes α′i 620B stored inmemory locations 630. TheQVM 420 executes a secondquantum operation U 2 650B on the virtual wavefunction ψ′n 610B at time t=t″ 640C which evolves the virtual wavefunction ψ′n 610B to virtual wavefunction ψ′n 610C. Virtual wavefunction ψ′n 610C is represented by complex amplitudes α″i 620C stored inmemory locations 630. Eventually, theQVM 420 executes a finalquantum operation U n 650C on a virtual wavefunction at time t=t* 640D which evolves the virtual wavefunction to a final virtual wavefunction ψ*n 610D. Virtual wavefunction ψ*n 610D is represented by complex amplitudes α*i 620D stored inmemory locations 630. - As previously described, executing a hybrid algorithm H on the
QVM 420 evolves a quantum virtual state. Quantum operations U of the hybrid algorithm H can act on any subset of the qubits (k acted on qubits) included in the n qubits (n total qubits) of the virtual wavefunction ψ.FIG. 7 illustrates a method for executing quantum operations U on a virtual wavefunction ψ based on the n total qubits and the k acted-on qubits. Themethod 700 of this embodiment can include additional or fewer steps, or the steps can be executed in another order. - With reference to
FIGS. 2, 5, 6 & 7 , thequantum cloud system 230 receives 710 a hybrid algorithm H from an access node 210 via thenetwork 220. The hybrid algorithm H includes a quantum virtual state including virtual wavefunction ψ of n total qubits. TheQVM 420 initializes the virtual wavefunction ψ in the sharedmemory 240 as a vector of 2n probability amplitudes α (i.e., a bitstring vector). The virtual wavefunction ψ can include entangled qubits and/or untangled qubits. Each probability amplitude α is stored in a memory location L and is associated with a bitwise address. The bitwise address for each probability amplitude α represents a particular combination of qubits in the virtual wavefunction ψ measured in the computational basis (as shown in Table 1). The hybrid algorithm H includes a quantum operation U that evolves the virtual wavefunction ψ by applying the quantum operation U on subsets of the probability amplitudes α of the virtual wavefunction ψ. In this example, the quantum operation U includes k acted-on qubits of the n total qubits. The quantum operation U is sometimes represented as a 2k×2k matrix and is stored in the sharedmemory 240. - The QVM determines 720 an ordered sequence of virtual partial wavefunctions based on the n total qubits and the k acted-on qubits. In one configuration, the QVM determines that there are 2n-k virtual partial wavefunctions in a sequence and each virtual partial wavefunction is a vector of
length 2k. A virtual partial wavefunction φ is some subset of the probability amplitudes α representing the virtual wavefunction ψ (i.e., a sub-bitstring vector) that can be represented as a vector oflength 2k. Therefore, each element of the virtual partial wavefunction is a probability amplitude α of the virtual wavefunction ψ. - The
QVM 420 determines 720 the elements and the element order for each virtual partial wavefunction φ of the set of virtual partial wavefunctions based on n total qubits and the k acted-on qubits. To begin, theQVM 420 “mutes” bits of the bitwise addresses of the virtual wavefunction ψ associated with the k acted-on qubits. Muting a bit of the bitstring address results in theQVM 420 ignoring those bits when selecting probability amplitudes α for the elements of a virtual partial wavefunction and ordering the selected elements based on the muted bits. Each 2n bitstring address is associated with a probability amplitude α and has k muted bits and n−k unmuted bits. For example, if a quantum operation U acts on the ith qubits of the n total qubits, the ith bit of the bitstring address is muted. Using the example of Table 1, if the quantum operation U acts on the second qubit Q2 the second bit of the bitstring address is muted. The muted bitstring addresses, in this example, are “0 x0” “0x1,” “0 x0,” “0x1,” . . . and “1x1,” where each “x” represents a muted bit. - Next, the QVM generates a span counter to select elements for the virtual partial wavefunctions. A span counter is a representation of all n−k unmuted bits in the bitwise addresses of a qubit-string. In other words, a span counter is a bitwise representation of all distinct choices of bits in a virtual wavefunction ψ that the quantum operation U does not act on. Thus, the span counter is a bitwise counter of n−k bits with 2n-k combinations of bits and each bit in the span counter is associated with one of the n-k qubits in the virtual wavefunction ψ that the quantum operation U does not act on. For example, consider a virtual wavefunction including an ith, jth, and kth qubit. The ith, jth, and kth qubit are each associated with the ith, jth, and kth bit in the bitwise addresses of the virtual wavefunction ψ. In this example, the quantum operation U operates on the ith qubit of the virtual wavefunction ψ. Therefore, the span counter is a bitwise representation of all selections of the jth and kth bits of the virtual wavefunction.
- For context, consider the bitstring addresses of Table 1. If the quantum operation U acts on the second qubit Q2, the second bit in the bitwise addresses is muted. The span counter is generated from the unmuted bits in the bitwise addresses (the column of qubits Q1 and Q3). The span counter is all possible combinations of the unmuted bits in the bitwise addresses, which are, in this case, are “00,” “01,” “10,” and “11.” In an alternate example, if the quantum operation U acts on the first qubit Q1 and the third qubit Q3, the span counter includes all possible combinations of bits in the bitwise addresses absent the bits associated with first qubit Q1 and third qubit Q3, which, in this case, are “0” and “1”.
- The
QVM 420 determines the elements for each of the set of virtual partial wavefunctions using the span counter and the muted bitstring addresses. The span counter includes n−k bits having 2n-k bitwise combinations of the n−k bits. The bitwise addresses include 2n bitwise combinations of the n qubits in the virtual wavefunction ψ. However, when considering the k muted bits in the muted bitwise addresses for the virtual wavefunction ψ, there are 2n-k combinations of bits with each combination having 2k repeated combinations of bits. Therefore, theQVM 420 determines that the 2k elements for each of the set of 2n-k virtual partial wavefunctions are the 2k probability amplitudes α associated with the 2k muted bitstring addresses that have the same n−k unmuted bits as the n−k bits in the span counter. - For context, using the example of Table 1, if the quantum operation U acts on the second qubit Q2 and the third qubit Q3, there are four bitstring addresses (“000,” “001,” “010” and “011”) that have the same muted bitstring address (“0xx”) as the first entry in the span counter “0”. Thus, the
QVM 420 determines that the elements for one of the set of quantum sub bitstrings φ are the probability amplitudes α000, α001, α010, and α011 associated with those four bitstring addresses. The other virtual partial wavefunctions in the set are similarly determined based on the span counter and muted bitstring addresses. - The
QVM 420 can determine the order for the elements for each of the virtual partial wavefunctions based on the muted bitstring addresses and the k acted-on qubits. The order that quantum operation U acts on the k acted-on qubits determines the order of the 2k elements in each of the 2n-k virtual partial wavefunctions. The order of the determined elements for each virtual partial wavefunction φ follows the bitwise counting of muted bits in the bitstring address for the determined elements according to the order of the k acted-on qubits. - For example, consider the virtual wavefunction φ including an ith, jth, and kth qubit and a quantum operation U that acts on the jth and kth qubits of the virtual wavefunction ψ. In this example, the jth and kth bits of the virtual wavefunction ψ are muted. The determined elements for the virtual partial wavefunction φ are the 4 probability amplitudes α associated with a bitstring address whose unmuted ith bits are the same as the bit of the span counter. The order of the determined probability amplitudes for the virtual partial wavefunction φ follows the bitwise counting of the jth and kth muted bits. In the alternate example where the quantum operation U acts on the kth and jth qubit of the virtual wavefunction, the order of the determined probability amplitudes α follows the bitwise counting of the kth and jth muted bits.
- Continuing the contextual example above, referring again to Table 1, the determined elements of a virtual partial wavefunction φ are the probability amplitudes α000, α001, α010, and α011 that have the same muted bitstring address (“0xx”) as the first entry in the span counter “0”. In the example where the quantum operation U acts on the second qubit Q2 and the third qubit Q3, the muted bits in the muted bitstring addresses follow “00” “01” “10” and “11” where the first bit is associated with the second qubit Q2 and the second bit is associated with the third qubit Q3. The order of the probability amplitudes follows the order of the bitwise counting of the muted bits. Accordingly, in this example, the QVM determines the probability amplitudes are ordered as α000, α001, α010, and α011. In the example where the quantum operation U acts on the third qubit and the second qubit, the muted bits in the muted bitstring addresses follow “00” “01” “10” and “11” where the first bit is associated with the third qubit and the second bit is associated with the second qubit. In this example, the QVM determines the probability amplitudes are ordered as α000, α010, α001, and α011.
- The QVM accesses 730 the probability amplitudes α determined 720 for each virtual partial wavefunction φ of the set of virtual partial wavefunctions from their corresponding memory locations. Because each of the virtual partial wavefunctions φ accesses probability amplitudes α from different memory locations, the QVM can utilize a different processor for each virtual partial wavefunction.
- The QVM executes 740 the quantum operation U on the set of virtual partial wavefunctions. In some instances, executing the quantum operation U on the set of virtual partial wavefunctions includes a matrix multiplication of the quantum operation U and each virtual partial wavefunction φ of the set of virtual partial wavefunctions. The quantum operation U acting on k qubits can be represented by a 2k×2k matrix and each virtual partial wavefunction φ is represented by a 2k vector. In other examples, the quantum operation can be a permutation representation. Executing the quantum operation U on a virtual partial wavefunction φ yields a resulting virtual partial wavefunction φ*. The resulting virtual partial wavefunction φ* is a 2k vector including 2k resulting probability amplitudes α*.
- The
QVM 420stores 750 the resulting probability amplitudes α* in the memory locations L of the corresponding accessed probability amplitudes α. More explicitly, each accessed probability amplitude is assigned a vector location in a 2k virtual partial wavefunction and each resulting probability amplitude has a vector location in the 2k resulting virtual partial wavefunction φ. The resulting probability amplitudes α* at a given vector location of the resulting virtual partial wavefunction φ* are stored in the same memory location L of the accessed probability amplitude α having the same vector location in the virtual partial wavefunction φ. For example, if the accessed probability amplitude α from the memory location Li is assigned the jth vector location of the virtual partial wavefunction φ, the resulting probability amplitude a* in the jth vector location of the resulting virtual partial wavefunction φ* is stored in memory location Li. - The
QVM 420 determines 760 the result of the hybrid algorithm based on the stored resulting probability amplitudes α*. Generally, theQVM 420 determines 750 the result by executing a measurement operation on the evolved virtual wavefunction. The measurement operation is generally one or more matrix multiplications that calculates a probability of observing a specific combination of qubits from the resulting probability amplitudes. That is, a measurement calculates |α|2, |β|2, etc. -
FIGS. 8A-8F are diagrams representing an example execution of a hybrid algorithm H using theQVM using method 700, according to one example embodiment. Execution of the hybrid algorithm H includes evolving a quantum virtual state using the quantum virtual machine. In this example, the quantum virtual machine receives a hybrid algorithm H including a single quantum operation U. The quantum virtual state in the hybrid algorithm H includes a virtual wavefunction ψ including 4 qubits (n=4) and the quantum operation U acts on the 1st and the 3rdqubit (k=2) of the virtual wavefunction ψ. TheQVM 420 initializes the virtual wavefunction as 16 probability amplitudes α (2n=24=16) stored in 16 memory locations L. - The left-hand table of
FIG. 8A is avisual representation 800 of the virtual wavefunction ψ. Thefirst column 802 represents all possible combinations of the 4 qubits of the virtual wavefunction ψ in the measurement basis. The second through fifth columns represent thebitwise address 804 for each of the possible combinations of the 4 qubits in the virtual wavefunction ψ. Each bit of thebitwise address 804 is associated with a qubit of the virtual wavefunction ψ. That is, the first bit of thebitwise address 804 is associated with the first qubit of the virtual wavefunction ψ, the second bit of thebitwise address 804 is associated with the second qubit of the virtual wavefunction ψ, etc. Thus, each combination of the 4 qubits has 4 bits that make up itsbitwise address 804. Each combination of qubits, orbitwise address 804, has aprobability amplitude α 806 stored atmemory location L n 808. Thus, the virtual wavefunction ψ can be stored as a vector including 16 probability amplitudes α. - Next, the
QVM 420 determines a number of virtual partial wavefunctions φ 810 and their elements. The virtual partial wavefunctions φ 810 are illustrated as the set of empty vectors on the right side ofFIG. 8A . The number of virtual partial wavefunctions φ 810 is based on the n total qubits and the k acted-on qubits. In this example, the number of virtual partial wavefunctions φ 810 is 4 (2n-k=24-2=4). Each of the virtual partial wavefunctions φ 810 is a vector with a size based on the acted-on qubits. In this example, the size of each virtualpartial wavefunction φ 810 is 4 (2 k=22=4). - The
QVM 420 mutes the bits of thebitwise addresses 804 based on the k acted-on qubits. In this example, theQVM 720 mutes the first bit and the third bit of thebitwise address 804 because the quantum operation U acts on the first and third qubit of thevirtual wavefunction ψ 800.FIG. 8B shows a representation of thevirtual wavefunction 800 with the bits of thebitwise addresses 804 associated with the first and third qubit muted (muted bitwise addresses 820). Here, amuted bit 822 includes a “x” overlaid on the “0” or “1” of the bitwise address. - The
QVM 420 generates aspan counter 830 based on the n total qubits and the k acted-on qubits. Thespan counter 830 includes every bitwise combination of the unmuted bits in the muted bitwise addresses 820. In this example, thespan counter 830 includes 2 bits (n−k=4−2=2) and includes 4 combinations of bits (2n-k=24-2=4). InFIG. 8B , thespan counter 830 is illustrated as a table including the possible combinations of unmuted bits (the second bit and fourth bit of the muted bitwise addresses 820). - The
QVM 420 determines 720 the virtualpartial wavefunction φ 810 elements based on the muted bitstring addresses 820 and thespan counter 830, accesses 730 probability amplitudes α 806, executes 740 the quantum operation U, andstores 750 the resulting probability amplitudes. In this example, the 4 elements for a virtualpartial wavefunction φ 810 are, for each combination of 2 bits in thespan counter 830, the probability amplitudes α 806 that have a mutedbitwise address 820 that are the same for that combination of bits in thespan counter 830. TheQVM 420 accesses 730 theprobability amplitudes 806 for each virtualpartial wavefunction φ 810 and executes 740 the quantum operation U on the virtualpartial wavefunction φ 810. In this example, executing 740 the quantum operation U includes multiplying (or some other computation) a 4×4 matrix representing the quantum operation U (2k×2k=22×22=4λ4) by eachlength 4 vector representing the virtualpartial wavefunction φ 810. The result of the quantum operation is 4 resulting virtual partial wavefunctions φ′ 812 including a set of 4 resulting probability amplitudes. TheQVM 420stores 750 the resulting probability amplitudes in thememory locations 808 of the correspondingbitwise addresses 804 for the accessedprobability amplitudes 806. -
FIG. 8C-8E shows the processes of determining 720 virtual partial wavefunction elements, accessing 730 the probability amplitudes, executing 740 the quantum operation, and storing 750 the resulting probability amplitudes for each virtualpartial wavefunction φ 810. In this example, the 4 elements for a virtualpartial wavefunction φ 810 are, for each combination of 2 bits in thespan counter 830, the probability amplitudes α 806 that have a mutedbitwise address 820 that are the same for that combination of bits in thespan counter 830. The order of the accessed probability amplitudes α 806 is based on the k acted-on qubits. TheQVM 420 accesses 730 theprobability amplitudes 806 for each virtualpartial wavefunction φ 810 and executes 740 the quantum operation U on the virtualpartial wavefunction φ 810. Executing 740 the quantum operation U includes multiplying a 4×4 matrix representing the quantum operation U (2k×2k=22×22=4λ4) by eachlength 4 vector representing the virtualpartial wavefunction φ 810. The result of the quantum operation is 4 resulting virtual partial wavefunctions ψ′ 812 including sets of 4 resultingprobability amplitudes 816. TheQVM 420stores 750 the resulting probability amplitudes in thememory locations 808 corresponding to thebitwise addresses 804 for the accessedprobability amplitudes 806. While the processes are shown sequentially for each virtualpartial wavefunction φ 810, the processes can be executed in parallel for each virtualpartial wavefunction φ 810 using multiple processing cores of theQVM 420. That is the classical processing system can schedule the instructions in any manner described herein. -
FIG. 8C shows the determining 720, accessing 730, executing 740, and storing 750 processes for the first virtualpartial wavefunction φ 1 810A. Thespan counter 830 indicates “00” (indicated with a circled 1) as the bits for determining 720 elements of the first virtualpartial wavefunction φ 1 810A. Therefore, theQVM 420 determines 720 that the elements for the first virtualpartial wavefunction φ 1 810A (indicated with a circled 2) areprobability amplitudes 806 α0000, α0010, α1000, and α1010 because their mutedbitwise addresses 820 are “x0x0” which are similar to thespan counter 830 “00” when ignoring themuted bits 822. The order of the elements for the first virtualpartial wavefunction φ 1 810A follows the bitwise counting of themuted bits 822 for the first qubit and third qubit. That is, in this example, the element order follows the “00,” “01,” “10,” and “11” bits of the first and third columns of the muted bitwise addresses 820 whose unmuted bits are the same as thespan counter 830. - The
QVM 720 accesses 730 (indicated with a circled 3) theprobability amplitudes 806 from the memory locations 808 L1, L3, L9 and L11, respectively. TheQVM 420 executes (indicated with a circled 4) thequantum operation U 840 on the first virtualpartial wavefunction φ 1 810A using a matrix multiplication that generates (indicated by circled 5) a resulting virtual partial wavefunction φ*1 812A which includes the resultingprobability amplitudes 816 α*0000, α*0010, α*1000, and α*1010. TheQVM 420 stores 750 (indicated by circled 6) the resultingprobability amplitudes 816 for a given vector location in the resulting virtual partial wavefunction φ*1 812A at thesame memory 808 location as the accessedprobability amplitude 806 in the same vector location of the virtualpartial wavefunction 810A. That is, in this example, α*0000 is stored in memory location L1, α*0010 is stored in memory location L3, α*1000 is stored in memory location L9, and α*1010 is stored in memory location L11. - In an alternate example where the
quantum operation U 840 acts on the third qubit and first qubit, the accessed 730probability amplitudes 806 are ordered as α0000, α1000, α0010, and α1010. The order of the elements follows the bitwise counting of the muted bits for the third qubit and first qubit (rather than first and third, as above). Accordingly, in this example, the element order follows the “00,” “01,” “10,” and “11” bits of the third and first columns of the muted bitwise addresses 820 whose unmuted bits are the same as thespan counter 830. TheQVM 420stores 750 the resulting complex amplitudes similarly to above. This reordering example can be similarly applied to the virtualpartial wavefunctions 810 inFIGS. 8D-8F but is not expressly described. -
FIG. 8D shows the determining 720, accessing 730, executing 740, and storing 750 processes for the second virtualpartial wavefunction φ 2 810B. In this figure, the resultingprobability amplitudes 816 from the previous step are illustrated (and bolded) in theirappropriate memory locations 808. Thespan counter 830 for the second virtualpartial wavefunction 810B is at “01” (indicated with a circled 1). Therefore, theQVM 420 determines 720 that the elements for the second virtualpartial wavefunction φ 2 810B (indicated with a circled 2) areprobability amplitudes 806 α0001, α0011, α1001, and α1011. The order of the elements follows the bitwise counting of themuted bits 822 for the first qubit then the third qubit. TheQVM 420 accesses 730 (indicated with a circled 3) theprobability amplitudes 806 from the memory locations 808 L2, L4, L10 and L12, respectively. TheQVM 420 executes 740 the quantum operation (indicated with a circled 4) on the second virtualpartial wavefunction φ 2 810B and generates (indicated with a circled 5) a resulting virtual partial wavefunction φ*2 812B which includes the resultingprobability amplitudes 816 α*0001, α*0011, α*1001, and α*1011. TheQVM 420 stores 750 (indicated with a circled 6) the resultingprobability amplitudes 816 at theappropriate memory locations 808. -
FIG. 8E shows the determining 720, accessing 730, executing 740, and storing 750 processes for the third virtualpartial wavefunction φ 3 810C. In this figure, the resultingprobability amplitudes 816 from the previous steps are illustrated (and bolded) in theirappropriate memory locations 808. Thespan counter 830 for the third virtualpartial wavefunction φ 3 810C is at “10” (indicated with a circled 1). Therefore, theQVM 420 determines 720 that the elements for the third virtualpartial wavefunction φ 3 810C (indicated with a circled 2) areprobability amplitudes 806 α0100, α0110, α1100, and α1110. The order of the elements follows the bitwise counting of themuted bits 822 for the first qubit then the third qubit. TheQVM 420 accesses 730 (indicated with a circled 3) theprobability amplitudes 806 from the memory locations 808 L5, L7, L13 and L15, respectively. TheQVM 420 executes 740 the quantum operation (indicated with a circled 4) on the third virtualpartial wavefunction φ 3 810C and generates (indicated with a circled 5) a resulting virtual partial wavefunction φ*3 812C which includes the resultingprobability amplitudes 816 α*0100, α*0110, α*1100, and α*1110. TheQVM 420 stores 750 (indicated with a circled 6) the resultingprobability amplitudes 816 at theappropriate memory locations 808. - Finally,
FIG. 8F shows the determining 720, accessing 730, executing 740, and storing 750 processes for the fourth virtualpartial wavefunction φ 4 810D. In this figure, the resultingprobability amplitudes 816 from the previous steps are illustrated (and bolded) in theirappropriate memory locations 808. Thespan counter 830 for the fourth virtualpartial wavefunction φ 4 810D is at “11” (indicated with a circled 1). Therefore, theQVM 420 determines 720 that the elements for the fourth virtual partial wavefunction φ4 810D (indicated with a circled 2) areprobability amplitudes 806 α0101, α0111, α1101 and α1111. The order of the elements follows the bitwise counting of themuted bits 822 for the first qubit then third qubit. TheQVM 420 accesses 730 (indicated with a circled 3) theprobability amplitudes 806 from the memory locations 808 L6, L8, L14 and L16, respectively. TheQVM 420 executes 740 the quantum operation (indicated with a circled 4) on the fourth virtualpartial wavefunction φ 4 810D and generates (indicated with a circled 5) a resulting virtual partial wavefunction φ*4 812D which includes the resultingprobability amplitudes 816 α*0101, α*0111 α*1101 and α*1111. TheQVM 420 stores 750 (indicated with a circled 6) the resultingprobability amplitudes 816 at theappropriate memory locations 808. - The QVM determines 460 the result of the hybrid algorithm H by measuring the resulting
probability amplitudes 816 of the evolvedvirtual wavefunction 800. Measurement of the resultingprobability amplitudes 816 includes a matrix operation that results in a probability of measuring the n qubits of the virtual wavefunction ψ in a particular combination (“ψ0000” at probability p0000, “ψ0001” at probability p0001, . . . , and “ψ1111” at probability p1111). - The preceding example demonstrates a particular n total number of qubits and a particular k acted-on qubits. However, contrary to previously disclosed classical representations of a quantum processing system, the
QVM 420 is configured to dynamically determine virtual partial wavefunctions φ and evolve a virtual wavefunction ψ for n total qubits and k acted-on qubits. - Traditionally, systems that simulate quantum operations on classical hardware (traditional simulators) use different methods than the quantum virtual machine described herein. Generally, traditional simulators “tensor up” a quantum operation rather than determining virtual partial wavefunctions. As described above, a quantum operation U can be represented by a 2k×2k matrix in the shared
memory 240. Tensoring up the quantum operation U includes generating a 2n×2n matrix that includes the 2k×2k quantum operation. This allows traditional simulators to use traditional routines of linear algebra libraries to simulate quantum operations because the state evolution becomes a 2n×2n on a 2n element state vector. However, this process can be incredibly wasteful, especially when the k acted-on qubits and the n total qubits are highly different. - The
QVM 420 mitigates this issue by “picking apart” virtual wavefunctions to simulate quantum operations. For example, theQVM 420 allocates 4 memory locations for a quantum operation acting on a single qubit of ten total qubits, whereas traditional simulators allocate roughly 1010 memory locations for the same quantum operation. This means that, in general, theQVM 420 executes quantum operations more quickly than traditional simulators. - Some other systems perform more efficient methods than fully tensoring up a matrix. These systems typically apply a k-qubit operator by way of O(k) nested for-loops (typically k+1), with each loop having a stride length depending on the qubits being acted upon. These systems typically have some number of subroutines for a selection of values of k. These subroutines are often called “kernels”. For instance, a system might have a total of three kernels, for k=1, k=2, and k=3. Such systems are limited in their functionality; since the kernels must be either manually or computer generated for a limited number of values of k, the system is limited in the number of qubits an operator may act on. Moreover, since the kernels act on fixed values of k by way of O(k) for-loops, parallelization of the computation is potentially a complex problem which is challenging to program.
- The
QVM 420 mitigates this issue by avoiding manually or automatically generated kernels entirely. For example, theQVM 420 can be implemented with two for-loops regardless of k, the outer of which is trivially parallelized. This means that, in general, theQVM 420 executes a broader class of quantum operations more efficiently than other simulators. - Generally, the method presented for applying a quantum operation to a quantum state can be parallelized across different execution units (CPU cores, CPUs, etc.) without additional work or without changing the method. That is, one or more of the complex amplitudes stored in a local memory can be accessed and manipulated by one or more different processors simultaneously.
- Various other considerations of the
QVM 420 allow for additional improvements over traditional simulators. - The QVM can execute
method 700 in one of two modes: interpreted mode and compiled mode. In interpreted mode, the QVM accesses libraries storing the process steps, vectors, and matrices used inmethod 700. The libraries include the vector and matrices applicable to any combination of n total qubits, k acted on qubits, different quantum operations U, and qubit ordering that the quantum operation U acts on. Further, the library includes the processing steps and machine instructions for executing any of those combinations. In compiled mode, the QVM determines the vectors and matrices for the necessary combination of n total qubits, k acted on qubits, different quantum operations U, and qubit ordering that the quantum operation U acts on in real-time. In effect, theQVM 420 generates the machine instructions for executing a quantum operation in real-time. - When operating in compiled mode, the
QVM 420 can perform just-in-time compilations to increase the efficiency of a quantum operation. A just-in-time compilation replaces the machine instructions determined for a particular quantum operation with a more efficient set of machine instructions. Further, the just in time compilation replaces generalized machine instructions (e.g., Quil code) with a specialized native code (e.g., binary code) for a particular gate. TheQVM 420 can perform a just-in-time compilation for a quantum operation based on n total qubits, k acted on qubits, different quantum operations U, and qubit ordering that the quantum operation U acts on in real-time. - For example, if the quantum operation U is a CNOT gate acting on two qubits, executing the quantum operation is a matrix multiplication of a 4×4 matrix on a
length 4 vector. The matrix multiplication includes 16 complex multiplications and 12 complex additions, but can be reduced to a single transposition of complex amplitudes in the appropriate memory locations. - The
QVM 420 stores the virtual wavefunction as a vector of probability amplitudes in the sharedmemory 240 of thequantum cloud system 230. This allows any access node 210 with the appropriate API the ability to access the probability amplitudes of a virtual wavefunction in the shared memory. Therefore, the virtual wavefunction can be analyzed during state evolution. Further, this approach allows any access node (and corresponding processor) with the appropriate API to change probability amplitudes of the virtual wavefunction at any point. This can be useful for initializing a virtual wavefunction, correcting errors in a virtual wavefunction, etc. - The
QVM 420 can simulate stochastic errors that occur when executing a quantum operation on quantum processing systems. Stochastic errors are incoherent errors that occur when a quantum gate (or any other quantum operation) is applied to a qubit state. Stochastic errors can be quantum gate agnostic (i.e., can occur for any quantum gate) and do not constructively interfere when multiple stochastic errors occur when executing quantum operations. - The
QVM 420 simulates stochastic errors by introducing a stochastic noise operation S to the quantum operation U. The stochastic noise operation is an operation configured to simulate the stochastic noise of the quantum operation executed on a quantum processing system. In some cases, the stochastic error noise operation is a Pauli channel. A Pauli channel introduces stochastic errors by introducing random stochastic rotations about three axes of the Bloch sphere. The stochastic errors occur along an axis of the Bloch sphere with a particular probability. - In various configurations, the
QVM 420 can include options to execute quantum operations either with, or without, stochastic errors. - The
QVM 420 can simulate unitary errors that occur when executing a quantum operation on quantum processing systems. Unitary errors are coherent errors that occur when a quantum gate (or any other quantum operation) is applied to a qubit state during execution of quantum operations on a quantum processing system. Unitary errors are, generally, associated with a specific quantum gate when the quantum gate is applied to a qubit state and each quantum gate can have a different unitary error. - The
QVM 420 simulates unitary errors by replacing perfect quantum operations U with imperfect quantum operations U′. In some examples, the imperfect quantum operations U′ are a Krauss operator. The imperfect quantum operations U′ are configured to simulate the unitary error of the quantum operation U on a quantum processing system. Generally, the imperfect quantum operation can be implemented as a particular unitary error operation T executed in series with a particular quantum operation U. Each quantum operation U can have its own unitary error operation T In various configurations, theQVM 420 can include options to execute quantum operations either with, or without, unitary errors. - The QVM can also simulate a quantum operation using a multi-amplitude discrete path integral technique (discrete path technique) analogous to the Feynman path integral formalism of quantum mechanics. In this method, the
QVM 420 initializes an initial virtual wavefunction φi and a set F of final virtual wavefunctions φf. The QVM using the discrete path technique determines {φf|P|φi |φf∈F} for a quantum circuit P including quantum operations Ui. The QVM sums the probability amplitudes α for each trajectory from the initial bitstring state φi to the final bitstring state φf. Each quantum operation Ui in the quantum circuit connects any given intermediate virtual wavefunction state to at most k other complex amplitudes of the subsequent virtual wavefunction. Therefore, the complex amplitudes for the final virtual wavefunction can be calculated for the entire circuit P. This process is similar to calculating a propagator in the Feynman formalism using the techniques described inmethod 700. - In some embodiments, one or more density matrix simulations may be made to run on any of the systems described herein, and employ any of the methods described herein. In other words, the calculation techniques of the QVM may be applied to calculations on density matrices. Further, the techniques and systems described herein are also applicable to density matrix evolution.
- Density matrices are mathematical constructs that allow one to represent a probability distribution of pure states. Such distributions are often called mixed states and are used in the study and computation of quantum systems. As an example, described herein is a technique for applying a k-qubit unitary operator U to a quantum state s. For n qubits, mathematically, a unitary operator U is a 2k×2k matrix and is applied to a quantum state s that is a column vector of 2n complex amplitudes.
- In an example, a density matrix r is a 2n×2n matrix and represents a probability distribution of pure quantum states. A density operator on a density matrix, also known as a super-operator, is written as
-
r→Σ i A i rB i (1) - for matrices Ai and Bi. For some selections of Ai and Bi, these are called Kraus operators.
- A density matrix calculation can be transformed into the equivalent of a quantum state calculation. For example, a density matrix r may be represented in vectorized form as, for example, vec(r). A system generates vec(r) by concatenating rows of the density matrix r to form a single linear vector. In other words, the (i,j)th element of the density matrix r corresponds to the (2ni+j)th element of vec(r). Notably, vec(r) is compatible with the wavefunction formalism.
- Without loss of generality, calculating the action of a superoperator effectively reduces to calculating one term of equation (1). To illustrate, using the examples above, AirBi can be determined as
-
A i rB i=(A i ⊗B i T)vec(r) (2) -
which is equivalent to -
A i rB i=(A i ⊗I)(I⊗B i T)vec(r) (3) - In the context of quantum operators and quantum states, the operation I⊗Bi T is equivalent to an operation Bi T acting on
qubits 0, . . . , n−1, while Ai⊗I is equivalent to an operation Ai acting on “qubits” n, . . . 2n−1. These “qubits” do not represent physical qubits, but are a mathematical construction to assist with the representation of a density operator. - In alternate embodiments, aspects of the invention are implemented in computer hardware, firmware, software, and/or combinations thereof. Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Generally, a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits) and other forms of hardware, such as FPGAs.
- In some embodiments, a QVM may be run on a computer system using “Non-Uniform Memory Architecture”—NUMA. In further embodiments a QVM may be run on a distributed machine, like a supercomputer. In embodiments other computer architectures and/or other computer components may be used beyond what has been described herein.
- Although the detailed description contains many specifics, these should not be construed as limiting the scope of the invention but merely as illustrating different examples and aspects of the invention. It should be appreciated that the scope of the invention includes other embodiments not discussed in detail above. Various other modifications, changes and variations which will be apparent to those skilled in the art may be made in the arrangement, operation and details of the method and apparatus of the present invention disclosed herein without departing from the spirit and scope of the invention as defined in the appended claims. Therefore, the scope of the invention should be determined by the appended claims and their legal equivalents.
- In the claims, reference to an element in the singular is not intended to mean “one and only one” unless explicitly stated, but rather is meant to mean “one or more.” In addition, it is not necessary for a device or method to address every problem that is solvable by different embodiments of the invention in order to be encompassed by the claims.
Claims (35)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/251,766 US20210132969A1 (en) | 2018-06-13 | 2019-06-13 | Quantum Virtual Machine for Simulation of a Quantum Processing System |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862684609P | 2018-06-13 | 2018-06-13 | |
US17/251,766 US20210132969A1 (en) | 2018-06-13 | 2019-06-13 | Quantum Virtual Machine for Simulation of a Quantum Processing System |
PCT/US2019/037070 WO2019241570A1 (en) | 2018-06-13 | 2019-06-13 | Quantum virtual machine for simulation of a quantum processing system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20210132969A1 true US20210132969A1 (en) | 2021-05-06 |
Family
ID=68842332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/251,766 Pending US20210132969A1 (en) | 2018-06-13 | 2019-06-13 | Quantum Virtual Machine for Simulation of a Quantum Processing System |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210132969A1 (en) |
WO (1) | WO2019241570A1 (en) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200387578A1 (en) * | 2019-06-10 | 2020-12-10 | International Business Machines Corporation | Representing the operation of a quantum computing device over time |
CN113222160A (en) * | 2020-01-21 | 2021-08-06 | 合肥本源量子计算科技有限责任公司 | Quantum state conversion method and device |
US20210303282A1 (en) * | 2020-03-24 | 2021-09-30 | IonQ, Inc. | Pulse generation |
US11290181B1 (en) * | 2021-03-18 | 2022-03-29 | The United States Of America As Represented By The Secretary Of The Army | System and method for measurement of entangled photons wavefunctions |
US11294797B1 (en) * | 2021-06-22 | 2022-04-05 | Classiq Technologies LTD. | Debugger for quantum computers |
US11367014B2 (en) * | 2020-05-05 | 2022-06-21 | Qubit Moving And Storage, Llc | System and method for quantum cache |
CN114692880A (en) * | 2020-12-31 | 2022-07-01 | 合肥本源量子计算科技有限责任公司 | Simulation method and device for quantum state amplitude in quantum line |
US20220309374A1 (en) * | 2020-02-18 | 2022-09-29 | Jpmorgan Chase Bank, N.A. | Systems and methods for using distributed quantum computing simulators |
CN115130675A (en) * | 2022-09-02 | 2022-09-30 | 之江实验室 | Multi-amplitude simulation method and device of quantum random circuit |
US11494681B1 (en) * | 2017-12-14 | 2022-11-08 | Rigetti & Co, Llc | Quantum instruction compiler for optimizing hybrid algorithms |
CN115511094A (en) * | 2021-06-23 | 2022-12-23 | 合肥本源量子计算科技有限责任公司 | Quantum line execution result determining method and device and quantum computer operating system |
US20230186141A1 (en) * | 2021-12-11 | 2023-06-15 | International Business Machines Corporation | Visual presentation of quantum-classical interface in a user experience |
WO2023138202A1 (en) * | 2022-01-24 | 2023-07-27 | 腾讯科技(深圳)有限公司 | Quantum circuit simulation method and apparatus, device, storage medium, and program product |
US11933608B2 (en) | 2022-05-19 | 2024-03-19 | Qubit Moving And Storage, Llc | Quantum interferometer with improved entangled photon identification |
US11962353B2 (en) | 2022-04-06 | 2024-04-16 | Qubit Moving And Storage, Llc | Method and system for identifying entangled photons with one-way classical information sharing |
US11994899B2 (en) | 2020-11-25 | 2024-05-28 | Qubit Moving And Storage, Llc | System that generates a shared random number |
US12003625B2 (en) | 2020-11-25 | 2024-06-04 | Qubit Moving And Storage, Llc | Receiver for verification using entangled photons |
US12003626B2 (en) | 2020-11-25 | 2024-06-04 | Qubit Moving And Storage, Llc | System and method of verification, authentication, and/or certification using entangled photons |
US12007272B2 (en) | 2022-10-15 | 2024-06-11 | Qubit Moving And Storage, Llc | Entangled photon identification system and method for quantum optical measurement |
US12039409B2 (en) * | 2020-05-05 | 2024-07-16 | Qubit Moving And Storage, Llc | Quantum information system and method with entanglement tracking and generation of verified quantum information using metadata |
US12087503B2 (en) | 2021-06-11 | 2024-09-10 | SeeQC, Inc. | System and method of flux bias for superconducting quantum circuits |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113222151B (en) * | 2020-01-21 | 2023-09-05 | 本源量子计算科技(合肥)股份有限公司 | Quantum state transformation method and device |
CN113222154B (en) * | 2020-01-21 | 2023-09-05 | 本源量子计算科技(合肥)股份有限公司 | Quantum state amplitude determining method and device |
CN111626427B (en) * | 2020-05-29 | 2023-11-03 | 本源量子计算科技(合肥)股份有限公司 | Quantum logic gate operation quantum bit display method and device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080313430A1 (en) * | 2007-06-12 | 2008-12-18 | Bunyk Paul I | Method and system for increasing quantum computer processing speed using digital co-processor |
US20200274554A1 (en) * | 2017-09-15 | 2020-08-27 | President And Fellows Of Harvard College | Device-tailored model-free error correction in quantum processors |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013006836A1 (en) * | 2011-07-06 | 2013-01-10 | D-Wave Systems Inc. | Quantum processor based systems and methods that minimize an objective function |
US9537953B1 (en) * | 2016-06-13 | 2017-01-03 | 1Qb Information Technologies Inc. | Methods and systems for quantum ready computations on the cloud |
EP3520041A4 (en) * | 2016-09-30 | 2020-07-29 | Rigetti & Co., Inc. | Simulating quantum systems with quantum computation |
-
2019
- 2019-06-13 US US17/251,766 patent/US20210132969A1/en active Pending
- 2019-06-13 WO PCT/US2019/037070 patent/WO2019241570A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080313430A1 (en) * | 2007-06-12 | 2008-12-18 | Bunyk Paul I | Method and system for increasing quantum computer processing speed using digital co-processor |
US20200274554A1 (en) * | 2017-09-15 | 2020-08-27 | President And Fellows Of Harvard College | Device-tailored model-free error correction in quantum processors |
Non-Patent Citations (3)
Title |
---|
Smelyanskiy et al. ("aHiPSTER: The Quantum High Performance Software Testing Environment", 2016, pages: 9, arXiv:1601.07195v2 * |
Steiger et al. ("ProjectQ: An Open Source Software Framework for Quantum Computing", Jan, 2018, pages: 13, arXiv:1612.08091v2 * |
Viamontes et al. ("Gate-Level Simulations of Quantum Circuits", 2008, pages: 17, arXiv:quant-ph/0208003v1 * |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494681B1 (en) * | 2017-12-14 | 2022-11-08 | Rigetti & Co, Llc | Quantum instruction compiler for optimizing hybrid algorithms |
US20200387578A1 (en) * | 2019-06-10 | 2020-12-10 | International Business Machines Corporation | Representing the operation of a quantum computing device over time |
US11704455B2 (en) * | 2019-06-10 | 2023-07-18 | International Business Machines Corporation | Representing the operation of a quantum computing device over time |
CN113222160A (en) * | 2020-01-21 | 2021-08-06 | 合肥本源量子计算科技有限责任公司 | Quantum state conversion method and device |
US20220309374A1 (en) * | 2020-02-18 | 2022-09-29 | Jpmorgan Chase Bank, N.A. | Systems and methods for using distributed quantum computing simulators |
US20210303282A1 (en) * | 2020-03-24 | 2021-09-30 | IonQ, Inc. | Pulse generation |
US20240289100A1 (en) * | 2020-03-24 | 2024-08-29 | IonQ Inc. | Pulse generation |
US11853731B2 (en) * | 2020-03-24 | 2023-12-26 | IonQ, Inc. | Pulse generation |
US12039409B2 (en) * | 2020-05-05 | 2024-07-16 | Qubit Moving And Storage, Llc | Quantum information system and method with entanglement tracking and generation of verified quantum information using metadata |
US11367014B2 (en) * | 2020-05-05 | 2022-06-21 | Qubit Moving And Storage, Llc | System and method for quantum cache |
US11507874B2 (en) | 2020-05-05 | 2022-11-22 | Qubit Moving And Storage, Llc | System and method for sharing quantum information |
US11829847B2 (en) | 2020-05-05 | 2023-11-28 | Qubit Moving And Storage, Llc | Quantum cache |
US11610147B2 (en) | 2020-05-05 | 2023-03-21 | Qubit Moving And Storage, Llc | Distributed quantum entanglement cache |
US12003626B2 (en) | 2020-11-25 | 2024-06-04 | Qubit Moving And Storage, Llc | System and method of verification, authentication, and/or certification using entangled photons |
US11994899B2 (en) | 2020-11-25 | 2024-05-28 | Qubit Moving And Storage, Llc | System that generates a shared random number |
US12003625B2 (en) | 2020-11-25 | 2024-06-04 | Qubit Moving And Storage, Llc | Receiver for verification using entangled photons |
CN114692880A (en) * | 2020-12-31 | 2022-07-01 | 合肥本源量子计算科技有限责任公司 | Simulation method and device for quantum state amplitude in quantum line |
US11290181B1 (en) * | 2021-03-18 | 2022-03-29 | The United States Of America As Represented By The Secretary Of The Army | System and method for measurement of entangled photons wavefunctions |
US12087503B2 (en) | 2021-06-11 | 2024-09-10 | SeeQC, Inc. | System and method of flux bias for superconducting quantum circuits |
US11960384B2 (en) | 2021-06-22 | 2024-04-16 | Classiq Technologies LTD. | Debugger for quantum computers |
US11294797B1 (en) * | 2021-06-22 | 2022-04-05 | Classiq Technologies LTD. | Debugger for quantum computers |
CN115511094A (en) * | 2021-06-23 | 2022-12-23 | 合肥本源量子计算科技有限责任公司 | Quantum line execution result determining method and device and quantum computer operating system |
US20230186141A1 (en) * | 2021-12-11 | 2023-06-15 | International Business Machines Corporation | Visual presentation of quantum-classical interface in a user experience |
WO2023138202A1 (en) * | 2022-01-24 | 2023-07-27 | 腾讯科技(深圳)有限公司 | Quantum circuit simulation method and apparatus, device, storage medium, and program product |
US11962353B2 (en) | 2022-04-06 | 2024-04-16 | Qubit Moving And Storage, Llc | Method and system for identifying entangled photons with one-way classical information sharing |
US12088352B2 (en) | 2022-04-06 | 2024-09-10 | Qubit Moving And Storage, Llc | Method and system for identifying entangled photons without classical information sharing |
US11933608B2 (en) | 2022-05-19 | 2024-03-19 | Qubit Moving And Storage, Llc | Quantum interferometer with improved entangled photon identification |
CN115130675A (en) * | 2022-09-02 | 2022-09-30 | 之江实验室 | Multi-amplitude simulation method and device of quantum random circuit |
US12007272B2 (en) | 2022-10-15 | 2024-06-11 | Qubit Moving And Storage, Llc | Entangled photon identification system and method for quantum optical measurement |
Also Published As
Publication number | Publication date |
---|---|
WO2019241570A1 (en) | 2019-12-19 |
WO2019241570A8 (en) | 2021-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210132969A1 (en) | Quantum Virtual Machine for Simulation of a Quantum Processing System | |
US11010145B1 (en) | Retargetable compilation for quantum computing systems | |
US10846366B1 (en) | Selecting parameters for a quantum approximate optimization algorithm (QAOA) | |
US11507872B2 (en) | Hybrid quantum-classical computer system and method for performing function inversion | |
US11488049B2 (en) | Hybrid quantum-classical computer system and method for optimization | |
US20230143652A1 (en) | Automated Synthesizing of Quantum Programs | |
US11494681B1 (en) | Quantum instruction compiler for optimizing hybrid algorithms | |
US12001268B2 (en) | Reducing unitary error in a quantum computation system | |
McCaskey et al. | Validating quantum-classical programming models with tensor network simulations | |
US11900219B1 (en) | Gate formation on a quantum processor | |
US11574030B1 (en) | Solving optimization problems using a hybrid computer system | |
US20220284337A1 (en) | Classically-boosted variational quantum eigensolver | |
WO2021102344A1 (en) | Quantum algorithm and design for a quantum circuit architecture to simulate interacting fermions | |
US20220067245A1 (en) | Low-cost linear orders for quantum-program simulation | |
US20210073668A1 (en) | Computer System and Method for Implementing a Conditional Reflection Operator on a Quantum Computer | |
US20220358393A1 (en) | Quantum computer system and method for performing quantum computation with reduced circuit depth | |
US11861457B2 (en) | Realizing controlled rotations by a function of input basis state of a quantum computer | |
US20230131510A1 (en) | Quantum computing system and method for time evolution of bipartite hamiltonians on a lattice | |
US12067458B2 (en) | Parameter initialization on quantum computers through domain decomposition | |
Vert et al. | Benchmarking quantum annealing against “hard” instances of the bipartite matching problem | |
US11521103B1 (en) | Utilizing multiple quantum processor unit (QPU) instances | |
Ahmadzadeh et al. | Fast and scalable quantum computing simulation on multi-core and many-core platforms | |
Abbott et al. | Understanding the quantum computational speed-up via de-quantisation | |
WO2023043996A1 (en) | Quantum-computing based method and apparatus for estimating ground-state properties | |
US20230143904A1 (en) | Computer System and Method for Solving Pooling Problem as an Unconstrained Binary Optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: APPLICATION DISPATCHED FROM PREEXAM, NOT YET DOCKETED |
|
AS | Assignment |
Owner name: TRINITY CAPITAL INC., ARIZONA Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:RIGETTI & CO, INC.;REEL/FRAME:055557/0057 Effective date: 20210310 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
AS | Assignment |
Owner name: RIGETTI & CO, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SMITH, ROBERT STANLEY;REEL/FRAME:057402/0935 Effective date: 20200117 |
|
AS | Assignment |
Owner name: RIGETTI & CO, LLC, CALIFORNIA Free format text: CERTIFICATE OF CONVERSION;ASSIGNOR:RIGETTI & CO, INC.;REEL/FRAME:057988/0875 Effective date: 20211006 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
AS | Assignment |
Owner name: TRINITY CAPITAL INC., ARIZONA Free format text: AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNORS:RIGETTI & CO, LLC;RIGETTI INTERMEDIATE LLC;RIGETTI COMPUTING, INC.;REEL/FRAME:068146/0416 Effective date: 20240621 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |