Efficient quantum adaptive execution methods for quantum circuits

The adaptive compilation methodology optimizes quantum circuits based on previous results, enabling efficient execution across multiple quantum computers, reducing errors and enhancing execution efficiency.

JP7621375B2Active Publication Date: 2025-01-24INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2022559732
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-04-28
Filing Date
2021-04-19
Publication Date
2025-01-24
Estimated Expiration
2041-04-19

AI Technical Summary

Technical Problem

Conventional quantum circuit optimization technologies focus on strengthening individual quantum circuits, leading to errors and noise due to hardware constraints when multiple circuits are executed sequentially, limiting quantum programs to a single quantum computer.

Method used

An adaptive compilation methodology that utilizes the output of previous quantum circuits to optimize and compile subsequent circuits, allowing quantum programs to be distributed across multiple quantum computers with varying characteristics and noise quality.

Benefits of technology

Reduces errors and enhances execution efficiency by adapting quantum programs to specific quantum backends, optimizing circuit dependencies and improving execution time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007621375000001
    Figure 0007621375000001
  • Figure 0007621375000002
    Figure 0007621375000002
  • Figure 0007621375000003
    Figure 0007621375000003
Patent Text Reader

Abstract

A system is disclosed that can facilitate quantum adaptive execution methods based on preceding quantum circuits and intermediate results. It generates an adaptive compilation methodology optimized for a specific backend and preceding quantum circuit dependencies, which can be redirected to the correct quantum backend by a job dispatcher. Portions of quantum circuits may depend on other quantum circuits based on intermediate results produced by preceding circuits. The system can manage circuit optimization based on their dependencies and the results produced by the preceding quantum circuits. In this way, the system can obtain optimal results for the quantum circuits and feed those results into a compiler unit to generate adaptive compilation results. The resulting post-processing unit is a unit that manages data input / output, applying this logic and pushing the logic to the compiler unit and job dispatcher.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The subject disclosure relates to a quantum adaptive execution methodology that is based on quantum circuit dependencies and intermediate results generated by a preceding quantum circuit. An optimized adaptive compilation methodology is utilized for a particular backend quantum circuit and preceding dependent quantum circuits, thereby redirecting the circuit via a job dispatcher to a quantum backend that executes the quantum circuit. [Background technology]

[0002] Quantum programming is the process of assembling a set of instructions called a quantum program. A quantum program is also known as a job that can be executed on a quantum computer. A quantum program can have a collection of quantum circuits. The quantum circuits in a job can have dependencies, and the results of a previous quantum circuit can be used to execute the next quantum circuit. When a quantum circuit is executed, results are produced by the quantum computer, and some of the results of these quantum circuits are dependent on intermediate results produced by previous quantum circuits. Many conventional quantum circuit optimization techniques focus on strengthening the quantum circuit to give optimal results, so that a user can only run one quantum program in one quantum computer. Conventional techniques that submit all jobs (list of circuits) in a sequential manner and execute each job in order can lead to the propagation of errors or noise (e.g., caused by cables, other hardware in the environment) to subsequent executed circuits, which can lead to the execution of undesired quantum programs. Summary of the Invention

[0003] A summary is presented below to provide a basic understanding of one or more embodiments of the present invention. This summary is not intended to identify key or critical elements or to delineate the scope of particular embodiments or the claims. Its sole purpose is to present concepts in a simplified form as a prelude to the more detailed description that is presented later. In one or more embodiments described herein, a system, computer-implemented method, apparatus, or computer program product, or combination thereof, facilitates the generation of a quantum adaptive execution method based on a prior quantum circuit and its intermediate results.

[0004] According to an embodiment, the system includes a processor operably coupled to a memory, the processor executing the following computer-executable components: a receiving component that receives a quantum program for performing a quantum task, the quantum program including a first program and a second program; an adaptive compilation component that compiles the first program; an execution component that executes the compiled first program; a second receiving component that receives output based on executing the compiled first program; a second adaptive compilation component that compiles a second program based on output received from executing the first program; and a second execution component that executes the compiled second program.

[0005] In an optional aspect, the determination component utilizes one or more circuit outputs applied to one or more circuit inputs.

[0006] In an optional aspect, the first program is defined based on one or more previously generated outputs from the first program.

[0007] In yet another optional aspect, the second program is determined based on one or more previously received outputs from the second program.

[0008] According to an embodiment, a computer-implemented method includes executing computer-executable components using a processor operably coupled to a memory to perform the following functions: receiving a quantum program for performing a quantum task using the processor, the quantum program including a first program and a second program; an adaptive compilation component compiles the first program, and an execution component executes the compiled first program; a second receiving component receives output based on executing the compiled first program; a second adaptive compilation component compiles a second program based on output received from executing the first program; and a second execution component then executes the compiled second program.

[0009] In an optional aspect, the computer-implemented method further includes determining, by the system, one or more circuit outputs that are applied to the one or more circuit inputs.

[0010] In another optional aspect, the computer-implemented method further includes utilizing a first program defined by the system based on one or more previously generated outputs from the first program.

[0011] In yet another optional aspect, the computer-implemented method further includes utilizing, by the system, a second program that is determined based on one or more previously received outputs from the second program.

[0012] According to an embodiment, a computer-implemented method includes executing computer-executable components using a processor operably coupled to a memory to perform the following functions: determining one or more circuit outputs to be applied to one or more circuit inputs using the processor; the first program is defined based on one or more previously generated outputs from the first program; the second program is defined based on one or more previously received outputs from the second program; the receiving component recompiles the compiled first program into a first recompiled program adapted to run on a first quantum hardware device; receiving the first output is based on executing the recompiled first program; the compiled first program is then recompiled into a second recompiled program adapted to run on a second quantum hardware device; the second output is received based on executing the recompiled second program; the second program is compiled based on selecting either the received first output or the received second output. [Brief description of the drawings]

