Patent ID: 12204986

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 processor device” and “second processor device,” 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. As quantum computing continues to increase in popularity and become more commonplace, an ability to efficiently obtain quantum service definitions for quantum services will be desirable.

The examples disclosed herein implement a quantum analyzer service (QAS) that enables quantum service definitions to be generated based on examination of executing quantum services. As used herein, 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. The term “quantum service definition” and derivatives thereof are used herein to refer to a file, such as a Quantum Assembly Language (QASM) file, that contains quantum programming instructions that define content and configuration of a quantum service.

To generate a quantum service definition for an executing quantum service, a QAS executing on a quantum computing device receives a request to profile the quantum service. The request may be received from a process or service running on the quantum computing device, a process or service running on a different quantum computing device or on a classical computing device, or a user of the quantum computing device, as non-limiting examples. The request may include, e.g., an identifier of the quantum service for which the quantum service definition is to be generated.

The QAS then obtains service metadata corresponding to the quantum service based on the request. As used herein, “service metadata” and derivatives thereof refer to data related to the quantum service that may be obtained from other services of the quantum computing device and/or from conducting performance profiling of the quantum service (e.g., by observing inputs received by and outputs generated by the quantum service and/or hardware resource usage data of the quantum service). Thus, service metadata in some examples may include data related to the number, identity, and/or location of one or more qubits used by the quantum service, inputs received by and outputs generated by the quantum service, and/or hardware resource usage data of the quantum service, as non-limiting examples.

A quantum service definition (such as a QASM file, as a non-limiting example) that defines one or more features of the quantum service is then generated based on the service metadata and stored on a persistent data store. The content of the quantum service definition is determined based on the specific service metadata obtained. For example, if the service metadata identifies a specific number of qubits used by the quantum service, a quantum service definition may be generated to include corresponding qubit allocation programming instructions. Note that the contents of the quantum service definition may be limited by the types of service metadata that can be accessed by the QAS. Thus, for example, if the quantum service employs internal logic that is not observable by the QAS, the resulting quantum service definition may not include programming instructions embodying the internal logic.

The quantum service definition may be generated and stored by the quantum computing device itself or may be generated and stored by a classical computing device based on the service metadata received from the quantum computing device. According to some examples, the quantum service definition may be subsequently used in conjunction with a quantum simulator to simulate the quantum service,

FIG.1is a block diagram of a computing system10according to one example. The computing system10includes a quantum computing device12that comprises a first system memory14and a first processor device16, and also includes a classical computing device18that comprises a second system memory20and a second processor device22. The quantum computing device12further includes a persistent data store24(e.g., a hard drive, as a non-limiting example), while the classical computing device18includes a persistent data store26. The quantum computing device12and the classical computing device18inFIG.1are 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 system10according to some examples may include other quantum computing devices and/or classical computing devices that are not illustrated inFIG.1. Additionally, the quantum computing device12and the classical computing device18in some examples may include constituent elements in addition to those illustrated inFIG.1.

The quantum computing device12operates in quantum environments but can operate 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 qubits28(0)-28(Q). To maintain information for the qubit(s)28(0)-28(Q), the quantum computing device12includes a qubit registry30, which comprises a plurality of qubit registry entries (not shown) each corresponding to a qubit such as the one or more qubits28(0)-28(Q). The qubit registry30in some examples maintains 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 registry30also stores qubit metadata (not shown) 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 process, an identifier of a quantum process associated with the corresponding qubit, and/or an entanglement indicator that indicates whether the corresponding qubit is in an entangled state.

The quantum computing device12ofFIG.1executes a quantum service32that employs one or more of the qubit(s)28(0)-28(Q) maintained by the quantum computing device12. The quantum service32is a process that is executed by the first processor device16of the quantum computing device12to provide a desired functionality. Execution of quantum services such as the quantum service32is facilitated by a task manager34and a process scheduler36. The task manager34of the quantum computing device12handles operations for creating, monitoring, and terminating quantum services, while the process scheduler36of the quantum computing device12controls allocation of processing resources to executing quantum services.

