IP Library › Granted Patent US 10,908,885
Granted Patent B2
US 10,908,885 · App. 16/437,212 · Granted Feb 2, 2021

Quantum compiler

Inventors: Andrew Maps Ducore (Bethesda, MD); Omar Shehab (Hyattsville, MD); Matthew Joseph Keesan (Washington, DC)
Assignee: IonQ, Inc.
G06F8/427G06F8/437G06N10/00
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 10,908,885
App. No.
16/437,212
Granted
Feb 2, 2021
Kind
B2
Abstract

Technologies are described herein to compile a Turing-complete quantum programming language program into a quantum circuit. The techniques described and recited herein include compiling TCQPL source code to generate a quantum circuit by generating a function object ensemble, generating an abstract syntax tree from received source code, and annotating nodes corresponding to the abstract syntax tree with corresponding function objects.

Claims (40)

1. A non-transitory computer-readable medium storing executable instructions that, upon execution, cause a digital computing processor to compile source code to generate a quantum circuit by performing functions comprising:

generating a function object ensemble;

generating an abstract syntax tree from received source code, the source code being written in a Turing complete quantum programming language; and

annotating nodes corresponding to the abstract syntax tree with each respective function object from the function object ensemble.

2. The computer-readable medium of claim 1 , wherein the generating of the function object ensemble is executed before the source code is received.

3. The computer-readable medium of claim 1 , wherein function objects included in the function object ensemble are functions written in a same language as the executable instructions.

4. The computer-readable medium of claim 1 , wherein the generating includes loading function objects into memory.

5. The computer-readable medium of claim 4 , wherein the annotating includes annotating respective nodes corresponding to the abstract syntax tree with corresponding function objects loaded into memory.

6. The computer-readable medium of claim 5 , wherein a root node of the abstract syntax tree is executable to recursively execute child nodes thereof.

7. The computer-readable medium of claim 5 , wherein a sequence of an execution of the annotated nodes is variable.

8. A digital processor, comprising:

a compiler to:

load into memory function objects corresponding, respectively, to all potential nodes of a parse tree,

receive source code, the source code being written in a Turing complete quantum programming language,

generate a parse tree from the received source code, and

annotate nodes of the generated parse tree with corresponding function objects loaded into the memory; and

a runtime to execute the annotated nodes of the parse tree.

9. The digital processor of claim 8 , wherein the compiler is to generate respective nodes of the parse tree based on each statement included in the received source code.

10. The digital processor of claim 8 , wherein the compiler is to annotate nodes of the generated parse tree by:

performing a type-check each node of the generated parse tree, and

binding respective function objects loaded into the memory to a corresponding node of the parse tree, in accordance with results of the type-check.

11. A compiling method, comprising:

loading function objects into memory;

receiving source code, the source code being written in a Turing complete quantum programming language;

loading compiler plugins;

generating a parse tree based on each statement included in the received source code;

resolving each statement included in the received source code;

hoisting the source code; and

annotating the generated parse tree by binding respective function objects loaded into the memory to a corresponding node of the parse tree, in accordance with results of a type-check.

12. The method of claim 11 , wherein the source code is received as a text string.

13. The method of claim 11 , wherein the resolving of imported statements is a recursive operation.

14. The method of claim 13 , wherein the resolving of imported statements includes compiling nested programs.

15. The method of claim 11 , wherein the hoisting includes:

resolving function declarations, and

resolving compile time constraints.

16. The method of claim 11 , wherein the annotating includes:

performing a type-check each node of the generated parse tree, and

binding respective function objects loaded into the memory to a corresponding node of the parse tree, in accordance with results of the type-check.

17. The method of claim 16 , wherein the function objects corresponding to the nodes of the parse tree are independently executed.

18. The method of claim 16 , wherein the function objects corresponding to the nodes of the parse tree are executable in variable order.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 11, 2019
From: DUCORE, ANDREW; SHEHAB, OMAR; KEESAN, MATTHEW J.
To: IONQ, INC.
Reel/Frame 049430/0045 →
Continuity (1)
Related Publication 20200394027A1 · Dec 17, 2020
Cited By (2)
US 12,271,715 US 12,346,678