[0013] [Figure 1] FIG. 1 is a block diagram of an exemplary system implementation that facilitates quantum adaptive execution of a quantum circuit based on a preceding quantum circuit and intermediate results to generate an adaptive compilation. [Diagram 2] FIG. 1 is a block diagram of an exemplary system implementation that facilitates quantum adaptive execution of a quantum circuit based on a preceding quantum circuit and intermediate results to generate an adaptive compilation. [Diagram 3] FIG. 1 is a diagram of an example circuit composer capable of generating quantum circuits. [Figure 4] 1 is an exemplary detailed flow chart of a quantum circuit generator. [Diagram 5]1 is an exemplary flow chart of a method for efficient quantum adaptive execution of a quantum circuit. [Figure 6] FIG. 1 is a diagram of an exemplary quantum circuit for a variational quantum eigensolver (VQE) algorithm. [Figure 7] 1 is an exemplary flowchart of the VQE quantum-classical algorithm. [Figure 8] FIG. 1 is a diagram of an example, non-limiting system capable of facilitating adaptive compilation of quantum computing jobs in accordance with one or more embodiments described herein. [Figure 9] FIG. 1 is a block diagram of an example, non-limiting operating environment capable of facilitating one or more embodiments described herein. [Figure 10] FIG. 1 is a block diagram of an example, non-limiting cloud computing environment, in accordance with one or more embodiments of the subject disclosure. [Figure 11] A block diagram of an example, non-limiting abstract model layer, in accordance with one or more embodiments of the subject disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0014] The following detailed description is illustrative only and is not intended to limit the embodiments, or the application and / or use of the embodiments. Furthermore, there is no intention to be bound by any stated or implied information presented in the previous "Summary of the Invention" section or the "Description of the Preferred Embodiments" section. One or more embodiments will now be described with reference to the drawings, in which like reference numerals are used to refer to like elements throughout. In the following description, for explanatory purposes, numerous specific details are set forth in order to provide a thorough understanding of one or more embodiments. However, it will be apparent that in various instances, one or more embodiments may be practiced without these specific details.

[0015] The subject disclosure generally relates to systems and methods that use quantum adaptive execution methods for quantum circuits based on a previous quantum circuit and its intermediate outputs. It generates adaptive compilation results that are optimized for a particular backend and previous quantum circuit dependent, and thus can be redirected by a job dispatcher to the correct quantum backend. The embodiments disclosed herein can improve the next quantum circuit in a combinatorial manner using the results of the previous circuit, so that the number of errors generated can be reduced, system efficiency can be improved, and enhanced conditional logic in the quantum computer can be achieved. The embodiments can utilize a first circuit or program to analyze a program and compile it. The next sequence or second program is then compiled based on the output of the previous sequence and its internal code. There are several parameters on a quantum computer that can be changed based on the quantum sequence being executed. The results obtained through such compilation can be used to modify the quantum product, and gates / parameters can be changed for recompilation to obtain optimal results with reduced error rates. Thus, embodiments use available quantum computer backends to distribute a quantum program across many possible backends, removing the constraints associated with a single quantum program running within a single quantum computer.

[0016] In today's digital world, data is a major factor in many applications. When you take an action, you are likely to leave a digital footprint through satellite imagery, biomedical fields, smartphones, social media, and other applications. Rapidly growing technology is exponentially increasing machine-generated data. Big data represents a new era in data exploration and utilization to include data that is advanced in volume, variety, and velocity. Modern advances in software engineering have led to the deployment of software as a service (e.g., SaaS), which gives organizations a distinct advantage to focus on their core business instead of expanding and maintaining resources in computer infrastructure. For example, a "big data" clustering software as a service that utilizes a set of data instances as input can perform calculations for clustering the data and return the partitioned data to the client as output. Big data can be used in many scenarios for data mining, such as tracking content generated in social media, analyzing web page images and census data from the web, obtaining required data from Internet of Things (IoT) sensors, and activity tracking from smartphones and network traffic data for cybersecurity. As big data becomes ubiquitous in data analysis, the demand for data sampling and data dimensionality characteristics have grown exponentially. Hence, quantum computing, as something primitive in nature, has attracted more and more attention.

[0017] Quantum computing is generally the use of quantum mechanical phenomena to perform computational and information processing functions. Quantum computing can be considered in contrast to classical computing, which typically uses transistors to operate on binary values. That is, while classical computers can operate on bit values ​​of 0 or 1, quantum computers operate on qubits consisting of superpositions of both 0 and 1, and can entangle multiple qubits and utilize interference. Superconducting qubits offer a promising route to building fully functional quantum computers, as they can exhibit quantum mechanical behavior at a macroscopic level (e.g., designed and fabricated with existing integrated circuit technology) (allowing them to be used for quantum information processing). Quantum computing uses qubits as its essential unit instead of classical computational bits. A qubit (e.g., a quantum binary digit) is the quantum mechanical analogue of a classical bit. While a classical bit can operate in only one of two basis states (e.g., 0 or 1), a qubit can operate in a superposition of such basis states (e.g., α|0〉+β|1〉, where α and β are |α| 2 +|β| 2=1), which theoretically allows a number of quantum bits to hold exponentially more information than the same number of classical bits. Thus, quantum computers (i.e., computers that simply use quantum bits instead of classical bits) are theoretically capable of quickly solving problems that would be extremely difficult for classical computers. A classical computer bit is simply a binary digit that can have a value of either 0 or 1. Almost any device that has two distinct states can function to represent a classical bit: switches, valves, magnets, coins, etc. Qubits, by their quantum mystical nature, can occupy a superposition of 0 and 1 states. This does not mean that a qubit can take intermediate values ​​such as 0.63. When the state of a qubit is measured, the result is either 0 or 1. However, during the course of a calculation, the qubit can behave as if it were a mixture of states, for example 63 percent 0 and 37 percent 1.

[0018] Quantum computing is generally the use of quantum mechanical phenomena to perform computational and information processing functions. Quantum computing can be considered in contrast to classical computing, which generally uses transistors to operate on binary values. That is, while classical computers can operate on bit values ​​of 0 or 1, quantum computers operate on quantum bits (qubits) consisting of superpositions of both 0 and 1, and can entangle multiple qubits and use interference. Quantum computing has the potential to solve problems that cannot be solved by classical computers for many practical purposes due to its computational complexity. However, quantum computing requires highly specialized skills, for example to prepare quantum states of probability distributions for amplitude estimation. Quantum programming is the process of assembling a sequence of instructions, called a quantum program, that can be executed on a quantum computer.

[0019] A quantum program can have a collection of quantum circuits. When a quantum circuit is executed, a result is produced by the quantum computer. Some of such circuits can depend on other circuits based on intermediate results produced by previous circuits. A property of interest is when a quantum circuit has dependencies during its execution. Thus, such embodiments propose systems and methods that can manage the optimization of a quantum circuit based on dependencies and results produced by previous quantum circuits. This can facilitate the alleviation of constraints associated with one quantum program running on one quantum computer. Embodiments herein optimize an iterative algorithm to run on several quantum computers with different characteristics and noise qualities. An advantage of such embodiments can be to adapt a quantum program to a set of quantum computers and split it to run on different quantum backends. This can speed up the execution time, thus making the quantum circuit more efficient in the quantum backend that runs the quantum circuit.

[0020] The subject computer processing system, method apparatus, or computer program product, or any combination thereof, can be utilized to solve new problems arising from advances in technology, computer networks, the Internet, and the like.

