Patent ID: 12223239

DETAILED DESCRIPTION

The examples set forth below represent the information to enable individuals to practice the examples and illustrate the best mode of practicing the examples. Upon reading the following description in light of the accompanying drawing figures, individuals will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.

Any flowcharts discussed herein are necessarily discussed in some sequence for purposes of illustration, but unless otherwise explicitly indicated, the examples are not limited to any particular sequence of steps. The use herein of ordinals in conjunction with an element is solely for distinguishing what might otherwise be similar or identical labels, such as “first quantum service” and “second quantum service,” and does not imply a priority, a type, an importance, or other attribute, unless otherwise stated herein. The term “about” used herein in conjunction with a numeric value means any value that is within a range of ten percent greater than or ten percent less than the numeric value. As used herein and in the claims, the articles “a” and “an” in reference to an element refers to “one or more” of the element unless otherwise explicitly specified. The word “or” as used herein and in the claims is inclusive unless contextually impossible. As an example, the recitation of A or B means A, or B, or both A and B.

Quantum computing involves the use of quantum bits, referred to herein as “qubits,” which have characteristics that differ from those of classical (i.e., non-quantum) bits used in classical computing. Qubits may be employed by quantum services that are executed by quantum computing devices. Because qubits generally require very specific environmental conditions for operation, development of quantum services is generally not performed on quantum computing devices, but rather is performed using development software and quantum simulators that execute on classical (i.e., non-quantum) computing devices. For example, a developer may execute development software within a container provided by an application container framework to write and test a quantum service definition that defines a quantum service. Upon reaching a desired level of confidence in the performance of the quantum service in the quantum simulator, the quantum service definition may be transferred to and executed by a quantum computing device as the quantum service. However, the actual operating conditions under which the quantum service will execute on the quantum computing device (e.g., number of available qubits, processor load, available memory, number of concurrently executing processes, and the like) may not match the operating conditions under which the quantum service was developed. As a result, the quantum service may not be optimized for performance on the quantum computing device.

In this regard, the examples disclosed herein implement a quantum simulator for simulating operating conditions of a quantum computing device. As used herein, the term “quantum simulator” refers to functionality provided by a classical computing device for employing a quantum service definition to simulate the execution of a corresponding quantum service. The term “quantum service” and derivatives thereof refer to a process that executes on a quantum computing device, and that accesses one or more qubits to provide a desired functionality. In exemplary operation, a processor device of a staging computing device (i.e., a classical computing device) executes a quantum simulator that receives an operating parameter from a quantum computing device. The operating parameter represents an operating condition of the quantum computing device and may include, as non-limiting examples, a count of available qubits of the quantum computing device, a processor load of the quantum computing device, an amount of available memory of the quantum computing device, or a count of executing processes of the quantum computing device. In some examples, the operating parameter may represent a real-time operating parameter that indicates a current operating condition of the quantum computing device, and may be obtained from a quantum task manager of the quantum computing device or obtained via a hardware application programming interface (API) provided by the quantum computing device. Some examples may provide that the operating parameter represents a historical operating parameter that indicates a previous operating condition of the quantum computing device.

The staging computing device also receives (e.g., from a classical computing device that functions as a development computing device for developing and testing quantum services) a quantum service definition that defines a quantum service. The quantum simulator accesses the quantum service definition. The quantum simulator then simulates the operating condition of the quantum computing device based on the operating parameter. For instance, the quantum simulator may limit the amount of memory or the number of available simulated qubits based on the operating parameter, and/or may restrict the availability of other simulated system resources based on the operating parameter. The quantum simulator then executes the quantum service under the simulated operating condition based on the quantum service definition.

The staging computing device in some examples may further measure a performance characteristic (e.g., execution speed, system resource consumption, results generated, errors generated, and the like) of the quantum service during execution by the quantum simulator. Based on the measuring of the performance characteristic, the quantum service definition may be modified (either in response to manually provided user input, or automatically by the staging computing device). In this manner, the quantum service definition can be updated based on the performance of the quantum service under the simulated operating condition provided by the quantum simulator. Some examples may provide that the staging computing device may determine that the performance characteristic of the quantum service satisfied a performance criterion and, in response, may “promote” the quantum service definition to the quantum computing device. The process of promoting the quantum service definition may comprise transferring the quantum service definition to the quantum computing device, and initiating execution of the quantum service by the quantum computing device.