As discussed above, it is desirable for the quantum computing device12to be able to reverse engineer a quantum service definition that defines the quantum service32executing on the quantum computing device12. For instance, in one possible use case, an organization making use of the quantum computing device12may wish to implement a quantum service that reproduces or expands upon the functionality of the quantum service32but may not have access to the original quantum service definition of the quantum service32. Accordingly, the quantum computing device12ofFIG.1implements a QAS38for generating a quantum service definition for the quantum service32while the quantum service32is executing on the quantum computing device12.

In exemplary operation, the QAS38receives a request40(e.g., from a QAS42of the classical computing device18, in the example ofFIG.1). It is to be understood that, in some examples, the request40may be received from a process or service executing on the quantum computing device12or the classical computing device18, a process or service executing on another quantum or classical computing device, or a user of the quantum computing device12, the classical computing device18, or another quantum or classical computing device. The request40comprises an identifier (not shown) of the quantum service32, as a non-limiting example.

Upon receiving the request40, the QAS38obtains service metadata44corresponding to the quantum service32based on the request40. The service metadata44may include any data related to the quantum service32that the QAS38may obtain from other services of the quantum computing device12, such as the qubit registry30, the task manager34, and/or the process scheduler36. The service metadata44may also include data that the QAS38may obtain by conducting performance profiling of the quantum service32(i.e., observing or monitoring the execution of the quantum service32). Thus, the service metadata44in some examples may include data related to the number, identity, and/or location of the one or more qubits28(0)-28(Q) used by the quantum service32, configuration data for the quantum service32, inputs received by and outputs generated by the quantum service32, and/or hardware resource usage data of the quantum service32, as non-limiting examples.

In some examples, the QAS38may then use the service metadata44to generate a quantum service definition46that defines one or more features of the quantum service32based on the service metadata44, as indicated by arrow48. The QAS38then stores the quantum service definition46on the persistent data store24. Some examples may provide that the QAS38also transmits the quantum service definition46to the classical computing device18.

The one or more features defined by the quantum service definition46may comprise, e.g., an interface that may be used to access functionality of the quantum service32(based on observed inputs to the quantum service32), an output of the quantum service32(based on observed outputs from the quantum service32), allocation of one or more qubits corresponding to the one or more qubits28(0)-28(Q) used by the quantum service32, and the like, as non-limiting examples. The quantum service definition46may include quantum programming instructions to, e.g., allocate one or more qubits or define relationships between qubits, as non-limiting examples. In some examples, the quantum service definition46may comprise a QASM file, where QASM is a programming language that specifies quantum circuits as input to a quantum computer by declaring classical bits and qubits and describing operations on the qubits and measurements needed to obtain a classical result based on the qubits.

Note that the contents of the quantum service definition46may be limited by the types of service metadata44that can be accessed by the QAS38. Thus, for example, if the quantum service32employs internal logic that is not observable by the QAS38, the resulting quantum service definition46may not include programming instructions embodying the internal logic.

Some examples may provide that, instead of generating the quantum service definition46itself, the QAS38may transmit the service metadata44to the QAS42of the classical computing device18, as indicated by arrow50. The QAS42of the classical computing device18may then use the service metadata44to generate a quantum service definition52as indicated by arrow54and may store the quantum service definition52on the persistent data store26.

In some examples, the quantum service definitions46,52may be used by the quantum computing device12and/or the classical computing device18, respectively, to simulate the quantum service32. For example, the classical computing device18in some examples may provide a quantum simulator56, such as the Qiskit quantum computing framework, as a non-limiting example. The Qiskit quantum computing framework 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. The classical computing device18may use the quantum service definition52to simulate the quantum service32using the quantum simulator56. Similarly, the quantum computing device12(which may be operated using classical computing principles) may provide a quantum simulator58that may employ the quantum service definition46to simulate the quantum service32.