[0021] FIG. 1 illustrates a block diagram of an exemplary system 100 capable of accessing and processing data using variable computational components depicted in accordance with one or more embodiments described herein. The system 100 can facilitate the process of using machine learning to sift through and identify large volumes and diverse forms of data, and to train neural networks or other types of models. The system 100 can also generate predictive recommendations down to the individual level in the context of one or more embodiments described herein. Aspects of the systems (e.g., system 100, etc.), devices, or processes described in this disclosure can constitute machine-executable components embodied within a machine, e.g., embodied in one or more computer-readable media associated with one or more machines. Such components, when executed by one or more machines, e.g., computers, computing devices, virtual machines, etc., can cause the machine to perform the operations described herein. Repeated descriptions of similar elements employed in one or more embodiments described herein are omitted for the sake of brevity.

[0022] The system 100 facilitates quantum adaptive execution of quantum circuits based on the preceding quantum circuits and intermediate results, generating adaptive compilations optimized for a particular backend and preceding quantum circuit dependent, and redirecting, via a job dispatcher 114, to an appropriate quantum backend 116 based on executing the quantum circuit and returning the results.

[0023] The system 100 can facilitate the process of reviewing and identifying large volumes and diverse forms of data. The system 100 can also generate predictive recommendations down to the individual level that provide context according to one or more embodiments described herein. Aspects of the systems (e.g., system 100, etc.), devices, or processes described in this disclosure can constitute machine-executable components embodied in a machine, e.g., embodied in one or more computer-readable media associated with one or more machines. Such components, when executed by one or more machines, e.g., computers, computing devices, virtual machines, etc., can cause the machine to perform the operations described. Repeated descriptions of similar elements employed in one or more embodiments described herein are omitted for brevity.

[0024] The system 100 may optionally include a server device, one or more networks, and one or more devices (not shown). The system 100 may also include or be associated with at least one processor 102 operatively coupled to the memory 104 and executing the computer-executable components. The system 100 may further include a system bus 106 that may operatively couple various components, including, but not limited to, a receiving component 108 that receives a quantum program for performing a quantum task, the quantum program including a first program. An adaptive compilation component 110 compiles the first program, and an execution component 112 executes the compiled first program. Advantages of such a system 100 include identifying errors, enhancing the execution method to improve efficiency, and changing parameters that give optimal results by modifying the original code.

[0025] In an implementation, the receiving component 108 receives a quantum program for performing a quantum task, the quantum program including a first program. The first program is defined based on one or more previously generated outputs from the first program. The second program is defined based on one or more previously received outputs from the second program. The receiving component recompiles the compiled first program into a first recompiled program adapted to run on the first quantum hardware device. The adaptive compilation component 110 compiles the first program, and the execution component 112 executes the compiled first program. An advantage of such an embodiment is that one or more circuit outputs are applied to one or more circuit inputs to provide an optimal result based on the prior output. The first program is defined based on one or more previously generated outputs from the first program. The receiving component 108 recompiles the compiled first program into a first recompiled program adapted to run on the first quantum hardware device.

[0026] Quantum circuits can be generated using a circuit composer. This allows visual learning of how to create quantum circuits and depicts what happens to the qubits during program execution. Fundamental operations of quantum computing need to be applied to manipulate the input state of the circuit. The use of gates allows the quantum logic to be put together, thereby creating a quantum circuit. A separate back-end system is used to compile this circuit. As mentioned in the previous paragraph, such an embodiment proposes an efficient quantum adaptive execution method for quantum circuits. A quantum circuit is an ordered list of quantum gates that is executed on a quantum computer (back-end). Quantum circuits in a job may have dependencies, and the results of a previous quantum circuit are necessary to execute the next quantum circuit. Thus, such an embodiment focuses on optimizing the iterative algorithm for several quantum computers with various characteristics and noise qualities. When a quantum program is received, a first program is compiled and executed. The output of the first compiled program is received, and a second program is compiled and executed. Through this technique, execution times can be improved (e.g., faster than through classical techniques) by splitting a program to run on different backends, thereby creating efficient quantum circuits in the backends.

[0027] System 100 may be any suitable computing device or set of computing devices communicatively coupleable to devices, non-limiting examples of which may include, but are not limited to, a server computer, a computer, a mobile computer, a mainframe computer, an automatic test system, a network storage device, a communication device, a web server device, a network switching device, a network routing device, a gateway device, a network hub device, a network bridge device, a control system, or any other suitable computing device. A device may be any device capable of communicating information with system 100 or any other suitable device that can utilize information provided by system 100, or any combination thereof. It should be appreciated that system 100, components, models, or devices may be provided with communication components (not shown) that enable communication over one or more networks between the systems, components, models, devices, etc.

[0028] The various components of the system 100 may be connected directly or through one or more networks. Such networks may include wired and wireless networks, including, but not limited to, cellular networks, wide area networks (WANs) (e.g., the Internet), or local area networks (LANs), including, but not limited to, cellular, WAN, wireless fidelity (Wi-Fi), Wi-Max, WLAN, wireless communications, microwave communications, satellite communications, optical communications, acoustic communications, or any other suitable communications technology. Moreover, the above-mentioned systems and / or devices have been described with respect to interactions between several components. It will be appreciated that such systems and components may include such components or subcomponents specified therein, some of the specified components or subcomponents, or additional components, or combinations thereof. Subcomponents may also be implemented as components communicatively coupled to other components rather than being included within a parent component. Still further, one or more components and / or subcomponents may be combined into a single component to achieve an aggregate functionality. A component may also interact with one or more other components that are not specifically described herein for the sake of brevity, but are known to those skilled in the art.

[0029] 2 illustrates a block diagram of another embodiment of system 100 (FIG. 1) capable of accessing and processing data using variable computational components depicted in accordance with one or more embodiments described herein. Repetitive descriptions of similar elements employed in one or more embodiments described herein are omitted for brevity.

[0030] The system 100 may further include a second receiving component 214 that receives output based on executing the compiled first program. The second adaptive compilation component 216 compiles a second program based on the output received from executing the first program. The second execution component 218 executes the compiled second program. In an implementation, the second receiving component 214 receives output based on executing the compiled first program. The second adaptive compilation component 216 compiles a second program based on the output received from executing the first program, and the second execution component 218 executes the compiled second program. The compiled first program is recompiled into a second recompiled program adapted to execute on a second quantum hardware device. The second output is received based on executing the recompiled second program. The second program is compiled based on selecting either the received first output or the received second output. The preceding quantum circuit dependencies can be used by the job dispatcher 220 to redirect to a preferred or optimal quantum backend 222. An advantage of such a method may be to utilize the output of the first program and improve the next set of quantum circuits by modifying the quantum products.

[0031] A quantum program can have a collection of quantum circuits. When a quantum circuit is executed, a result is produced by the quantum computer. Some of such circuits may depend on other circuits based on intermediate results produced by previous circuits. It is therefore necessary for the system 100 to manage the optimization of the circuits based on the dependencies. The system 100 compiles the quantum circuits based on the previous quantum circuits and the intermediate results. An advantage of such a system 100 is that it enhances the quantum results for the quantum circuits and uses these results in a compiler unit to generate an adaptive compilation methodology that produces optimized output for a particular backend. Also, the previous quantum circuit dependencies can be used by the job dispatcher 220 to redirect to a preferred or optimal quantum backend 222. The resulting post processing-unit applies such logic and manages the input / output of data for the compiler unit and the job dispatcher 220.

