IP Library Granted Patent US 12,625,712
Granted Patent B2
US 12,625,712 · App. 17/251,766 · Granted May 12, 2026

Quantum virtual machine for simulation of a quantum processing system

Inventor: Robert Stanley Smith (Emeryville, CA)
Assignee: Rigetti & Co, LLC
G06F9/45504G06F9/30G06N10/60G06N10/80B82Y10/00G06F17/16
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,625,712
App. No.
17/251,766
Filed
Dec 11, 2020
Granted
May 12, 2026
Kind
B2
Art Unit
2124
USPC
706/62
Abstract

Quantum operations can be simulated on a classical processing system using a quantum virtual machine (QVM). The QVM receives a quantum virtual state including a virtual wavefunction of n qubits. The virtual wavefunction is represented by probability amplitudes stored in a memory location of the classical processing system. The QVM simulates a received quantum operation by determining a set of virtual partial wavefunctions, accessing probability amplitudes for the virtual partial wavefunctions, and executing the quantum operation on the sub-bitstrings. The QVM can measure the result of the quantum operation, add noise, share the virtual wavefunction, or generate efficient machine instructions when simulating the quantum operation.

Claims (100)

1 . A method for determining a result of executing a quantum algorithm using a classical processing system, the method comprising:

receiving, from a client device, the quantum algorithm for execution on the classical processing system to determine the result, the quantum algorithm comprising a quantum operation acting on at least one qubit of a virtual wavefunction comprising 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;

determining, by the classical processing system and based on a number of quantum operations in the quantum algorithm, whether execution of the received quantum algorithm is more efficient on the classical processing system or on a quantum processing system;

responsive to determining execution is more efficient on the classical processing system based on the number of quantum operations in the quantum algorithm:

instantiating, by the classical processing system, a virtual quantum processing system configured to execute the quantum operation, the virtual quantum processing system configured to:

identify 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 comprising a proper subset of one or more complex amplitudes of the virtual wavefunction;

access the proper subset of the one or more complex amplitudes of each virtual partial wavefunction in the set of virtual partial wavefunctions from a corresponding memory location of the classical processing system;

execute the quantum operation on the accessed complex amplitudes for each virtual partial wavefunction in the proper subset of the set of virtual partial wavefunctions to determine resulting complex amplitudes, the resulting complex amplitudes representing a state evolution of the virtual wavefunction, the execution comprising:

multiplying a matrix representing the quantum operation and a set of sub-bitstring vectors representing the virtual partial wavefunctions,

wherein:

 a number of qubits the quantum operation acts on is k,

 a number of qubits in the virtual wavefunction is n,

 a number of sub-bitstring vectors is 2 n-k and a vector size of the sub-bitstring vectors is based on the number of qubits the quantum operation acts on,

 the number of the virtual partial wavefunctions is based on the number of qubits the quantum operation acts on k and a number of qubits in the virtual wavefunction,

 the matrix is stored in the classical processing system and has a matrix size based on the number of qubits the quantum operations acts on k, and

 the multiplication multiplies the matrix representing the quantum operation by the 2 n-k sub-bitstring vectors; and

store the resulting complex amplitudes in the memory of the classical processing system;

determining, by the virtual quantum processing system on the classical processing system, the result of executing the quantum algorithm based on the stored resulting complex amplitudes; and

providing, by the classical processing system, the result of executing the quantum algorithm on the classical processing system to the client device; and

responsive to determining execution is more efficient on the quantum processing system based on the number of quantum operations in the quantum algorithm:

executing the quantum algorithm on the quantum processing system; and

providing, the result of executing the quantum algorithm on the quantum processing system to the client device.

2 . The method of claim 1 , wherein 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.

3 . The method of claim 2 , wherein 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 .

4 . The method of claim 1 , wherein 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.

5 . The method of claim 4 , wherein the number of qubits in the virtual wavefunction is n and the bitstring vector size is 2 n .

6 . The method of claim 1 , wherein each of 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.

7 . The method of claim 6 , wherein the number of qubits the quantum operation is acting on is k and the sub-bitstring vector size is 2 k .

8 . The method of claim 1 , further comprising:

determining 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; and

executing the stochastic quantum operation.

9 . The method of claim 1 , further comprising:

determining 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; and

executing the unitary quantum operation.

10 . The method of claim 1 , wherein the complex amplitudes of each combination of qubits in the virtual wavefunction are accessible by an alternate processor of the classical processing system.

11 . The method of claim 1 , wherein the quantum operation is executed on each virtual partial wavefunction of the set of quantum sub-bitstrings by separate processors of the classical processing system.

12 . The method of claim 1 , wherein determining the result of the quantum algorithm comprises:

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.

13 . The method of claim 1 , wherein executing the quantum operation further comprises:

generating a set of machine instructions to execute the quantum operation on the set of virtual partial wavefunctions, wherein the set of machine instructions are executed by the classical processing system.

14 . The method of claim 1 , wherein the determination to instantiate the virtual quantum processing is based on a number of the plurality of qubits included in the quantum algorithm.

15 . The method of claim 1 , wherein the virtual quantum processing system is an application downloadable from a remote network system via a network.

16 . The method of claim 1 , wherein the client device is an application executing on a partition of the classical processing system.

17 . The method of claim 1 , wherein the quantum operation is a density operator.

18 . The method of claim 17 , wherein the density operator is a Krauss operator.

19 . The method of claim 1 , wherein the virtual wavefunction comprising the plurality of qubits is a concatenated density matrix comprising a plurality of values representing a probability distribution.

20 . The method of claim 1 , wherein the client device is the classical processing system.

21 . A client device comprising:

one or more classical processors,

a datastore comprising a non-transitory computer-readable storage medium storing instructions for an application for a virtual quantum processing system, the application configured to execute a quantum operation using classical processors, and the instructions, when executed by the one or more classical processors, cause the classical processors to perform steps comprising:

accessing a quantum algorithm comprising the quantum operation for execution using the classical processors to determine a result, the quantum algorithm comprising a quantum operation acting on at least one qubit of a virtual wavefunction comprising a plurality of qubits, each combination of qubits of the virtual wavefunction represented by a complex amplitude stored at a memory location on the datastore;

determining, by the classical processing system and based on a number of quantum operations in the quantum algorithm, whether execution of the accessed quantum algorithm is more efficient on the classical processing system or on a quantum processing system;

responsive to determining execution is more efficient on the classical processing system based on the number of quantum operations in the quantum algorithm, instantiating, by the classical processors, a virtual quantum processing system configured to execute the quantum operation, the virtual quantum processing system configured to:

identify 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 comprising a subset of one or more complex amplitudes of the virtual wavefunction;

access the subset of the one or more complex amplitudes of each virtual partial wavefunction in the set of virtual partial wavefunctions from a corresponding memory location of the classical processing system;

execute the quantum operation on the accessed complex amplitudes for each virtual partial wavefunction in the subset of the set of virtual partial wavefunctions to determine resulting complex amplitudes, the resulting complex amplitudes representing a state evolution of the virtual wavefunction, the execution comprising:

multiplying a matrix representing the quantum operation and a set of sub-bitstring vectors representing the virtual partial wavefunctions,

wherein:

 a number of qubits the quantum operation acts on is k,

 a number of qubits in the virtual wavefunction is n,

 a number of sub-bitstring vectors is 2 n-k and a vector size of the sub-bitstring vectors is based on the number of qubits the quantum operation acts on,

 the number of the virtual partial wavefunctions is based on the number of qubits the quantum operation acts on k and a number of qubits in the virtual wavefunction,

 the matrix is stored in the classical processing system and has a matrix size based on the number of qubits the quantum operations acts on k, and

 the multiplication multiplies the matrix representing the quantum operation by the 2 n-k sub-bitstring vectors; and

store the resulting complex amplitudes in the memory of the classical processors;

determining, by the virtual quantum processing system on the classical processors, the result of executing the quantum algorithm based on the stored resulting complex amplitudes; and

providing, by the classical processors, the result of the quantum algorithm to the client device; and

responsive to determining execution is more efficient on the quantum processing system based on the number of quantum operations in the quantum algorithm:

transmitting the quantum algorithm to a quantum processing system for execution; and

providing, the result of the quantum algorithm executed on the quantum processing system.

22 . The client device of claim 21 , wherein the classical processors perform steps further comprising:

receiving, from a network system and at the client device via a network, an application for a virtual quantum processing system and configured to execute a quantum operation using the classical processors.

23 . A system comprising:

one or more classical processors for a classical processing system;

one or more qubits for a quantum processing system; and

a datastore comprising a non-transitory computer-readable storage medium storing instructions that, when executed by the one or more classical processors, cause the classical processors to perform steps comprising:

receiving, from a client device, a quantum algorithm for execution on the classical processors to determine a result, the quantum algorithm comprising a quantum operation acting on at least one qubit of a virtual wavefunction comprising 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 processors;

determining, by the classical processing system and based on a number of quantum operations in the quantum algorithm, whether execution of the received quantum algorithm is more efficient on the classical processing system or on a quantum processing system;

responsive to determining execution is more efficient on the classical processing system based on the number of quantum operations in the quantum algorithm, instantiating, by the classical processors, a virtual quantum processing system configured to execute the quantum operation, the virtual quantum processing system configured to:

identify 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 comprising a subset of one or more complex amplitudes of the virtual wavefunction;

access the subset of the one or more complex amplitudes of each virtual partial wavefunction in the set of virtual partial wavefunctions from a corresponding memory location of the classical processing system;

