IBM Q Experience¶
PennyLane-Qiskit supports running PennyLane on IBM Q hardware via the qistkit.ibmq
device.
You can choose between different backends - either simulators tailor-made to emulate the real hardware,
or the real hardware itself.
Accounts and Tokens¶
By default, the qiskit.ibmq
device will attempt to use an already active or stored
IBM Q account. If the device finds no account it will raise an error:
'No active IBM Q account, and no IBM Q token provided.
You can use the qiskit.IBMQ.save_account("<my_token>")
function to permanently store an account,
and the qiskit.IBMQ.load_account()
function to load the stored account in a given session.
Alternatively, you can specify the token with PennyLane via the
PennyLane configuration file by
adding the section
[qiskit.global]
[qiskit.ibmq]
ibmqx_token = "XXX"
You may also directly pass your IBM Q API token to the device:
dev = qml.device('qiskit.ibmq', wires=2, backend='ibmq_qasm_simulator', ibmqx_token="XXX")
Warning
Never publish code containing your token online.
Backends¶
By default, the qiskit.ibmq
device uses the simulator backend
ibmq_qasm_simulator
, but this may be changed to any of the real backends as returned by
dev.capabilities()['backend']
Most of the backends of the qiskit.ibmq
device, such as ibmq_london
or ibmq_16_melbourne
,
are hardware backends. Running PennyLane with these backends means to send the circuit as a job to the actual quantum
computer and retrieve the results via the cloud.
Specifying providers¶
Custom providers can be passed as arguments when a qiskit.ibmq
device is created:
from qiskit import IBMQ
provider = IBMQ.enable_account('XYZ')
import pennylane as qml
dev = qml.device('qiskit.ibmq', wires=2, backend='ibmq_qasm_simulator', provider=provider)
If no provider is passed explicitly, then the official provider options are used,
hub='ibm-q'
, group='open'
and project='main'
.
Custom provider options can also be passed as keyword arguments when creating a device:
import pennylane as qml
dev = qml.device('qiskit.ibmq', wires=2, backend='ibmq_qasm_simulator',
ibmqx_token='XXX', hub='MYHUB', group='MYGROUP', project='MYPROJECT')
More details on Qiskit providers can be found in the IBMQ provider documentation.