[0032] FIG. 3 shows an example of a circuit composer 300 capable of generating quantum circuits. As shown in the figure, quantum circuits are constructed using the circuit composer 300, which allows visual learning of how to create quantum circuits. The circuit composer 300 includes gates, as shown by block 302. The gates depict what happens to the qubits, for example from left to right, during the execution of a program. FIG. 3 shows the circuit composer 300, a tool that allows dragging and dropping quantum operations into the circuit. Quantum logic gates are fundamental quantum circuits that operate on a small number of qubits, and the fundamental operations of computing are known as gates. To manipulate the input state of the circuit, the fundamental operations of quantum computing are applied, and these are known as quantum gates. The fundamental gates and topology of quantum circuits refer to the nature of quantum processors. The fundamental gates are natively supported by physical hardware. There are various gates in quantum circuits, with special purpose gates, as shown by block 302. Through the use of these gates, quantum logic can be put together, resulting in quantum circuits, as shown by block 304. In this circuit, four qubits are set up and numbered 0 through 3. A measurement operation is then immediately applied to the quantum circuit, which retrieves an output of 0 or 1. Gates are arranged in the circuit such that blocks 306 and 308, labeled q[0] and q[1], have Pauli X gates. Block 310 shows a CX gate that toggles q[0] to q[1] and q[1] to q[2]. Similarly, a CX gate is added to block 312, which toggles q[0] to q[3]. To read out the result of the computation, the qubits are measured both q[2] and q[3] as shown by block 314. A separate back-end system is used to compile this circuit. The circuit may be unpacked with some of the gates, such as the q[3] gate, so that the circuit can be fitted into hardware.

[0033] Such an embodiment proposes a method and system that provides an efficient quantum adaptive execution of programs for quantum circuits. In this workflow, circuits that are part of a job can be optimized and compiled to fit a specific hardware in order to execute a quantum circuit on a quantum computer (backend). Parameters are adjusted to allow the compilation layer to compile the circuit in an optimal manner. At this point, one particular circuit in a job may have dependencies on intermediate results generated from other circuits. In this case, the compiler infrastructure in combination with the job dispatcher can reconfigure the quantum circuit to include results generated by the execution of a previous circuit. The second optimization is at run-time, where the compiler unit can wait for certain results generated by the execution of a previous circuit on one or more quantum backends.

[0034] FIG. 4 shows an exemplary detailed flow chart of a quantum circuit generator, illustrating the process of using the circuit composer to create a quantum circuit, execute the circuit, and interpret the results accordingly. The process begins where a quantum circuit is simulated using a graphical user interface as indicated by block 404. Upon opening the visualization tool as indicated by block 406, a device is selected from a predefined list as indicated by block 408. Once the device is selected, the gates are mapped to the topology as indicated by block 410. A set of horizontal lines resembling lined paper appears, and such lines from left to right are called quantum wires. A quantum wire represents a single quantum bit. The notation to the left of the wire indicates which quantum bit the wire represents, and also indicates that each quantum bit is initially in a |0> state. To get this output out of the quantum computer, the quantum bits must be measured, and can be added as indicated by block 412. Measurements have a dramatic effect on the quantum bits, and are therefore considered operations in themselves, and are represented using the measurement instruction. The measurement results are recorded as classical bits and are depicted as classical wires in the same fashion as quantum wires. Quantum and classical wires are distinguished by annotations on the left side of the wires, where quantum wires are marked as q[0], q[1], etc., and classical wires are marked as c1, c2, etc. Vertical wires extending from the measurement instructions depict information flowing from the quantum wires to the classical wires. The quantum circuit is completed as shown by block 414, and the circuit is executed as shown by block 416. A backend is selected as shown by block 418, a term that refers to either a classical simulator of a quantum computer or an actual quantum computer, also referred to as a quantum system. A number of shots (e.g., the number of times the quantum circuit is executed) are selected as shown by block 420. Once the circuit is executed as shown by block 422, the system executes the iterations based on the number of shots selected as shown by block 424.If there are no more iterations, the execution is completed along with a results report produced in block 426. Through this process, a quantum circuit is constructed and executed according to the selected gates / parameters.

[0035] FIG. 5 illustrates an exemplary flow chart of a method for efficient quantum adaptive execution of quantum circuits. A quantum program is called a job and consists of a list of quantum circuits. A quantum circuit is an ordered list of quantum gates to be executed on a quantum computer (backend). Quantum circuits in a job may have dependencies, and the results of a previous quantum circuit are utilized to execute the next quantum circuit. Thus, such an embodiment optimizes an iterative algorithm for several quantum computers with various characteristics and noise qualities. In the state of the art, a user typically executes one quantum program in one quantum computer. The embodiments disclosed herein facilitate the use of available quantum computer backends to distribute a quantum program (split into circuits) across many possible backends. This removes the constraints associated with a single quantum program executed on a single quantum computer. The process begins with a receiving component that receives a quantum program for executing a quantum task, as indicated by block 502, the quantum program including a first program and a second program. An adaptive compilation component, as indicated by block 504, compiles the first program. An execution component, as indicated by block 506, executes the compiled first program. These methods utilize one or more circuit outputs applied to one or more circuit inputs. The first program is defined based on one or more previously generated outputs from the first program. The second program is defined based on one or more previously received outputs from the second program. The receiving component recompiles the compiled first program into a first recompiled program adapted to run on a first quantum hardware device. Through this step, the recompilation of the compiled first program into a second recompiled program adapted to run on a second quantum hardware device. The second receiving component as indicated by block 508 receives the output based on running the compiled first program.A second adaptive compilation component as represented by block 510 compiles a second program based on the output received from executing the first program. A second execution component as represented by block 512 executes the compiled second program. Receiving the second output is based on executing the recompiled second program, and compiling the second program is based on selecting either the received first output or the received second output. Through this method, these embodiments utilize many quantum computers to adapt the quantum program and speed up execution time by splitting the program to run on different backends, creating quantum circuits in the backend. The advantage of such a method is that it optimizes execution time and eliminates data transfer (e.g., jobs and circuits) between the user / service and the quantum backend. Thus, the average execution time per dependent job or circuit is reduced.

[0036] Various algorithms such as VQE or QAOA can be used to solve optimization problems on quantum computers. The VQE algorithm is a hybrid quantum / classical algorithm that can be used to find eigenvalues ​​of large matrices. An eigenvalue is a set of parameter values ​​for which a differential equation has a nonzero solution (eigenfunction) under certain conditions. This algorithm has been introduced as a hybrid quantum-classical algorithm for simulating quantum systems. Some examples of quantum simulations using VQE include solving the molecular and electronic Schrödinger equations and model systems in condensed matter physics.

[0037] 6 shows an example quantum circuit for the Variational Quantum Eigensolver (VQE) algorithm. The heuristic trail state preparation involves two types of quantum gates: single qubit gates U(θ) denoted by 604 that are subtended by a rotation angle θ, and entanglement drift operations U(θ) denoted by 606 that operate on qubit pairs. ent The block 606 entangles N different qubits as shown by block 602 so that the search can reach a larger space. The algorithm is repeated D times, the longer the process runs, the more parameters the system learns to optimize. At the end of the process, the qubits are measured and return 0 or 1. Each measurement gives a possible answer to the optimization problem. Once the algorithm has been run D times with fixed parameters such as θ in 608, the optimization can be run to obtain the optimal result. Through this technique, the algorithm executes a binary optimization problem into a continuous optimization problem. The QAOA algorithm is another hybrid quantum-classical variational algorithm designed to tackle combinatorial optimization problems. The algorithm depends on a positive integer p, and the approximation quality increases as p gets larger. The quantum circuit that implements this algorithm has unitary gates and the depth of the circuit grows linearly with the number of constraints multiplied by p. If p is fixed and independent of the input size, the algorithm uses an efficient method called classical preprocessing. If p grows with the input size, a different strategy is proposed. The embodiments are not limited to VQE or QAOA algorithms, but rather any suitable algorithm can be used for quantum optimization depending on the given problem.

[0038] In the VQE algorithm, the output of one quantum circuit can be part of the input of another quantum circuit. In general, the VQE algorithm can be run on the same backend and get the results. However, it is possible to obtain optimal results if the VQE algorithm is split and the quantum circuits are run on different backends. The VQE algorithm can be run on different backends with various settings (different error gates) by using any type of gate or backend. This affects the performance of the final result, since quantum circuits use various quantum gates and error gates can change based on the backends available. The compiled quantum circuit prepared by the user can be used with the backend properties, qubits (T1, T2, read error, frequency, etc.), and other general properties defined in the prior art (fridge temperature, default parameters of pulses, etc.) (user inputs). The example VQE algorithm described above can be used to compile a circuit with its backend properties along with the original quantum circuit written by the user. The backend settings can be run with the results of the previous circuit. Instead of running many of the VQE algorithms (quantum programs) in the same backend, it is possible to split them into quantum circuits that can be used as backends (check the original quantum program). The nature and configuration of the backends and the previous results of one quantum circuit are dependent on the next compilation. Together, the system is able to choose the backend execution for the quantum circuit and to parallelize the quantum program simultaneously to speed up the overall execution time.

[0039] FIG. 7 shows an exemplary flow chart of the VQE quantum-classical algorithm. As mentioned in the paragraph above, the VQE algorithm is a hybrid quantum / classical algorithm that can be used to find eigenvalues ​​of a large matrix H. VQE allows finding an upper bound on the smallest eigenvalue of a given Hamiltonian. Since VQE is a hybrid quantum-classical algorithm, all calculations are performed on quantum and classical computers. The calculations start by calculating the expectation values ​​or energy levels for a given set of parameters in the Quantum Processing Unit as shown by block 702. Given a set of parameters, a quantum state is prepared as shown by block 704. Based on the measurement terms as shown by block 706, the expectation value of H is calculated as shown by 708. Once this value is obtained in the quantum processor, another optimization is performed in the classical processor as shown by block 710. An average is calculated for the expectation values ​​as shown by block 712 to find the most accurate result. An optimization procedure is performed as shown by block 714 to find a new set of parameters as shown by block 716. If there are more iterations to perform, the process repeats from block 702, as indicated by block 718. If there are no more iterations to perform, a classical optimization of the ansatz parameters is produced, as indicated by block 720. The ansatz is such that it can cover many states and has a smaller number of parameters so that it is easier to control and optimize. This methodology has great advantages over iterative quantum phase estimation and quantum phase estimation algorithms.

[0040] FIG. 8 illustrates a diagram of an example, non-limiting system 800 capable of facilitating adaptive compilation of a quantum computing job according to one or more embodiments described herein. Repeated descriptions of similar elements and / or processes employed in various embodiments described herein are omitted for brevity. According to multiple embodiments, the system can include the example, non-limiting alternative embodiment of FIG. 8. In some embodiments, the system 800 can include an interface component JoB System 802 that can receive a quantum program from an entity (e.g., a programmer, a device, a computer, a robot, a machine, an artificial intelligence-driven module, a human, etc.). In some embodiments, the interface component 802 can transmit such a quantum program to an adaptive compilation component 806 to generate a modified quantum program compilation as described above with reference to FIG. 1. In some embodiments, the quantum device can be selected from the quantum units as indicated by block 808 based on one or more execution criteria described above with reference to FIG. 1. In some embodiments, the adaptive compilation component 806 is capable of dispatching the modified quantum program compilation to a queue of quantum units 808 that are selected to execute the modified quantum program compilation based on an execution order position of the modified quantum program compilation in the queue, the execution order position of which is determinable. In some embodiments, the quantum devices selected by the selection component are capable of executing the modified quantum program compilation generated by the adaptive compilation component 806, and the interface component 802 can manage the results of such execution.For example, the interface component 802 can return results to the entity that submitted the quantum program to the interface component 802 and / or store such results in a memory device, e.g., memory 804, through result post-processing. The post-processing unit can analyze the results obtained from the previous circuit and store the data to be used for the next compilation together with the second program parameters. The result post-processing unit is the unit in charge of applying this logic and managing the input / output of data to be pushed to the compiler unit and the job dispatcher.

[0041] In some embodiments, the quantum adaptive execution system may be associated with various technologies. For example, the quantum adaptive compilation system may be associated with classical compiler technology, quantum-based compiler technology, classical computer workload scheduling technology, quantum computer workload scheduling technology, quantum mechanical technology, quantum computing technology, quantum computer technology, quantum hardware and / or software technology, quantum simulator technology, data processing technology in the classical and / or quantum domains, machine learning technology, artificial intelligence technology, or other technologies, or combinations thereof.

[0042] In some embodiments, the quantum adaptive execution system may provide technical improvements to systems, devices, components, operational steps, or process steps associated with the various techniques identified above, or combinations thereof. For example, the quantum adaptive compilation system may analyze one or more quantum devices (e.g., may analyze one or more attributes of the quantum devices, e.g., configuration, properties, availability, etc.), as well as one or more quantum programs (e.g., the next quantum program waiting to be executed on such quantum devices), and may further modify one or more elements (e.g., quantum circuits, pulse schedules, etc.) of a particular quantum program to enable execution of such quantum program on a particular quantum device at a particular moment in time (e.g., the next available quantum device, the quantum device having the highest level of reliability relative to other quantum devices, etc.). In this example, the quantum adaptive compilation system may: a) receive a quantum program (e.g., via interface component 802); b) analyze the circuit to be executed and the available backends (e.g., quantum devices); or c) generate a modified quantum program compilation (e.g., by modifying one or more elements of the received quantum program) that is ready to be executed on the next iteration of the available backends, or any combination thereof. Thus, in this example, the quantum adaptive compilation system may facilitate reducing the execution time of a particular quantum program submitted to the quantum adaptive compilation system, or may enable features of a quantum program submitted to the quantum adaptive compilation system to balance the workload of the quantum devices (e.g., reducing the latency of the quantum devices) to stabilize the usage of each device, or both.