FIG.1is a block diagram of a computing system10according to one example. The computing system10includes a quantum computing device12that comprises a system memory14and a processor device16. The computing system10ofFIG.1further includes a development computing device18, which is a classical computing device that comprises a system memory20and a processor device22. The computing system10ofFIG.1also includes a staging computing device24, which is a classical computing device that comprises a system memory26and a processor device28. The quantum computing device12, the development computing device18, and the staging computing device24are all communicatively coupled via a classical communications link (not shown), which may comprise a private network or a public network such as the internet. It is to be understood that the computing system10, according to some examples, may include other quantum computing devices and/or classical computing devices that are not illustrated inFIG.1. Additionally, the quantum computing device12, the development computing device18, and/or the staging computing device24in some examples may include constituent elements in addition to those illustrated inFIG.1.

The quantum computing device12in the example ofFIG.1represents a “production” environment in which quantum services are executed to provide desired functionality. The quantum computing device12operates in quantum environments, but is capable of operating using classical computing principles or quantum computing principles. When using quantum computing principles, the quantum computing device12performs computations that utilize quantum-mechanical phenomena, such as superposition and/or entanglement states. The quantum computing device12may operate under certain environmental conditions, such as at or near zero degrees(0°) Kelvin. When using classical computing principles, the quantum computing device12utilizes binary digits that have a value of either zero (0) or one (1).

In the example ofFIG.1, the quantum computing device12implements a set of one or more qubits 30(0)-30(Q) for use by quantum services executed by the quantum computing device12. To maintain information for the qubit(s) 30(0)-30(Q), the quantum computing device12may include a qubit registry (not shown), which comprises a plurality of qubit registry entries each corresponding to a qubit such as the one or more qubits 30(0)-30(Q). The qubit registry maintains and provides access to data relating to the qubits implemented by the quantum computing device12, such as a count of the total number of qubits implemented by the quantum computing device12and a count of the number of available qubits that are currently available for allocation, as non-limiting examples. Each of the qubit registry entries of the qubit registry also stores qubit metadata for a corresponding qubit. The qubit metadata may include, as non-limiting examples, an identifier of the corresponding qubit, an availability indicator that indicates whether the corresponding qubit is available for use or is in use by a specific quantum service, an identifier of a quantum service that is associated with the corresponding qubit or to which the corresponding qubit is allocated, and/or an entanglement indicator that indicates whether the corresponding qubit is in an entangled state.

The quantum computing device12ofFIG.1executes one or more quantum services, such as a quantum service32. The quantum service32is a process that employs qubits such as the one or more qubits 30(0)-30(Q) to provide desired functionality. Execution of quantum services such as the quantum service32is facilitated by a quantum task manager34, which handles operations for creating, monitoring, and terminating quantum services. The quantum task manager34may provide an interface (not shown) through which other services or tasks may request specific information regarding the qubits 30(0)-30(Q), the quantum service32, or the quantum computing device12. Additionally, information regarding the status and functionality of the quantum computing device12and the elements thereof may be made accessible to other processes via a hardware application programming interface (API)36.

Because qubits such as the qubits 30(0)-30(Q) generally require very specific environmental conditions for operation, development of quantum services such as the quantum service32generally is not performed on the quantum computing device12, but rather is performed on a separate device such as the development computing device18. In the example ofFIG.1, the development computing device18provides a container38, which may be provided by a convention application container framework such as Docker. The container38provides an operating environment that is isolated from other processes executing on the development computing device18, and to which predefined levels of system resources (e.g., memory, processor cycles, system bandwidth, and the like) of the development computing device18may be allocated.

Within the container38, a quantum service definition40that defines the quantum service32may be generated and revised using conventional development tools (not shown). The quantum service definition40may then be provided to a quantum simulator42such as the Qiskit quantum computing framework, which is an open-source framework that provides tools for creating and manipulating quantum programs and services and simulating execution of the quantum programs and services on classical computing devices. Within the quantum simulator42, the quantum service32is executed based on the quantum service definition40. Based on the performance of the quantum service32within the quantum simulator42, the quantum service definition40may be further refined and tested until it is determined to be suitable for promotion to the quantum computing device12. It is to be understood that, whileFIG.1illustrates only a single container38, the development computing device18may provide multiple containers.

However, this approach to development of quantum services may suffer from disadvantages. In particular, differences in the operating conditions of the quantum computing device12and the development computing device18may result in the quantum service32performing suboptimally on the quantum computing device12. Additionally, the transition of the quantum service32from the container38of the development computing device18to the quantum computing device12may be inconsistent with the developer workflow based on the use of containers such as the container38. Accordingly, an ability to perform development and testing of quantum services under operating conditions that mirror actual or historical operating conditions of the quantum computing device12prior to deployment will be desirable.