It is to be understood that, because the QAS38is a component of the quantum computing device12, functionality implemented by the QAS38may be attributed to the computing system10generally. Moreover, in examples where the QAS38comprises software instructions that program the first processor device16to carry out functionality discussed herein, functionality implemented by the QAS38may be attributed herein to the first processor device16. It is to be further understood that while, for purposes of illustration only, the QAS38is depicted as a single component, the functionality implemented by the QAS38may 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 generating quantum service definitions from executing quantum services according to one example,FIGS.2A-2Cprovide a flowchart60. Elements ofFIG.1are referenced in describingFIGS.2A-2Cfor the sake of clarity. InFIG.2A, operations begin with a quantum computing device, such as the quantum computing device12ofFIG.1, executing a quantum service (e.g., the quantum service32ofFIG.1) comprising one or more qubits such as the qubit(s)28(0)-28(Q) ofFIG.1(block62). The quantum computing device12receives (e.g., using the QAS38ofFIG.1) the request40to profile the quantum service32(block64). The quantum computing device12then obtains service metadata (e.g., the service metadata44ofFIG.1) corresponding to the quantum service32based on the request40(block66). In some examples, the operations of block66for obtaining the service metadata44may comprise the quantum computing device12conducting performance profiling of the quantum service32(block68). Operations then continue at block70inFIG.2B.

Referring now toFIG.2B, a quantum service definition (e.g., the quantum service definition46or the quantum service definition52ofFIG.1) that defines one or more features of the quantum service32is generated based on the service metadata44(block70). In some examples, the operations of block70for generating the quantum service definition may comprise the quantum computing device12transmitting the service metadata44to a classical computing device (such as the classical computing device18ofFIG.1) that is communicatively coupled to the quantum computing device12(block72). The classical computing device18may then generate the quantum service definition52based on the service metadata44(block74). Some examples may provide that the operations of block70for generating the quantum service definition may comprise the quantum computing device12generating the quantum service definition46based on the service metadata44(block76).

The quantum service definition46or52is then stored on a persistent data store, such as the persistent data store24or the persistent data store26ofFIG.1(block78). Thus, for instance, examples in which the quantum service definition52is generated by the classical computing device18may provide that the operations of block78for storing the quantum service definition comprise the classical computing device18storing the quantum service definition52on the persistent data store26(block80). Similarly, examples in which the quantum service definition is generated by the quantum computing device12may provide that the operations of block78for storing the quantum service definition comprise the quantum computing device12storing the quantum service definition46on the persistent data store24(block82). Operations according to some examples may then continue at block84ofFIG.2C.

Turning now toFIG.2C, in examples in which the quantum service definition46is generated by the quantum computing device12, the quantum computing device12may then transmit the quantum service definition46to the classical computing device18communicatively coupled to the quantum computing device12(block84). The classical computing device18in some examples may then simulate, using a quantum simulator (such as the quantum simulator56ofFIG.1), the quantum service32based on the quantum service definition46(block86).

FIG.3is a simpler block diagram of the quantum computing device12ofFIG.1for generating quantum service definitions from executing quantum services, according to one example. In the example ofFIG.3, a quantum computing device88comprises a system memory90and a processor device92. The quantum computing device88further includes a persistent data store94(e.g., a hard drive, as a non-limiting example). The quantum computing device88ofFIG.3implements a set of one or more qubits96(0)-96(Q) and executes a quantum service98that employs one or more of the qubit(s)96(0)-96(Q) maintained by the quantum computing device88. The quantum service98is a process that is executed by the processor device92of the quantum computing device88to provide a desired functionality.

In exemplary operation, the processor device92of the quantum computing device88receives a request100. Upon receiving the request100, processor device92obtains service metadata102corresponding to the quantum service98based on the request100. The processor device92next uses the service metadata102to generate a quantum service definition104that defines one or more features of the quantum service98based on the service metadata102. The processor device92then stores the quantum service definition104on the persistent data store94.

FIG.4provides a flowchart106of a simplified method for generating quantum service definitions from executing quantum services by the quantum computing device88ofFIG.3, according to one example. For the sake of clarity, elements ofFIG.3are referenced in describingFIG.4. Operations inFIG.4begin with the quantum computing device88executing the quantum service98comprising the one or more qubits96(0)-96(Q) (block108). The quantum computing device88receives the request100to profile the quantum service98(block110). The quantum computing device88next obtains the service metadata102corresponding to the quantum service98based on the request100(block112). The quantum computing device88then generates the quantum service definition104that defines one or more features of the quantum service98based on the service metadata102(block114). Finally, the quantum computing device88stores the quantum service definition104on the persistent data store94(block116).

FIG.5is a simpler block diagram of the computing system10ofFIG.1for generating quantum service definitions from executing quantum services, according to one example. In the example ofFIG.5, a computing system118includes a quantum computing device120that comprises a first system memory122and a first processor device124, and also includes a classical computing device126that comprises a second system memory128and a second processor device130. The classical computing device126includes a persistent data store132(e.g., a hard drive, as a non-limiting example). The quantum computing device120ofFIG.5implements a set of one or more qubits134(0)-134(Q) and executes a quantum service136that employs one or more of the qubit(s)134(0)-134(Q). The quantum service136is a process that is executed by the first processor device124of the quantum computing device120to provide a desired functionality.

In exemplary operation, the first processor device124of the quantum computing device120receives a request138. Upon receiving the request138, the first processor device124obtains service metadata140corresponding to the quantum service136based on the request138. The first processor device124then transmits the service metadata140to the classical computing device126. Upon receiving the service metadata140, the second processor device130of the classical computing device126uses the service metadata140to generate a quantum service definition142and stores the quantum service definition142on the persistent data store132.

FIG.6provides a flowchart144of a simplified method for generating quantum service definitions from executing quantum services in the computing system118ofFIG.5, according to one example. Elements ofFIG.5are referenced in describingFIG.6for the sake of clarity. InFIG.6, operations begin with begin the first processor device124of the quantum computing device120executing the quantum service136comprising the one or more qubits134(0)-134(Q) (block146). The first processor device124receives the request138to profile the quantum service136(block148). The first processor device124next obtains the service metadata140corresponding to the quantum service136based on the request138(block150). The first processor device124then transmits the service metadata140to a classical computing device126(block152).

The second processor device130of the classical computing device126receives the service metadata140(block154). The second processor device130generates the quantum service definition142that defines one or more features of the quantum service136based on the service metadata140(block156). The second processor device130then stores the quantum service definition142on the persistent data store132(block158).

FIG.7is a block diagram of a processor-based computing device160(“computing device160” or “classical computing device160”), such as the classical computing device18ofFIG.1, suitable for implementing examples according to one example. The computing device160may 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 device160includes a processor device162, a system memory164, and a system bus166. The system bus166provides an interface for system components including, but not limited to, the system memory164and the processor device162. The processor device162can be any commercially available or proprietary processor.

The system bus166may 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 memory164may include non-volatile memory168(e.g., read-only memory (ROM), erasable programmable ROM (EPROM), electrically EPROM (EEPROM), etc.), and volatile memory170(e.g., RAM). A basic input/output system (BIOS)172may be stored in the non-volatile memory168and can include the basic routines that help to transfer information among elements within the computing device160. The volatile memory170may also include a high-speed RAM, such as static RAM, for caching data.

The computing device160may further include or be coupled to a non-transitory computer-readable storage medium such as a storage device174, 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 device174and 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 device174and in the volatile memory170, including an operating system176and one or more program modules178which 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 systems176or combinations of operating systems176. 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 device174, which includes complex programming instructions, such as complex computer-readable program code, to cause the processor device162to 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 device162. The processor device162may serve as a controller, or control system, for the computing device160that 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 device162through an input device interface180that is coupled to the system bus166but 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 device160may also include a communications interface182suitable for communicating with a network as appropriate or desired. The computing device160may also include a video port184to interface with a display device to provide information to a user.

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

The quantum computing device186includes a processor device188and a system memory190. The processor device188can be any commercially available or proprietary processor suitable for operating in a quantum environment. The system memory190may include volatile memory192(e.g., random-access memory (RAM)). The quantum computing device186may further include or be coupled to a non-transitory computer-readable medium such as a storage device194. The storage device194and 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 qubits196(0)-196(N).

A number of modules can be stored in the storage device194and in the volatile memory192, including an operating system198and one or more modules, such as a QAS200. All or a portion of the examples may be implemented as a computer program product202stored on a transitory or non-transitory computer-usable or computer-readable medium, such as the storage device194, which includes complex programming instructions, such as complex computer-readable program code, to cause the processor device188to 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 device188.

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 device186may also include a communications interface204suitable 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.