[0043] In some embodiments, a quantum adaptive execution system provides technical improvements to a processing unit (e.g., a processor) associated with a classical or quantum computing device (e.g., a quantum processor, quantum hardware, superconducting circuits, etc.) or both. For example, by performing a compilation (e.g., programming language transformation) and / or modification of one or more elements of a received quantum program (e.g., a quantum circuit, a pulse schedule, etc.) to generate a modified quantum program compilation capable of being executed by a particular quantum device at a particular time, the quantum adaptive compilation system may facilitate a reduction in the execution time of a particular quantum program submitted to the quantum adaptive compilation system, or a reduction in the latency of the quantum device, or both, thereby improving the efficiency and / or performance of a processing unit (e.g., a processor) associated with such quantum device.

[0044] In some embodiments, the quantum adaptive execution system may employ hardware or software to solve problems that are highly technical in nature, not abstract, and cannot be implemented as a set of mental activities by a human. In some embodiments, one or more of the processes described herein may be executed by one or more specialized computers (e.g., specialized processing units, specialized classical computers, specialized quantum computers, etc.) to perform the tasks set forth in connection with the various technologies identified above. In some embodiments, the quantum adaptive compilation system, or components thereof, or both, may be utilized to solve new problems that arise due to advances in the technologies described above, quantum computing systems, cloud computing systems, computer architectures, or use of another technology, or a combination thereof.

[0045] It should be appreciated that various operations that can be performed by a quantum adaptive compilation system or components thereof as described herein are operations that are on a scale greater than the capabilities of the human mind, and therefore the quantum adaptive compilation system may utilize various combinations of electrical components, mechanical components, and circuitry that cannot be replicated in the human mind or performed by a human. For example, in a particular period of time, the amount of data processed, the speed at which such data is processed, or the type of data processed by the quantum adaptive compilation system may be greater, faster, and more varied than the amount, speed, or type of data that can be processed by the human mind in that same period of time.

[0046] According to some embodiments, the quantum adaptive compilation system may be fully operational (e.g., always on, always running, etc.) to perform one or more other functions while also performing various operations described herein. It should be appreciated that such simultaneous, multi-operation performance is beyond the capabilities of the human mind. It should also be appreciated that the quantum adaptive compilation system may include information that is not manually obtainable by an entity such as a human user. For example, the type, amount, or variety of information included in the quantum adaptive compilation system, receiving component 108, adaptive compilation component 110, execution component 112, second receiving component 214, second adaptive compilation component 216, second execution component 218, or quantum devices, or combinations thereof, may be more complex than information manually obtainable by an entity such as a human user.

[0047] To provide a context for various aspects of the disclosed subject matter, Figure 9 and the following discussion are intended to provide a general description of a suitable environment in which various aspects of the disclosed subject matter may be implemented. Figure 9 illustrates a block diagram of an exemplary, non-limiting operating environment in which one or more embodiments described herein may be facilitated. Repeated descriptions of similar elements employed in other embodiments described herein are omitted for brevity.

[0048] 9, a suitable operating environment 900 for implementing various aspects of the disclosure may also include a computer 912. The computer 912 may also include a processing unit 914, a system memory 916, and a system bus 918. The system bus 918 couples system components including, but not limited to, the system memory 916 to the processing unit 914. The processing unit 914 may be any of a variety of available processors. Dual microprocessors and other multi-processor architectures may also be employed as the processing unit 914. The system bus 918 can be any of several types of bus structures including a memory bus or memory controller, a peripheral bus or external bus, or a local bus using any of a variety of available bus architectures, including, but not limited to, Industrial Standard Architecture (ISA), MicroChannel Architecture (MSA), Enhanced ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus (USB), Advanced Graphics Port (AGP), Firewire (IEEE 1394), and Small Computer Systems Interface (SCSI), or a combination thereof.

[0049] The system memory 916 may also include volatile memory 920 and non-volatile memory 922. A Basic Input / Output System (BIOS), containing the basic routines for transferring information between elements within the computer 912, such as during start-up, is stored in the non-volatile memory 922. The computer 912 may also include removable / non-removable, volatile / non-volatile computer storage media. For example, FIG. 9 illustrates a disk storage 924. The disk storage 924 may also include, but is not limited to, devices such as a magnetic disk drive, a floppy disk drive, a tape drive, a Jaz drive, a Zip drive, an LS-100 drive, a flash memory card, or a memory stick. The disk storage 924 may also include a storage medium, either separately or in combination with other storage media. To facilitate connection of the disk storage 924 to the system bus 918, a removable or non-removable interface, such as an interface 926, is typically used. 9 also illustrates software that acts as an intermediary between a user and the basic computer resources described within the preferred operating environment 900. Such software may also include, for example, an operating system 928. The operating system 928, which may be stored on disk storage 924, acts to control and allocate resources of the computer 912.

[0050] System applications 930 take advantage of the management of resources by operating system 928 through program modules 932 and program data 934 stored, for example, in either system memory 916 or disk storage 924. It should be appreciated that the present disclosure may be implemented with various operating systems or combinations of operating systems. A user enters commands or information into computer 912 through input devices 936. Input devices 936 may include, but are not limited to, a pointing device such as a mouse, a trackball, a stylus, a touch pad, a keyboard, a microphone, a joystick, a game pad, a satellite dish, a scanner, a TV tuner card, a digital camera, a digital video camera, a web camera, and the like. These devices, and other input devices, connect to processing unit 914 through system bus 918 via interface ports 938. Interface ports 938 include, for example, serial ports, parallel ports, game ports, and a universal serial bus (USB). The output devices 940 use some of the same types of ports as the input devices 936. Thus, for example, a USB port can be used to provide input to the computer 912 and to output information from the computer 912 to the output device 940. Output adapters 942 are provided to illustrate that there are some output devices 940, such as monitors, speakers, and printers, among other output devices 940, that require special adapters. Output adapters 942 include, by way of example and not limitation, video cards and sound cards that provide a means of connection between the output device 940 and the system bus 918. It should be noted that other devices and / or systems of devices, such as a remote computer 944, provide both input and output capabilities.

