Which hardware devices could be used in place of "default.qubit"?

Hi all! I’m new to Penny Lane - and to Quantum Computing in general. I’m a little bit confused about the different quantum hardware devices that can be accessed from Penny Lane: what I seem to understand is that, for example, “default.gaussian” cannot be used in place of “default.quibit” - because, apart from the fact that I am looking for a hardware device and it’s simulator, it works completely in a different way - it does not encode information inside individual quibits. So my question is, apart from real quantum devices offered by Quiskit, which I suppose can replace “default.quibit”, which ones could be used too in this case?

Hi @eddybudge,

Welcome to the forum and thanks for your question! :slight_smile:

That’s right, default.gaussian uses the continuous-variable quantum information model used for photonic quantum computing. It is a simple device for simulating photonic quantum circuits that contain Gaussian operations. If you’d like to learn more about photonic quantum computing and the theory behind, refer to Strawberry Fields, Xanadu’s other software library for photonic quantum computation.

In the qubit case, there are multiple further plugins that offer access to hardware devices apart from the PennyLane-Qiskit plugin. These are:

Note that accessing such devices requires a dedicated user token or user access from the hardware maintainer.

The PennyLane-Forest plugin further offers a hardware simulator device, the QVMDevice which can be configured to simulate QPU devices offered by Rigetti. This can be used locally without any required user token.

Hope this helps, let us know if you have further questions!


Thank you very much for your timely answer! In fact I would like to learn more about the continuous-variable quantum information model too. At the moment I am trying to run some code of yours (https://pennylane.ai/qml/demos/tutorial_quanvolution.html). It worked indeed - I only had to change set_seed to set_random_seed and val_accuracy to val_acc. On the other hand, when I wanted to use the Quiskit backend dev = qml.device('qiskit.ibmq', wires=4, backend='ibmq_athens', ibmqx_token="<my token was here before>") I got this: CircuitError: Expression cannot bind non-real or non-numeric values ({Parameter(rz[0]): tensor(4.49366732, requires_grad=True)}).'
(I attach here below the related screenshots). How could I solve this issue? I see there are some //TODOs - may it be that this is the cause - that there is still work in progress in order to fine tune the quiskit-pennylane interface?

Moreover I have tried to use AQT’s Noisy Simulator, but it does not support CNOT gate:

Fortunately Forest’s noisy simulator did work out.

As for Honeywell, it’s seems commercial, so I’m left with Forest’s simulator and the Quiskit hardware - if I succeed in finding a solution to the CircuitError I have already mentioned in the previous post.

Hi @eddybudge,

Thanks for your questions!

  1. The first error that you’ve submitted is related to a bug internally to how the PennyLane tensor type is used with RandomLayers. We’re looking into this one at the moment and will get back to you as soon as it’s a part of the main branch. Thanks for spotting it!
  2. Indeed, the PennyLane-AQT plugin does not support the CNOT operation natively. There exist certain decompositions for the CNOT using elementary rotations and the Mølmer-Sørenson gate (see Figure 1 in ref).

Let us know if you have further questions!

1 Like

Thank you again for your help @antalszava! :slight_smile:

Hi @eddybudge,

We’ve merged in an update that fixes this issue when using RandomLayers. It should help with running the tutorial on an IBMQ device without receiving the error that you have experienced before.

1 Like

Great! Now it works! But even the ibmq_quasm_simulator takes a lot of time to quanvolve an image :sweat_smile: I definitely have to resort to simulators! Thank you again! :slight_smile: