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 processes that are executed by quantum computing systems. Quantum computing operating systems provide operating system services to manage and facilitate the execution cycle of a quantum process.
The examples disclosed herein implement a quantum system orchestrator service (QSOS) that, prior to or at the beginning of an execution cycle of a quantum instruction file (QIF) that comprises quantum instructions, allocates operating system services (OSSs) from quantum computing systems (QCSs) in a group of QCSs to manage the execution cycle of the QIF based on various criteria, such as real-time environmental factors of the QCSs and on resources needed by the QIFs.
In one example a method is provided. The method includes obtaining, by a computing device, a first quantum instruction file (QIF) comprising programming instructions operable to manipulate a qubit. The method further includes obtaining, by the computing device from each respective quantum computing system (QCS) of a plurality of QCSs communicatively coupled to one another, real-time environmental metrics of the respective QCS. The method further includes determining, by the computing device based on the real-time environmental metrics, that a first operating system service (OSS) implemented by an operating system (OS) of a first QCS of the plurality of QCSs is to be utilized for an execution cycle of the first QIF, and a second OSS implemented by an OS of a second QCS of the plurality of QCSs is to be utilized for the execution cycle of the first QIF. The method further includes generating, by the computing device, a first QIF execution record that indicates that the first OSS and the second OSS are to be utilized for the execution cycle of the first QIF. The method further includes causing, by the computing device, the first QCS and the second QCS to be notified of the generation of the first QIF execution record.
In another example a computing device is provided. The computing device includes a memory, and a processor device coupled to the memory. The processor device is to obtain a first quantum instruction file (QIF) comprising programming instructions operable to manipulate a qubit. The processor device is further to obtain, from each respective quantum computing system (QCS) of a plurality of QCSs communicatively coupled to one another, real-time environmental metrics of the respective QCS. The processor device is further to determine, based on the real-time environmental metrics, that a first operating system service (OSS) implemented by an operating system (OS) of a first QCS of the plurality of QCSs is to be utilized for an execution cycle of the first QIF, and a second OSS implemented by an OS of a second QCS of the plurality of QCSs is to be utilized for the execution cycle of the first QIF. The processor device is further to generate a first QIF execution record that indicates that the first OSS and the second OSS are to be utilized for the execution cycle of the first QIF. The processor device is further to cause the first QCS and the second QCS to be notified of the generation of the first QIF execution record.
In another example a non-transitory computer-readable storage medium is provided. The non-transitory computer-readable storage medium includes executable instructions to cause a processor device to obtain a first quantum instruction file (QIF) comprising programming instructions operable to manipulate a qubit. The instructions further cause the processor device to obtain, from each respective quantum computing system (QCS) of a plurality of QCSs communicatively coupled to one another, real-time environmental metrics of the respective QCS. The instructions further cause the processor device to determine, based on the real-time environmental metrics, that a first operating system service (OSS) implemented by an operating system (OS) of a first QCS of the plurality of QCSs is to be utilized for an execution cycle of the first QIF, and a second OSS implemented by an OS of a second QCS of the plurality of QCSs is to be utilized for the execution cycle of the first QIF. The instructions further cause the processor device to generate a first QIF execution record that indicates that the first OSS and the second OSS are to be utilized for the execution cycle of the first QIF. The instructions further cause the processor device to cause the first QCS and the second QCS to be notified of the generation of the first QIF execution record.
Individuals will appreciate the scope of the disclosure and realize additional aspects thereof after reading the following detailed description of the examples in association with the accompanying drawing figures.
The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure and, together with the description, serve to explain the principles of the disclosure.
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 message” and “second message,” and does not imply an initial occurrence, a quantity, 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. The word “data” may be used herein in the singular or plural depending on the context. The use of “and/or” between a phrase A and a phrase B, such as “A and/or B” means A alone, B alone, or A and B together.
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 processes that are executed by quantum computing systems (QCSs). Quantum computing system operating systems include operating system services (OSSs), such as kernel-level or otherwise privileged non-user space services to manage and facilitate the execution cycle of quantum processes executing or to be executed on the respective QCSs. Groups of quantum computing systems may be communicatively coupled to one another via high-speed communication channels to facilitate near-instantaneous data transfer, and via quantum communication channels via which qubits can be sent from one quantum computing system to another. OSSs of the group of quantum computing systems may be at times unevenly loaded such that a particular OSS of one QCS is unable to keep up with a current demand, resulting in delayed processing, while the same OSS on another QCS may be underutilized. If the OSSs of the group of QCSs could operate to provide the respective service to a quantum process irrespective of which QCS the quantum process is to be initiated on, and do so in a manner that is transparent to the quantum process to eliminate a need to re-engineer the quantum process, the group of QCSs could ensure that OSSs are relatively evenly loaded, thereby increasing the throughput of the QCSs as a whole.
The examples disclosed herein implement a quantum system orchestrator service (QSOS) that, prior to or at the beginning of an execution cycle of a quantum instruction file (QIF) that comprises quantum instructions, allocates OSSs from QCSs in a group of QCSs to manage the execution cycle of the QIF based on various criteria, such as real-time environmental factors of the QCSs and on resources needed by the QIFs. The determined OSS allocation is stored in a QIF execution record and is available to each QCS such that the OSSs of the QCSs are aware of which QIF execution cycles the OSSs are to service.
The QCSs 12 operate in quantum environments, but are each capable of operating using classical computing principles or quantum computing principles. When using quantum computing principles, the QCSs 12 perform computations that utilize quantum-mechanical phenomena, such as superposition and/or entanglement states. The QCSs 12 may operate under certain environmental conditions, such as at or near zero degrees (0°) Kelvin. When using classical computing principles, the QCSs 12 utilize binary digits that have a value of either zero (0) or one (1).
Each QCS 12-1-12-3 includes a corresponding quantum operating system (OS) 20-1-20-3 operable to initiate quantum processes that manipulate qubits 18, and operable to perform other operating system functions, such as process management, multi-tasking, memory management, file management, device management, and the like. The quantum OS 20-1 includes a variety of operating system services (OSSs), including, by way of non-limiting example, a task manager OSS 22-1, a scheduler OSS 24-1, and a qubit registry OSS 26-1.
The task manager OSS 22-1 handles operations for creating, monitoring, and terminating quantum processes on the QCS 12-1. As will be described in greater detail herein, the task manager OSS 22-1 may ensure resources needed by a quantum process, such as qubits and/or external processes that will be invoked by the quantum process, are also available for the quantum process.
The scheduler OSS 24-1 of the QCS 12-1 controls the scheduling of a quantum process for initiation by a task manager OSS 22 of a QCS 12. The scheduler OSS 24-1 may ensure, prior to causing the initiation of a quantum process by a task manager OSS 22 that the QCS 12 on which the quantum process is to execute is environmentally to execute the quantum process. The scheduler OSS 24-1 may also ensure that, if the quantum process is to be initiated upon the occurrence of some condition, such as in response to some event or at a predetermined time or date, that such predetermined condition has occurred.
The qubit registry OSS 26-1 maintains and provides access to data relating to the qubits 18 implemented by the QCS 12-1, and in a federated implementation, those qubits 18 implemented by the QCSs 12-2 and 12-3, including a count of the total number of qubits 18 implemented by the QCSs 12, and a count of the number of available qubits that are currently available for allocation by the QCSs 12. The qubit registry OSS 26-1 maintains a qubit registry entry for each such qubit 18 implemented by any of the QCSs 12. The qubit registry entry comprises metadata for each such qubit 18, such as, by way of non-limiting example, an identifier of the corresponding qubit 18, an address of the corresponding qubit 18, an availability indicator that indicates whether the corresponding qubit 18 is available for use or is in use by a specific quantum process, an identifier of a quantum process that is associated with the corresponding qubit 18 or to which the corresponding qubit 18 is allocated, and/or an entanglement indicator that indicates whether the corresponding qubit 18 is in an entangled state.
The quantum OS 20-1 also includes an OSS proxy 30-1 that operates to, as will be explained in greater detail below, intercept requests made by a quantum process to a specific OSS and determines the QCS 12 to which the request should be directed. The QCS 12-1 implements a QSOS 32-1 that operates, as described in greater detail herein, to allocate OSSs to service an execution cycle of a quantum instruction file (QIF). The term “execution cycle” in this context refers to the period of time and events including and between the identification of a QIF for initiation to the termination of a quantum process initiated from the QIF.
The QCSs 12-2 and 12-3 include quantum OSs 20-2 and 20-3, respectively, task manager OSSs 22-2 and 22-3, respectively, scheduler OSSs 24-2 and 24-3, respectively, qubit registry OSSs 26-2 and 26-3, respectively, miscellaneous OSSs 28-2 and 28-3, respectively, OSS proxies 30-2 and 30-3, respectively, and QSOSs 32-2 and 32-3, respectively, each of which operates substantially similarly to the corresponding components of the QCS 12-1, as discussed above.
In some implementations, the environment 10 includes a quantum instruction file (QIF) repository 34 that stores a plurality of quantum instruction files (QIFs) 36-1-36-N (generally, QIFs 36) that contain quantum programming instructions configured to manipulate the qubits 18. The QIFs 36 may be written in any suitable quantum programming language, such as, by way of non-limiting example, Qiskit, QCL, cQASM, Quil, and the like.
An example of quantum system operating system service orchestration will now be presented. In this example, a user 38 interacts with a classical computing device 40 that includes a processor device 42 and a memory 44. In particular, the user 38 interacts with a software development kit (SDK) 35 to develop a QIF 36-N, which comprises quantum programming instructions operable to manipulate a qubit via suitable quantum operation(s). The user 38 stores the QIF 36-N in the QIF repository 34 and submits an instruction to the computing device 40 to execute the QIF 36-N. The computing device 40 is communicatively coupled to the QCS 12-1. The computing device 40 may or may not be communicatively coupled to the QCSs 12-2 and 12-3. The computing device 40 sends an instruction to the QCS 12-1 to initiate the QIF 36-N. The instruction may include information that identifies the location of the QIF 36-N in the repository 34 or may actually include the QIF 36-N.
The QSOS 32-1 receives the instruction and obtains the QIF 36-N, either by receiving the QIF 36-N along with the instruction or by obtaining the QIF 36-N from the QIF repository 34. The QSOS 32-1 obtains real-time environmental metrics of the QCSs 12-1, 12-2 and 12-3. The QSOS 32-1 may access OS services of the QCS 12-1 to obtain the real-time environmental metrics of the QCS 12-1, and may send requests to the QCSs 12-2 and 12-3 for the real-time environmental metrics of the respective QCSs 12-2 and 12-3. The real-time environmental metrics may include, by way of non-limiting example, one or more of a number of available qubits 18 on each respective QCS 12, a current temperature profile of each respective QCS 12, a current noise profile of each respective QCS 12, a type of qubit 18 implemented by each respective QCS 12, an error correction service offered by each respective QCS 12, a processor utilization of each respective QCS 12, a memory utilization of each respective QCS 12, a current load on the OSSs of the QCS 12 or the like. The current temperature profile of a QCS 12 is descriptive of real-time temperatures of one or more operating aspects of the QCS 12. A temperature profile may indicate that the temperature(s) of a QCS 12 are within a desired temperature range or are not within a desired temperature range. Similarly, a noise profile may indicate problems or a lack thereof of different potential sources of noise, such as environmental noise, crosstalk, decoherence, implementation errors, and the like.
The QSOS 32-1 determines, based at least in part on the real-time environmental metrics, that particular OSSs should be utilized for the execution cycle of the QIF 36-N. As an example, the QSOS 32-1 may determine that the scheduler OSS 24-3 of the QCS 12-3 should be used to provide the scheduler OSS, the qubit registry 26-1 of the QCS 12-1 should be used to provide the qubit registry OSS, and the task manager OSS 22-2 of the QCS 12-2 should be used to provide the task manager OSS service for execution cycle of the QIF 36-N. The QSOS 32-1 may make such determinations based on any desired conditions or criteria. As an example, the QSOS 32-1 may select the scheduler OSS 24-3 because, based on the environmental metrics, the QSOS 32-1 determines that the scheduler OSS 24-3 has fewer QIFs 36 scheduled for execution than the schedulers OSS 24-1 and 24-2. The QSOS 32-1 may select the task manager OSS 22-2 because, based on the environmental metrics, the QSOS 32-1 determines that the QCS 12-2 has a lower processor utilization than the QCSs 12-1 and 12-3, and/or because the QCS 12-2 has a preferable heat profile than those of the QCS 12-2 and 12-3. The QSOS 32-1 may select the task manager OSS 22-2 because, based on the environmental metrics, the QSOS 32-1 determines that the qubit registry 26-1 is receiving substantially fewer requests than the qubit registries 26-2 and 26-3. In some implementations, the QSOS 32-1 may also select a particular OSS based at least in part on an analysis of QIF execution records, as described below, and take into consideration the utilization of OSSs in the QIF execution records to ensure that the OSSs are relatively evenly represented in the QIF execution records assuming other environmental metrics are relatively equal. For example, the QSOS 32-1 may examine the QIF execution records and determine that the qubit registry 26-1 is underutilized in the QERs 46, and thus, assign the qubit registry 26-1 to service the execution cycle of the QIF 26-N.
The QSOS 32-1 generates a QIF execution record (QER) 46-M and stores the QIF execution record 46-M in a QER repository 48. The QER repository 48 comprises a plurality of QERs 46-1-46-M, each of which identifies the OSSs that have been designated by a QSOS 32 to service an execution cycle of a particular QIF 36. In this example, the QER 46-M includes a field 49-1 that indicates that the scheduler OSS 24-3 of the QCS 12-3 should be used to provide the scheduler OSS, a field 49-2 that indicates that the qubit registry 26-1 of the QCS 12-1 should be used to provide the qubit registry OSS, and a field 49-3 that indicates that the task manager OSS 22-2 should be used to provide the task manager OSS service.
The QSOS 32-1 causes the QCS 12-2 and QCS 12-3 to be notified of the generation of the QER 46-M. In some examples, simply storing the QER 46-M in the QER repository 48 causes the QER repository 48 to send the notification to the QCS 12-2 and the QCS 12-3. In other implementations the QSOS 32-1 may send a message to the QCS 12-2 and the QCS 12-3. In some implementations, the message may include the QER 46-M.
The QSOSs 32-2 and 32-3 may similarly be communicatively coupled to computing devices that submit QIFs 36 for execution. Upon receipt of a QIF 36, the QSOSs 32-2 and 32-3 perform a substantially similar process as discussed above with regard to the QSOS 32-1 to generate a corresponding QER 46 that identifies respective OSSs to service the execution cycle of the QIFs 36.
It is noted that, because the QSOS 32-1 is a component of the QCS 12-1, functionality implemented by the QSOS 32-1 maybe attributed to the QCS 12-1 generally. Moreover, in examples where the QSOS 32-1 comprises software instructions that program the processor device 16 to carry out functionality discussed herein, functionality implemented by the QSOS 32-1 may attributed herein to the processor device 16.
In some implementations, in addition to the environmental metrics of the QCSs 12, the QSOS 26-1 may also take into consideration resources that will be needed by a quantum process that is initiated from the QIF 36-N when determining the particular OSS that will be used to service the QIF 36-N. For example, the QSOS 26-1 may determine that the quantum process will need a particular number of qubits, or that the quantum process will invoke a particular external process, such as another user process that is not part of the QIF 36-N. The QSOS 26-1 may utilize this information to determine a particular OSS of a particular QCS 12 to service the QIF 36-N, and may also store information in the QER 46-M that identifies the particular resource that will be needed for potential use by an OSS that is servicing the execution cycle of the QIF 36-N. For example, the QSOS 26-1 may determine that a particular QCS 12 has the external process executing already, and thus may assuming relative equality of other factors, allocate the task manager OSS 22 of such QCS 12 as the task manager OSS to service the QIF 36-N. As another example, the QSOS 26-1 may determine that the quantity of qubits needed by the quantum process are available only on a particular QCS 12, and thus may assuming relative equality of other factors, allocate the task manager OSS 22 of such QCS 12 as the task manager OSS to service the QIF 36-N.
In some implementations, the QSOS 26-1 may analyze the QIF 36-N, such as by parsing the QIF 36-N based on particular keywords that correspond to the particular quantum programming language of the instructions in the QIF 36-N. The QSOS 26-1 may then obtain, from each of the QCSs 12-1-12-3 resource information that identifies an availability status of resources of the respective QCSs 12-1-12-3, such as, by way of non-limiting example, the number of available qubits or a list of processes executing on the QCSs 12-1-12-3. Alternatively, such resource information may be included in the environmental information obtained from the QCSs 12-1-12-3.
As an example, the QSOS 32-1 may parse the QIF 36-N and determine that instructions in the QIF 36-N invoke an external process. The QSOS 32-1 may parse the QIF 36-N and also determine that the quantum process initiated from the QIF 36-N may utilize a determined quantity of qubits 18, such as five qubits 18 or 50 qubits 18.
In another implementation, the QSOS 32-1 may parse the QIF 36-N to identify a non-executable comment annotation that complies with a predetermined syntax and that identifies the resource that will be needed by the quantum process initiated from the QIF 36-N. In this implementation, the developer of the QIF 36-N would include in the QIF 36-N the particular non-executable comment annotation followed by the resource that will be needed, such as the number of qubits or an identifier of the external process.
The QCS 12-1 determines, based on the real-time environmental metrics, that a first OSS implemented by an OS of a first QCS 12 of the plurality of QCSs 12-1-12-3 is to be utilized for an execution cycle of the QIF 36-N, and a second OSS implemented by an OS of a second QCS 12 of the plurality of QCSs 12-1-12-3 is to be utilized for the execution cycle of the QIF 36-N (
The scheduler OSS 24-3 sends a message to the task manager OSS 22-2 requesting environmental metrics of the QCS 12-2 (
At a later point in time, the scheduler OSS 24-3 again sends a message to the task manager OSS 22-2 requesting environmental metrics of the QCS 12-2 (
Referring now to
The qubit registry OSS 26-1 receives the request and allocates three qubits 18 that are implemented on the QCS 12-2 to the identified quantum process (
The task manager OSS 22-2 determines, based on the QER 46-M, that the quantum process will invoke an external service (
Referring now to
If the quantum process executing on the QCS 12-2 attempts to invoke a particular OSS, the OSS proxy 30-2 intercepts the invocation. The OSS proxy 30-2 accesses the QER 46-M and determines the QCS 12 on which the invoked OSS has been allocated to the quantum process. The OSS proxy 30-2 then sends the invocation to the OSS on the appropriate QCS 12. The OSS proxy 30-2 receives the response from the OSS, and then provides the response to the quantum process. In this manner, the quantum process need not be aware of what OSSs have been assigned to the quantum process.
The computing device 12-1A includes an environmental metric obtainer 52 to obtain, from each respective QCS 12 of the plurality of QCSs 12-1-12-3 communicatively coupled to one another, real-time environmental metrics of the respective QCS 12. The environmental metric obtainer 52 may comprise executable software instructions configured to program a processor device to implement the functionality of obtaining, from each respective QCS 12 of the plurality of QCSs 12-1-12-3 communicatively coupled to one another, real-time environmental metrics of the respective QCS 12, may comprise circuitry including, by way of non-limiting example, an application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), or may comprise a combination of executable software instructions and circuitry. In some implementations the environmental metric obtainer 52 may obtain the environmental metrics by requesting the environmental metrics from the QCSs 12-1-12-3.
The computing device 12-1A includes a determiner 54 to, based on the real-time environmental metrics, determine that a first OSS implemented by an OS of a first QCS 12 of the plurality of QCSs 12-1-12-3 is to be utilized for an execution cycle of a QIF, and a second OSS implemented by an OS of a second QCS 12 of the plurality of QCSs 12-1-12-3 is to be utilized for the execution cycle of the QIF. The determiner 54 may comprise executable software instructions configured to program a processor device to implement the functionality of determining that a first OSS implemented by an OS of a first QCS 12 of the plurality of QCSs 12-1-12-3 is to be utilized for an execution cycle of a QIF, and a second OSS implemented by an OS of a second QCS 12 of the plurality of QCSs 12-1-12-3 is to be utilized for the execution cycle of the QIF, may comprise circuitry including, by way of non-limiting example, an application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), or may comprise a combination of executable software instructions and circuitry.
The computing device 12-1A includes a generator 56 to generate a QIF execution record that indicates that the first OSS and the second OSS is to be utilized for the execution cycle of the QIF. The generator 56 may comprise executable software instructions configured to program a processor device to implement the functionality of generating a QIF execution record that indicates that the first OSS and the second OSS is to be utilized for the execution cycle of the QIF, may comprise circuitry including, by way of non-limiting example, an application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), or may comprise a combination of executable software instructions and circuitry.
The computing device 12-1A includes a notifier 58 to cause the first QCS and the second QCS to be notified of the generation of the first QIF execution record. The notifier 58 may comprise executable software instructions configured to program a processor device to implement the functionality of causing the first QCS and the second QCS to be notified of the generation of the first QIF execution record, may comprise circuitry including, by way of non-limiting example, an application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), or may comprise a combination of executable software instructions and circuitry.
The system bus 70 may 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 memory 14 may include non-volatile memory 72 (e.g., read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), etc.), and volatile memory 74 (e.g., random-access memory (RAM)). A basic input/output system (BIOS) 76 may be stored in the non-volatile memory 72 and can include the basic routines that help to transfer information between elements within the QCS 12-1. The volatile memory 74 may also include a high-speed RAM, such as static RAM, for caching data.
The QCS 12-1 may further include or be coupled to a non-transitory computer-readable storage medium such as a storage device 78, 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)), HDD (e.g., EIDE or SATA) for storage, flash memory, or the like. The storage device 78 and 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.
A number of modules can be stored in the storage device 78 and in the volatile memory 74, including an operating system and one or more program modules, such as the QSOS 32-1, which may implement the functionality described herein in whole or in part. All or a portion of the examples may be implemented as a computer program product 80 stored on a transitory or non-transitory computer-usable or computer-readable storage medium, such as the storage device 78, which includes complex programming instructions, such as complex computer-readable program code, to cause the processor device 16 to 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 device 16. The processor device 16, in conjunction with the QSOS 32-1 in the volatile memory 74, may serve as a controller, or control system, for the QCS 12-1 that is to implement the functionality described herein.
An operator, such as the user 38, 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. Such input devices may be connected to the processor device 16 through an input device interface 82 that is coupled to the system bus 70 but 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 QCS 12-1 may also include a communications interface 84 suitable for communicating with a network as appropriate or desired.
Other computer system designs and configurations may also be suitable to implement the systems and methods described herein. The following examples illustrate various additional implementations in accordance with one or more aspects of the disclosure.
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.