A Quantum Processing Unit (QPU) is a physical or simulated processor that contains a number of interconnected qubits that can be manipulated to compute quantum algorithms. It's the central component of a quantum computer or quantum simulator.
Quantum devices are still an emerging technology, and not all of them can run all Q#
code. As such, you need to keep some restrictions in mind when developing programs for different targets. Currently, Azure Quantum and the QDK
manage three different profiles for QPUs:
* Full : This profile can run any Q#
program within the limits of memory for simulators or the number of qubits for physical quantum computers.
* No Control Flow : This profile can run any Q#
program that doesn't require the use of the results from qubit measurements to control the program flow. Within a Q#
program targeted for this kind of QPU
, values of type Result don't support equality comparison.
* Basic Measurement Feedback : This profile has limited ability to use the results from qubit measurements to control the program flow. Within a Q#
program targeted for this kind of QPU
, you can only compare values of type Result as part of conditions within if statements in operations. The corresponding conditional blocks might not contain return or set statements.