execute the quantum operation on the accessed complex amplitudes for each virtual partial wavefunction in the subset of the set of virtual partial wavefunctions to determine resulting complex amplitudes, the resulting complex amplitudes representing a state evolution of the virtual wavefunction, the execution comprising:

multiplying a matrix representing the quantum operation and a set of sub-bitstring vectors representing the virtual partial wavefunctions,

wherein:

 a number of qubits the quantum operation acts on is k,

 a number of qubits in the virtual wavefunction is n,

 a number of sub-bitstring vectors is 2 n-k and a vector size of the sub-bitstring vectors is based on the number of qubits the quantum operation acts on,

 the number of the virtual partial wavefunctions is based on the number of qubits the quantum operation acts on k and a number of qubits in the virtual wavefunction,

 the matrix is stored in the classical processing system and has a matrix size based on the number of qubits the quantum operations acts on k, and

 the multiplication multiplies the matrix representing the quantum operation by the 2 n-k sub-bitstring vectors; and

store the resulting complex amplitudes in the memory of the classical processors;

determining, by the virtual quantum processing system on the classical processors, the result of executing the quantum algorithm based on the stored resulting complex amplitudes; and

providing, by the classical processors, the result of the quantum algorithm to the client device; and

responsive to determining execution is more efficient on the quantum processing system based on the number of quantum operations in the quantum algorithm:

executing the quantum algorithm to the quantum processing system; and

providing, the result of the quantum algorithm executed on the quantum processing system.

24 . The system of claim 23 , wherein the client device is an application executing on a partition of the datastore.

25 . The method of claim 1 , wherein the virtual wavefunction comprising a plurality of qubits includes three qubits and the quantum operation acts on the three qubits.

26 . The method of claim 1 , wherein the virtual wavefunction comprising a plurality of qubits includes five qubits and the quantum operation acts on the five qubits.

27 . The method of claim 1 , wherein the virtual wavefunction comprising a plurality of qubits includes nine qubits and the quantum operation acts on the nine qubits.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: TRINITY CAPITAL INC.
To: RIGETTI & CO, LLC
Reel/Frame 069603/0771 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: TRINITY CAPITAL INC.
To: RIGETTI & CO, LLC; RIGETTI INTERMEDIATE LLC; RIGETTI COMPUTING, INC.
Reel/Frame 069603/0831 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 8, 2024
From: RIGETTI & CO, LLC; RIGETTI INTERMEDIATE LLC; RIGETTI COMPUTING, INC.
To: TRINITY CAPITAL INC.
Reel/Frame 068146/0416 →
CERTIFICATE OF CONVERSION Recorded Nov 1, 2021
From: RIGETTI & CO, INC.
To: RIGETTI & CO, LLC
Reel/Frame 057988/0875 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2021
From: SMITH, ROBERT STANLEY
To: RIGETTI & CO, INC.
Reel/Frame 057402/0935 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Mar 10, 2021
From: RIGETTI & CO, INC.
To: TRINITY CAPITAL INC.
Reel/Frame 055557/0057 →
Continuity (2)
Provisional Application 62684609 · Jun 13, 2018
Related Publication 20210132969A1 · May 6, 2021
References Cited (11)
US 9537953B1 · Dadashikelayeh et al. · 2017 [cited by applicant]
US 20080313430A1 · Bunyk · 2008 [cited by examiner]
US 20140187427A1 · Macready et al. · 2014 [cited by applicant]
US 20180096085A1 · Rubin · 2018 [cited by applicant]
US 20200274554A1 · Aspuru-Guzik · 2020 [cited by examiner]
Smelyanskiy et al. (“aHiPSTER: The Quantum High Performance Software Testing Environment”, 2016, pp. 9, arXiv: 1601.07195v2. [cited by examiner]
Viamontes et al. (“Gate-Level Simulations of Quantum Circuits”, 2008, pp. 17, arXiv:quant-ph/0208003v1. [cited by examiner]
Steiger et al. (“ProjectQ: An Open Source Software Framework for Quantum Computing”, Jan. 2018, pp. 13, arXiv: 1612.08091v2. [cited by examiner]
PCT International Search Report and Written Opinion, PCT Application No. PCT/US2019/037070, Oct. 8, 2019, 10 pages. [cited by applicant]
Lanzagorta, M. et al., “Hybrid Quantum-Classical Computing with Applications to Computer Graphics,” SIGGRAPH '05 ACM SIGGRAPH 2005 Courses, Article No. 2, Aug. 4, 2005, 19 pages. [cited by applicant]
Smith, R.S. et al., “A Practical Quantum Instruction Set Architecture,” arXiv:1608.03355v2, 2016, 15 pages, [Online] [Retrieved on Sep. 19, 2019] Retrieved from the Internet<URL:https://arxiv.org/abs/1608.03355>. [cited by applicant]