[0051] The computer 912 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 944. The remote computer 944 can be a computer, a server, a router, a network PC, a workstation, a microprocessor-based appliance, a peer device, or other common network node, and can include many or all of the elements typically described for the computer 912. For simplicity, only a memory storage device 946 is illustrated with the remote computer 944. The remote computer 944 is logically connected to the computer 912 through a network interface 948, which is then physically connected via a communication connection 950. The network interface 948 encompasses wired and / or wireless communication networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, and the like. LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token Ring, and the like. WAN technologies include, but are not limited to, point-to-point links, circuit-switched networks such as Integrated Services Digital Networks (ISDN) and variations thereof, packet-switched networks, and Digital Subscriber Lines (DSL). Communications connection 950 refers to the hardware / software employed to connect network interface 948 to system bus 918. Communications connection 950 is shown internal to computer 912 for clarity of illustration, but may be external to computer 912. Hardware / software for connection to network interface 948 may also include, by way of example only, internal and external technologies such as modems, including telephone-grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.

[0052] Referring now to FIG. 10, an exemplary cloud computing environment 1050 is depicted. As shown, the cloud computing environment 1050 includes one or more cloud computing nodes 1010 that can communicate with local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or cell phone 1054A, a desktop computer 1054B, a laptop computer 1054C, or an automobile computer system 1054N, or combinations thereof. Although not shown in FIG. 10, the cloud computing node 1010 can further include a quantum platform (e.g., quantum computer, quantum hardware, quantum software, etc.) with which the local computing devices used by the cloud consumers can communicate. The nodes 1010 can communicate with each other. The nodes can be physically or virtually grouped (not shown) in one or more networks, such as a local, community, public, or hybrid cloud, or combinations thereof, as described herein above. This allows the cloud computing environment 1050 to provide infrastructure, platform, and / or software as a service without requiring cloud consumers to maintain resources on local computing devices. It will be understood that the types of computing devices 1054A-N shown in Figure 10 are intended to be merely exemplary, and that the computing nodes 1010 and the cloud computing environment 1050 can communicate with any type of computerized device over any type of network or over a network addressable connection (e.g., using a web browser), or both.

[0053] Referring to Figure 11, a set of functional abstraction layers provided by cloud computing environment 1100 (Figure 11) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 11 are intended to be merely exemplary, and embodiments of the present invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:

[0054] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: mainframes 61, RISC (reduced instruction set computer) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, the software components may include network application server software 67, quantum platform routing software 68, and / or quantum software (not shown in FIG. 11).

[0055] The virtualization layer 70 provides an abstraction layer over which the following examples of virtual entities may be provided: virtual servers 71 , virtual storage 72 , virtual networks including virtual private networks 73 , virtual applications and operating systems 74 , and virtual clients 75 .

[0056] In one example, the management layer 80 may provide the functions described below. Resource provisioning 81 provides dynamic procurement of computing resources and other resources utilized to perform tasks within the cloud computing environment. Metering and billing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, and protection for data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides allocation and management of cloud computing resources such that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance agreement for cloud computing resources in anticipation of future demands and procurement of cloud computing resources according to SLAs.

[0057] The Workload Layer 90 provides examples of functionality for which a cloud computing environment may be utilized. Non-limiting examples of workloads and functions that may come from this layer include: mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and quantum state preparation software 96.

[0058] The present invention may be a system, method, apparatus, or computer program product, or combinations thereof, at any possible level of technical detail of integration. The computer program product may include a computer readable storage medium having computer readable program instructions for causing a processor to perform aspects of the present invention. The computer readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media may further include: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded devices such as punch cards or grooved structures having instructions recorded thereon, and any suitable combination of the foregoing. As used herein, computer-readable storage media should not be construed as being ephemeral signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a wave guide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through electrical wires.

[0059] The computer readable program instructions described herein may be downloaded from a computer readable storage medium to an individual computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may comprise copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface of each computing / processing device receives the computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the individual computing / processing device. The computer readable program instructions for carrying out the operations of the present invention may be either source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state configuration data, configuration data for an integrated circuit, or object oriented programming languages ​​such as Smalltalk®, C++, and procedural or similar programming languages ​​such as the "C" programming language. The computer readable program instructions may be executed entirely on the user's computer, partly on the user's computer as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on a remote computer or server.In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or the connection may be made to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) may execute computer readable program instructions to customize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the present invention.

[0060] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, may be implemented by computer-readable program instructions. These computer-readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to make a machine, such that the instructions, which execute via a processor of the computer or other programmable data processing apparatus, create means for implementing the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored in a computer-readable storage medium having instructions stored thereon to instruct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer-readable storage medium having the instructions stored thereon comprises an article of manufacture including instructions for implementing aspects of the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams. The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to create a computer-implemented process, such that the instructions, which execute on the computer, other programmable apparatus, or other device, implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams, causing the computer, other programmable apparatus, or other device to perform a series of operable functions.

[0061] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block of the flowcharts or block diagrams may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions shown in the blocks may occur out of the order shown in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by a special-purpose hardware-based system that performs the specified functions or actions or executes a combination of special-purpose hardware and computer instructions.

[0062] Although the subject matter has been described above in the general context of computer-executable instructions for a computer program product executing on one or more computers, those skilled in the art will appreciate that the present disclosure can also be implemented or implemented in combination with other program modules. Generally, program modules include routines, programs, components, data structures, etc. that perform particular tasks and / or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the computer-implemented methods of the present invention can be practiced with other computer system configurations including single-processor or multiprocessor computer systems, minicomputing devices, mainframe computers, as well as computers, handheld computing devices (e.g., PDAs, telephones), microprocessor-based or programmable home or commercial electronic devices, and the like. The illustrated aspects can also be practiced in distributed computing environments where tasks are performed by remote processing devices linked through a communications network. However, some, if not all, aspects of the present disclosure can be practiced with stand-alone computers. In a distributed computing environment, program modules can be located in both local and remote memory storage devices.

[0063] As used in this application, the terms "component," "system," "platform," "interface," and the like, can refer to or include computer-related entities or entities related to a machine operable with one or more specialized functionalities. The entities disclosed herein can be either hardware, a combination of hardware and software, software, or software in execution. For example, a component can be, but is not limited to, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, or a computer, or combinations thereof. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and / or thread of execution, and a component can be localized on one computer or distributed between two or more computers, or both. In another example, individual components can execute from various computer-readable media having various data structures stored thereon. Components may communicate through local and / or remote processes, such as by following a signal having one or more data packets (e.g., data from one component interacts with another component within a local system, within a distributed system, or across networks, or a combination thereof, such as the Internet, which interacts with other systems via signals). As another example, a component may be a device having special functionality imparted by mechanical parts operated by electrical or electronic circuits, and operated by a software or firmware application executed by a processor. In such cases, the processor may be internal or external to the device and may execute at least a portion of the software or firmware application.As yet another example, a component can be a device that provides special functionality through electronic components without mechanical parts, where the electronic components can include a processor or other means for executing software or firmware that provides at least a portion of the functionality of the electronic components. In one aspect, a component can emulate an electronic component via a virtual machine, for example, within a cloud computing system.

