The IBM Quantum Composer and the IBM Quantum Lab (previously known collectively as the IBM Quantum Experience) form an online platform allowing public and premium access to cloud-based quantum computing services provided by IBM Quantum. This includes access to a set of IBM's prototype quantum processors, a set of tutorials on quantum computation, and access to an interactive textbook. As of February 2021, there are over 20 devices on the service, six of which are freely available for the public. This service can be used to run algorithms and experiments, and explore tutorials and simulations around what might be possible with quantum computing.
IBM's quantum processors are made up of superconducting transmon qubits, located in dilution refrigerators at the IBM Research headquarters at the Thomas J. Watson Research Center. Users interact with a quantum processor through the quantum circuit model of computation. Circuits can be created either using graphically with the Quantum Composer, or programmatically within the Jupyter notebooks of the Quantum Lab. Circuits are created using Qiskit and can be compiled down to OpenQASM for execution on real quantum systems.
The Quantum Composer is a graphic user interface (GUI) designed by IBM to allow users to construct various quantum algorithms or run other quantum experiments. Users may see the results of their quantum algorithms by either running it on a real quantum processor or by using a simulator. Algorithms developed in the Quantum Composer are referred to as a "quantum score", in reference to the Quantum Composer resembling a musical sheet.[8]
The composer can also be used in scripting mode, where the user can write programs in the OpenQASM-language instead. Below is an example of a very small program, built for IBMs 5-qubit computer. The program instructs the computer to generate a quantum state , a 3-qubit GHZ state, which can be thought of as a variant of the Bell state, but with three qubits instead of two. It then measures the state, forcing it to collapse to one of the two possible outcomes, or .
include "qelib1.inc"
qreg q[5]; // allocate 5 qubits (set automatically to |00000>)
creg c[5]; // allocate 5 classical bits
h q[0]; // Hadamard-transform qubit 0
cx q[0], q[1]; // conditional pauli X-transform (ie. "CNOT") of qubits 0 and 1
// At this point we have a 2-qubit Bell state (|00> + |11>)/sqrt(2)
cx q[1], q[2]; // this expands entanglement to the 3rd qubit
measure q[0] -> c[0]; // this measurement collapses the entire 3-qubit state
measure q[1] -> c[1]; // therefore qubit 1 and 2 read the same value as qubit 0
measure q[2] -> c[2];
Every instruction in the QASM language is the application of a quantum gate, initialization of the chips registers to zero or measurement of these registers.