IP Library Granted Patent US 12,020,118
Granted Patent B2
US 12,020,118 · App. 18/343,196 · Granted Jun 25, 2024

Distributed quantum computing system

Inventors: Robert Stanley Smith (Emeryville, CA); William J. Zeng (Berkeley, CA)
Assignee: Rigetti & Co, LLC
G06N10/00G06F9/3877G06F9/4881G06F9/5027G06F9/546G06F8/41G06F9/455
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,020,118
App. No.
18/343,196
Granted
Jun 25, 2024
Kind
B2
Abstract

In a general aspect, user requests for access distributed quantum computing resources in a distributed quantum computing system are managed. In a general aspect, a job request for accessing a quantum computing resource is received. The job request includes a user id and a program. On authentication of a user associated with the job request, a job identifier is assigned to the job request, and a particular quantum computing resource is selected for the job request. The job request is individualized based on user permissions and pushed onto a queue to be processed for execution by the quantum computing resource.

Claims (67)

1. A system comprising:

a gateway module configured to receive a job request, the job request comprising an uncompiled computer program;

a job server configured to:

receive the job request from the gateway module, and

select a quantum processor unit (QPU) for the job request, wherein the QPU is selected from a plurality of quantum computing resources comprising a plurality of quantum processor units (QPUs);

a first queueing module configured to receive the job request from the job server;

a second queueing module associated with the selected QPU, the second queueing module configured to store instructions for the selected QPU;

a compiler module configured to:

receive the uncompiled computer program from the first queueing module,

receive calibration data from the selected QPU,

based on the uncompiled computer program, generate a schedule of instructions for the selected QPU, wherein the compiler module is configured to use the calibration data to generate the schedule of instructions for the selected QPU, and

provide the schedule of instructions to the second queueing module associated with the selected QPU; and

a third queueing module configured to:

receive output data associated with the job request, the output data generated by the selected QPU based on the schedule of instructions, and

provide the output data to the job server.

2. The system of claim 1 , wherein the job server is configured to select the QPU for the job request based on a user preference provided in the job request.

3. The system of claim 1 , wherein the job server is configured to select the QPU for the job request based on availability of the selected QPU.

4. The system of claim 1 , wherein the job server is configured to select the QPU for the job request based on a capacity of the selected QPU.

5. The system of claim 1 , wherein the job server is configured to select the QPU for the job request based on a performance metric of the selected QPU.

6. The system of claim 1 , wherein the selected QPUs is configured for hybrid quantum-classical computation.

7. The system of claim 1 , wherein the job request is a first job request received from a first user, and the gateway module comprises a gateway interface that is configured to receive the first job request from the first user and a second job request from a second user asynchronously.

8. The system of claim 1 , wherein the plurality of quantum computing resources comprises a quantum virtual machine (QVM), the job request is a first job request, the uncompiled computer program is a first uncompiled computer program, the schedule of instructions is a first schedule of instructions, the output data is first output data, and wherein:

the system comprises a fourth queueing module associated with the QVM and configured to store instructions for the QVM,

the gateway module is configured to receive a second job request, the second job request comprising a second uncompiled computer program;

the job server is configured to:

receive the second job request from the gateway module, and

select the QVM for the second job request,

the compiler module is configured to:

based on the second uncompiled computer program of the second job request, generate a second schedule of instructions for the QVM, and

provide the second schedule of instructions to the fourth queueing module associated with the QVM; and

the third queueing module is configured to:

receive second output data associated with the second job request, the second output data generated by the QVM based on the second schedule of instructions, and

provide the second output data to the job server.

9. A method comprising:

receiving, by operation of a gateway module, a job request for accessing a quantum computing resource, the job request comprising an uncompiled computer program;

receiving, by operation of a job server, the job request from the gateway module;

selecting, by operation of the job server, a quantum processor unit (QPU) for the job request, wherein the QPU is selected from a plurality of quantum computing resources comprising a plurality of QPUs;

receiving, by operation of a first queueing module, the job request from the job server;

receiving, by operation of a compiler module, the uncompiled computer program from the first queueing module;

receiving, by operation of the compiler module, calibration data from the selected QPU;

generating, by operation of the compiler module, a schedule of instructions for the selected QPU based on the uncompiled computer program,

providing, by operation of the compiler module, the schedule of instructions to a second queueing module associated with the selected QPU;

storing, by operation of the second queueing module, the schedule of instructions for the selected QPU;

receiving, by operation of a third queueing module, output data associated with the job request, the output data generated by the selected QPU based on the schedule of instructions; and

providing, by operation of the third queueing module, the output data to the job server.

10. The method of claim 9 , wherein selecting the QPU for the job request comprises:

selecting, by operation of the job server, the QPU based on a user preference provided in the job request.

11. The method of claim 9 , wherein selecting the QPU for the job request comprises:

selecting, by operation of the job server, the QPU based on availability of the QPU.

12. The method of claim 9 , wherein selecting the QPU for the job request comprises:

selecting, by operation of the job server, the QPU based on a capacity of the QPU.

13. The method of claim 9 , wherein selecting the quantum computing resources for the job request comprises:

selecting, by operation of the job server, the QPU based on a performance metric of the QPU.

14. The method of claim 9 , wherein the selected QPU is configured for hybrid quantum-classical computation.

15. The method of claim 9 , wherein the job request is a first job request from a first user, the gateway module comprises a gateway interface, and the method comprises:

receiving, through the gateway interface, the first job request from the first user and a second job request from a second user asynchronously.

16. The method of claim 9 , wherein the plurality of quantum computing resources comprises a quantum virtual machine (QVM), the job request is a first job request, the uncompiled computer program is a first uncompiled computer program, the schedule of instructions is a first schedule of instructions, the output data is first output data, and the method further comprises:

receiving, by operation of the job server, a second job request from the gateway module, the second job request comprising a second uncompiled computer program;

selecting, by operation of the job server, the QVM for the second job request;

receiving, by operation of the first queueing module, the second job request from the job server;

receiving, by operation of the compiler module, the second uncompiled computer program from the first queueing module;

generating, by operation of the compiler module, a second schedule of instructions for the QVM based on the second uncompiled computer program;

providing, by operation of the compiler module, the second schedule of instructions to the fourth queueing module associated with the QVM;

storing, by operation of the fourth queueing module, the second schedule of instructions for the QVM;

executing, by operation of the QVM, the second schedule of instructions to generate second output data;

receiving, by operation of the third queueing module, the second output data associated with the second job request from the QVM; and

providing, by operation of the third queueing module, the output data to the job server.

Assignments (5)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2023
From: SMITH, ROBERT STANLEY; ZENG, WILLIAM J.
To: RIGETTI & CO., INC.
Reel/Frame 064105/0218 →
CHANGE OF NAME Recorded Jun 28, 2023
From: RIGETTI & CO., INC.
To: RIGETTI & CO, LLC
Reel/Frame 064161/0601 →