[0064] In addition, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." That is, unless otherwise stated or clear from the context, "X utilizes A or B" is intended to mean any of the natural inclusive permutations. That is, if X utilizes A, X utilizes B, or X utilizes both A and B, then "X utilizes A or B" is satisfied under any of the foregoing cases. Moreover, as used within the specification of the subject matter and the accompanying drawings, the articles "a" and "an" should be construed generally to mean "one or more" unless otherwise stated or clear from the context to cover the singular form. As used herein, the terms "example, illustrative, exemplary" and / or "exemplary" are utilized to mean serving as an example, instance, or illustration. For the avoidance of doubt, the subject matter disclosed herein is not limited by such examples. Additionally, any aspect or design described herein as "example" and / or "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects or designs, and is not intended to exclude equivalent exemplary structures and techniques known to those skilled in the art.

[0065] As employed in the subject specification, the term "processor" may refer to substantially any computing processing unit or device, including, but not limited to, a single-core processor, a single processor with software multithreaded execution capability, a multi-core processor, a multi-core processor with software multithreaded execution capability, a multi-core processor with hardware multithreading technology, a parallel platform, and a parallel platform with distributed shared memory. Additionally, a processor may refer to an integrated circuit, an application specific integrated circuit (ASIC), a digital signal processor (DSP), a field programmable gate array (FPGA), a programmable logic controller (PLC), a complex programmable logic device (CPLD), discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. Furthermore, the processor may utilize nanoscale architectures, such as, but not limited to, molecular and quantum dot-based transistors, switches, and gates, to optimize space usage or improve the performance of user equipment. A processor may also be implemented as a combination of computing processing units. In this disclosure, terms such as "store," "storage," "data store," "data storage," "database," and substantially any other information storage component associated with the operation and functionality of a component are utilized to refer to a "memory component" entity embodied in a "memory" or a component that includes a memory. It should be appreciated that the memory and / or memory components described herein can be either volatile memory or non-volatile memory, or can include both volatile and non-volatile memory.By way of example, and not limitation, non-volatile memory may include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), flash memory, or non-volatile random access memory (RAM) (e.g., ferroelectric RAM (FeRAM)). Volatile memory may include, for example, RAM, which may act as external cache memory. By way of example, and not limitation, RAM is available in many forms, such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), direct Rambus RAM (DRRAM), direct Rambus dynamic RAM (DRDRAM), and Rambus dynamic RAM (RDRAM). Additionally, the disclosed memory components of the systems or computer-implemented methods herein are intended to include, but are not intended to be limited to, these and any other suitable types of memory.

[0066] What has been described above includes merely examples of systems and computer-implemented methods. Of course, for purposes of describing this disclosure, it is not possible to describe every conceivable combination of components or computer-implemented methods, but one of ordinary skill in the art will recognize that many further combinations and permutations of the present disclosure are possible. Moreover, to the extent that the terms "includes," "has," "possesses," and the like are used in the detailed description, claims, appendices, and drawings, such terms are intended to be inclusive in a manner similar to how the term "comprising" is interpreted when employed as a transitional phrase in a claim.

[0067] Although the description of various embodiments has been presented for illustrative purposes, it is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used in this specification is chosen to best explain the principles of the embodiments, practical applications, or technical improvements over the art found in the market, or to allow others skilled in the art to understand the embodiments disclosed herein.

Claims

1. 1. A system comprising: a memory for storing computer executable components; A processor for executing the computer-executable components stored in the memory, the computer-executable components comprising: A receiving component that receives a quantum program for performing a quantum task, the quantum program including a first program and a second program; an adaptive compilation component for compiling the first program; an execution component for executing the compiled first program; a second receiving component that receives output based on executing the compiled first program; a second adaptive compilation component that compiles the second program based on the received output from executing the first program; and a second execution component for executing the compiled second program; the processor, A system comprising:

2. The system of claim 1 further comprising a decision component, the decision component utilizing one or more circuit outputs applied to one or more circuit inputs.

3. The system of claim 1 or 2, wherein the first program is defined based on one or more previously generated outputs from the first program.

4. 4. The system of claim 1, wherein the second program is determined based on one or more previously received outputs from the second program.

5. 5. The system of claim 1, wherein the receiving component recompiles the compiled first program into a first recompiled program adapted to run on a first quantum hardware device.

6. The system of claim 5 , wherein receiving the output is based on executing the recompiled first program.

7. 7. The system of claim 5 or 6, wherein the recompiling of the compiled first program into a second recompiled program is adapted for execution on a second quantum hardware device.

8. The system of claim 7 , wherein receiving the second output is based on executing the recompiled second program.

9. 9. The system of claim 1, wherein compiling the second program is based on selecting either the received first output or the received second output.

10. 1. A computer-implemented method, comprising: receiving, by a system, a quantum program for performing a quantum task, the quantum program including a first program and a second program; compiling, by the system, the first program; executing, by the system, the compiled first program; receiving an output based on executing, by the system, the compiled first program; compiling, by the system, the second program based on the received output from executing the first program; executing, by the system, the compiled second program; 4. A computer-implemented method comprising:

11. determining, by said system, one or more circuit outputs applied to one or more circuit inputs; The computer-implemented method of claim 10 further comprising:

12. Utilizing the first program, the first program being determined based on one or more previously generated outputs from the first program. The computer-implemented method of claim 10 or 11, further comprising:

13. Utilizing the second program, the second program being determined based on one or more previously received outputs from the second program, by the system.

13. The computer-implemented method of claim 10, further comprising:

14. recompiling, by the system, the compiled first program into a first recompiled program adapted to run on a first quantum hardware device.

14. The computer-implemented method of claim 10, further comprising:

15. receiving, by the system, the output based on executing the recompiled first program; The computer-implemented method of claim 14 further comprising:

16. recompiling, by the system, the compiled first program into a second recompiled program adapted to run on a second quantum hardware device.

16. The computer-implemented method of claim 10, further comprising:

17. receiving a second output based on executing, by the system, the recompiled second program; The computer-implemented method of claim 16 further comprising:

18. compiling the second program based on selecting, by the system, either the received first output or the received second output.

18. The computer-implemented method of claim 10, further comprising:

19. 20. A computer program for facilitating quantum adaptive execution of a quantum circuit, the computer program causing a computer to carry out a method according to any one of claims 10 to 18.

Citation Information

Patent Citations

  • Development environment for programming quantum computing resources

    US10592216B1

  • System for reversible circuit compilation with space constraint, method and program

    US20180181685A1

  • Software-defined quantum computer

    WO2019108512A1

  • System and method of optimizing instructions for quantum computers

    WO2020056176A1