In this regard, the staging computing device24ofFIG.1implements a quantum simulator44for simulating operating conditions of the quantum computing device12for developing and testing quantum services such as the quantum service32. In exemplary operation, the quantum simulator44receives an operating parameter46from the quantum computing device12. The operating parameter46represents an operating condition of the quantum computing device, such as a count of available qubits 30(0)-30(Q) of the quantum computing device12, a processor load of the quantum computing device12, an amount of available memory within the system memory14of the quantum computing device12, or a count of executing processes of the quantum computing device12.

In some examples, the operating parameter46represents a real-time operating parameter that indicates a current operating condition of the quantum computing device12. In such examples, the operating parameter46may be obtained from the quantum task manager34of the quantum computing device12, or may obtained via the hardware API36provided by the quantum computing device12. Some examples may provide that the operating parameter46represents a historical operating parameter that indicates a previous operating condition of the quantum computing device12. The operating parameter46in such examples may be provided as part of a hardware profile snapshot (not shown) that records the operating condition of the quantum computing device12at a particular point in time. It is to be understood that, whileFIG.1illustrates only a single operating parameter46, some examples may provide that the quantum simulator44receives multiple operating parameters corresponding to multiple operating conditions of the quantum computing device12. In such examples, the multiple operating parameters may be received at a same point in time, or may be received over a time interval.

The staging computing device24also receives the quantum service definition40that defines the quantum service32from the development computing device18. The quantum service definition40in some examples may be received by a container48, which provides an operating environment and development tools in a manner similar to the container38of the development computing device18. To execute the quantum service32, the quantum simulator44accesses the quantum service definition40received from the development computing device18. The quantum simulator44then simulates the operating condition of the quantum computing device12based on the operating parameter46received from the quantum computing device12. As non-limiting examples, the quantum simulator44may limit an amount of memory or a number of available simulated qubits based on the operating parameter46, and/or may restrict the availability of other simulated system resources based on the operating parameter46. The quantum simulator44then executes the quantum service32under the simulated operating condition based on the quantum service definition40.

In some examples, the staging computing device24may further measure a performance characteristic (captioned as “PERF CHAR” inFIG.1)50of the quantum service32during execution by the quantum simulator44. It is to be understood that, whileFIG.1illustrates only one performance characteristic50, the staging computing device24according to some examples may measure multiple performance characteristics50of the quantum service32. The performance characteristic50may comprise any attribute of the quantum service32measurable by the quantum simulator44, and may include, as non-limiting examples, execution speed of the quantum service32, system resource consumption by the quantum service32, results generated by the quantum service32, errors generated by the quantum service32, and the like.

Based on the measuring of the performance characteristic50, the quantum service definition40in some examples may be modified. For example, the quantum service definition40may be modified in response to manually provided user input (e.g., a developer may edit the quantum service definition40), or may be automatically modified by the staging computing device24. In this manner, the quantum service definition40can be updated based on the performance of the quantum service32under the simulated operating condition provided by the quantum simulator44.

Some examples may provide that the staging computing device24further implements a promotion service52for determining whether the quantum service32is suitable for promotion to the production environment provided by the quantum computing device12, and for performing operations for promoting the quantum service32. In such examples, a performance criterion (captioned as “PERF CRIT” inFIG.1)54is provided to specify a desired threshold for the performance characteristic50. It is to be understood that, in examples in which multiple performance characteristics50are measured, corresponding multiple performance criteria54may be provided. After the performance characteristic50is measured, the promotion service52may determine that the performance characteristic50satisfies the performance criterion54. The promotion service52then transfers the quantum service definition40to the quantum computing device12, and initiates execution of the quantum service32by the quantum computing device12based on the quantum service definition40.

It is to be understood that, because the quantum simulator44and the promotion service52are components of the staging computing device24, functionality implemented by the quantum simulator44and the promotion service52may be attributed to the computing system10generally. Moreover, in examples where the quantum simulator44and the promotion service52comprise software instructions that program the processor device28to carry out functionality discussed herein, functionality implemented by the quantum simulator44and the promotion service52may be attributed herein to the processor device28. It is to be further understood that while, for purposes of illustration only, the quantum simulator44and the promotion service52are each depicted as a single component, the functionality implemented by the quantum simulator44and the promotion service52may be implemented in any number of components, and the examples discussed herein are not limited to any particular number of components.

To illustrate exemplary operations performed by the computing system10ofFIG.1for simulating operating conditions of quantum computing devices according to one example,FIGS.2A and2Bprovide a flowchart56. Elements ofFIG.1are referenced in describingFIGS.2A and2Bfor the sake of clarity. InFIG.2A, operations begin with a processor device of a staging computing device (e.g., the processor device28of the staging computing device24ofFIG.1) receiving an operating parameter (such as the operating parameter46from the quantum computing device12ofFIG.1), wherein the operating parameter46represents an operating condition of the quantum computing device12(block58). In some examples in which the operating parameter46is a real-time operating parameter, the operations of block58for receiving the operating parameter46may comprise receiving the operating parameter46from the quantum task manager34of the quantum computing device12(block60). Some examples in which the operating parameter46is a real-time operating parameter may provide that the operations of block58for receiving the operating parameter46comprise receiving the operating parameter46via the hardware API36of the quantum computing device12(block62).

The processor device28of the staging computing device24also receives a quantum service definition that defines a quantum service, such as the quantum service definition40that defines the quantum service32(block64). The quantum service definition40in some examples may be received from a development computing device, such as the development computing device18ofFIG.1, that provides a development environment in which the quantum service definition40is written and edited by a user. A quantum simulator of the staging computing device24(e.g., the quantum simulator44ofFIG.1) then accesses the quantum service definition40(block66).

The quantum simulator44simulates the operating condition of the quantum computing device12based on the operating parameter46(block68). The quantum simulator44then executes the quantum service32under the simulated operating condition based on the quantum service definition40(block70). Operations in some examples may then continue at block72ofFIG.2B.

Referring now toFIG.2B, in some examples the processor device28of the staging computing device24may measure a performance characteristic of the quantum service32(e.g., the performance characteristic50ofFIG.1) during execution by the quantum simulator44(block72). Some examples may provide that, after measuring the performance characteristic50at block72, the processor device28may modify the quantum service definition40based on the measuring (e.g., in response to user input as a result of the measuring, or automatically based on a result of the measuring) (block74). In some examples, after measuring the performance characteristic50at block72, the processor device28may determine (e.g., using the promotion service52ofFIG.1) that the performance characteristic50of the quantum service32satisfies a performance criterion, such as the performance criterion54ofFIG.1(block76). Responsive to determining that the performance characteristic50of the quantum service32satisfies the performance criterion54, the processor device28may carry out a series of operations (block78). The processor device28(e.g., using the promotion service52) transfers the quantum service definition40to the quantum computing device12(block80). The processor device28may then initiate execution of the quantum service32by the quantum computing device12(block82).

FIG.3is a simpler block diagram of the computing system10ofFIG.1for simulating operating conditions of quantum computing devices, according to one example. In the example ofFIG.3, a computing system84includes a quantum computing device86that comprises a system memory88and a processor device90, and further includes a staging computing device92, which is a classical computing device that comprises a system memory94and a processor device96. The staging computing device92ofFIG.1implements a quantum simulator98for simulating operating conditions of the quantum computing device86for developing and testing quantum services such as a quantum service100.

In exemplary operation, the quantum simulator98receives an operating parameter102from the quantum computing device86. The operating parameter102represents an operating condition of the quantum computing device86. The staging computing device92also receives a quantum service definition104that defines the quantum service100. To execute the quantum service100, the quantum simulator98accesses a quantum service definition104. The quantum simulator98simulates the operating condition of the quantum computing device86based on the operating parameter102received from the quantum computing device86. The quantum simulator98then executes the quantum service100under the simulated operating condition based on the quantum service definition104.

FIG.4provides a flowchart106of a simplified method for simulating operating conditions of quantum computing devices by the staging computing device92ofFIG.3, according to one example. For the sake of clarity, elements ofFIG.3are referenced in describingFIG.4. Operations inFIG.4begin with the processor device96of the staging computing device92receiving the operating parameter102from the quantum computing device86, wherein the operating parameter102represents an operating condition of the quantum computing device86(block108). The processor device96also receives the quantum service definition104that defines the quantum service100(block110). The processor device96accesses, using the quantum simulator98of the staging computing device92, the quantum service definition104(block112). The quantum simulator98simulates the operating condition of the quantum computing device86based on the operating parameter102(block114). Finally, the quantum simulator98executes the quantum service100under the simulated operating condition based on the quantum service definition104(block116).

FIG.5is a block diagram of a processor-based computing device118(“computing device118” or “classical computing device118”), such as the development computing device18and the staging computing device24ofFIG.1, suitable for implementing examples according to one example. The computing device118may comprise any computing or electronic device capable of including firmware, hardware, and/or executing software instructions to implement the functionality described herein, such as a computer server, a desktop computing device, a laptop computing device, a smartphone, a computing tablet, or the like. The computing device118includes a processor device120, a system memory122, and a system bus124. The system bus124provides an interface for system components including, but not limited to, the system memory122and the processor device120. The processor device120can be any commercially available or proprietary processor.

The system bus124may be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and/or a local bus using any of a variety of commercially available bus architectures. The system memory122may include non-volatile memory126(e.g., read-only memory (ROM), erasable programmable ROM (EPROM), electrically EPROM (EEPROM), etc.), and volatile memory128(e.g., RAM). A basic input/output system (BIOS)130may be stored in the non-volatile memory126and can include the basic routines that help to transfer information among elements within the computing device118. The volatile memory128may also include a high-speed RAM, such as static RAM, for caching data.

The computing device118may further include or be coupled to a non-transitory computer-readable storage medium such as a storage device132, which may comprise, for example, an internal or external hard disk drive (HDD) (e.g., enhanced integrated drive electronics (EIDE) or serial advanced technology attachment (SATA)), for storage, flash memory, or the like. The storage device132and other drives associated with computer-readable media and computer-usable media may provide non-volatile storage of data, data structures, computer-executable instructions, and the like. Although the description of computer-readable media above refers to an HDD, it should be appreciated that other types of media that are readable by a computer, such as Zip disks, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the operating environment, and, further, that any such media may contain computer-executable instructions for performing novel methods of the disclosed examples.

A number of modules can be stored in the storage device132and in the volatile memory128, including an operating system134and one or more program modules136which may implement the functionality described herein in whole or in part. It is to be appreciated that the examples can be implemented with various commercially available operating systems134or combinations of operating systems134. All or a portion of the examples may be implemented as a computer program product stored on a transitory or non-transitory computer-usable or computer-readable storage medium, such as the storage device132, which includes complex programming instructions, such as complex computer-readable program code, to cause the processor device120to carry out the steps described herein. Thus, the computer-readable program code can comprise software instructions for implementing the functionality of the examples described herein when executed on the processor device120. The processor device120may serve as a controller, or control system, for the computing device118that is to implement the functionality described herein.

An operator may also be able to enter one or more configuration commands through a keyboard (not illustrated), a pointing device such as a mouse (not illustrated), or a touch-sensitive surface such as a display device (not illustrated). Such input devices may be connected to the processor device120through an input device interface138that is coupled to the system bus124but can be connected by other interfaces, such as a parallel port, an Institute of Electrical and Electronic Engineers (IEEE) 1394 serial port, a Universal Serial Bus (USB) port, an IR interface, and the like.

The computing device118may also include a communications interface140suitable for communicating with a network as appropriate or desired. The computing device118may also include a video port142to interface with a display device to provide information to a user.

FIG.6is a block diagram of a quantum computing device144, such as the quantum computing device12ofFIG.1, suitable for implementing examples according to one example. The quantum computing device144may comprise any suitable quantum computing device or devices. The quantum computing device144can operate using classical computing principles or quantum computing principles. When using quantum computing principles, the quantum computing device144performs computations that utilize quantum-mechanical phenomena, such as superposition and entanglement. The quantum computing device144may operate under certain environmental conditions, such as at or near zero degrees(0°) Kelvin. When using classical computing principles, the quantum computing device144utilizes binary digits that have a value of either zero (0) or one (1).

The quantum computing device144includes a processor device146and a system memory148. The processor device146can be any commercially available or proprietary processor suitable for operating in a quantum environment. The system memory148may include volatile memory150(e.g., random-access memory (RAM)). The quantum computing device144may further include or be coupled to a non-transitory computer-readable medium such as a storage device152. The storage device152and other drives associated with computer-readable media and computer-usable media may provide non-volatile storage of data, data structures, computer-executable instructions, and the like. The storage device may also provide functionality for storing one or more qubits 154(0)-154(N).

A number of modules can be stored in the storage device152and in the volatile memory150, including an operating system156and one or more modules, such as a quantum simulator158and a promotion service160. All or a portion of the examples may be implemented as a computer program product162stored on a transitory or non-transitory computer-usable or computer-readable medium, such as the storage device152, which includes complex programming instructions, such as complex computer-readable program code, to cause the processor device146to carry out the steps described herein. Thus, the computer-readable program code can comprise computer-executable instructions for implementing the functionality of the examples described herein when executed on the processor device146.

An operator may also be able to enter one or more configuration commands through a keyboard (not illustrated), a pointing device such as a mouse (not illustrated), or a touch-sensitive surface such as a display device (not illustrated). The quantum computing device144may also include a communications interface164suitable for communicating with other quantum computing systems, including, in some implementations, classical computing devices.

Individuals will recognize improvements and modifications to the preferred examples of the disclosure. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.