In this pilot, users can use quantum computing through SURF Research Cloud.
This page provides the information a user needs to run their experiment.
SURF Research Cloud
Research Cloud is a portal that enables users to run workspaces (virtual machines) on SURF's own HPC Cloud infrastructure or on public clouds like Amazon Web Services (AWS) and Microsoft Azure.
This page is a part of the SURF Research Cloud user documentation. Please refer to these pages when you need information on using Research Cloud itself. The pages also explain how to send a support request, if need be.
As one of the selected users of the pilot, you are already enabled to log in to the Research Cloud portal and you will also have the necessary budget (wallet) to start a workspace. For this pilot, the wallet is funded by the SURF Innovation Lab.
Stepping Stone
To use Quantum computing, you will start a workspace on Research Cloud. This workspace serves as a stepping stone to the chosen Quantum backend. This backend can either be a simulator or an actual Quantum instance.
The workspace is created using the "Quantum computing" catalog item that is available to you, in the Research Cloud portal. It is a pre-configured Jupyter machine that runs on the cloud provider you have chosen.
The page Start a simple workspace will guide you through starting your workspace. Just select the "Quantum computing" catalog item instead of the one suggested there.
After a couple of minutes your workspace will be labeled as "running". Then you can log in with the procedure that is described here: Log in to your workspace (First half of the page about "TOTP").
When you are logged in, you will see a Jupyter Hub web-interface.
This is a VM on the public cloud that you chose when creating the workspace.
Except for Jupyter Hub, some other tools are pre-installed, too.
(If the screen stays empty for several seconds, click on the Jupyter-logo on the top left).
Maybe you have some (test-data) that you want to upload now?
Running on Quantum
If the VM is running, Azure/ AWS are charging for the classical provisioning of cloud resources. The QPUs cost is pay-as-you-go.
There are two main options to start running your experiments:
- You create a new Jupyter notebook
- You upload an existing Jupyter notebook
For both cases, for the Jupyter Notebook (or your python code) to connect to the backends you need to add the following lines in the first cell (beginning of the code):
Azure:
from surf.researchcloud.quantum.azure import azure_qiskit_provider_factory provider = azure_qiskit_provider_factory()
AWS:
from surf.researchcloud.quantum.aws import aws_s3_folder my_prefix = "simulation-output" s3_folder = aws_s3_folder(my_prefix) import os os.environ['AWS_DEFAULT_REGION'] = 'eu-west-2'
After running these lines, the Jupyter Notebook works the same as the environment in AWS and Azure. You can follow their tutorials from this point onwards and you can submit jobs to the simulators or QPUs directly from here.
Installing your own software
You can install your own tools and software by using conventional tools such as git and pip. Be aware that in the Quantum Computing workspace every collaboration member has sudo permissions.
You can do this in several ways:
- Within the Jupyter notebook: use !git and !pip (make sure you also restart the kernel after the installations).
- For git there is also a button on the top left
- Open a terminal an install the software via the terminal If you run into any issues, please contact the SURF servicedesk.
Running on actual QPUs
Before running a job in an actual QPU make sure that it is online and check the expected waiting times!
Example in Azure:
# Create a circuit circuit = QuantumCircuit(3, 3) circuit.name = "Qiskit Sample - 3-qubit GHZ circuit" circuit.h(0) circuit.cx(0, 1) circuit.cx(1, 2) circuit.measure([0, 1, 2], [0, 1, 2]) # See available backends print("This workspace's targets:") for backend in provider.backends(): print("- " + backend.name()) # chose backend qpu_backend = provider.get_backend("rigetti.qpu.aspen-11") # Submit the circuit to run on Azure Quantum job = qpu_backend.run(circuit, shots=10) job_id = job.id() print("Job id", job_id) # Monitor job progress and wait until complete: job_monitor(job) result = job.result() print(result) counts = {format(n, "03b"): 0 for n in range(8)} counts.update(result.get_counts(circuit)) print(counts) plot_histogram(counts)
Sharing files within the collaboration
You can share files with other members of the collaboration by placing them in the /scratch folder.
For other people to be able to edit them you need to change the permissions:
chmod a+w filename
Available backends
Currently, we are granting access to AWS and Azure Quantum. Both AWS and Quantum Azure have contracts with several quantum computing providers and therefore, by providing access to AWS and Azure users will get access to a range of quantum computing backends.
AWS: IONQ, Rigetti, Dwave, OQC, Xanadu, QuEra
- https://aws.amazon.com/braket/quantum-computing-research/
- https://aws.amazon.com/braket/quantum-computers/
Azure: IONQ, Rigetti, coming soon QCI, Pasqal
- https://azure.microsoft.com/en-us/products/quantum/#features
- https://learn.microsoft.com/en-us/azure/quantum/
In both cases, you can also get access to the quantum simulators of the different backends.
Summary info quantum computers (based on available date 10/2022)
Provider | Paradigm | Technology backend | T1 T2 | Number & Type qubits | Median gate fidelity | Connectivity (Topology) | Native Gates | website |
Rigetti | Gate-based | Aspen 11 | 28μs 13.6μs | 40 SC | 1Q 99.5 % 2Q(CZ) 88.2% 2Q(XY) 88.2% RO 95% | 3-fold connectivity (2-fold for edges) | CPHASE XY CZ RX RZ | |
Rigetti | Gate-based | Aspen M-2 | 30μs 18.6μs | 80 SC | 1Q 99.8 % 2Q(CZ) 88.7% 2Q(XY) 89.9% RO 97.4% | 3-fold connectivity (2-fold for edges) | CPHASE XY CZ RX RZ | |
IONQ | Gate-based | Harmony | 10-100s 1s | 11 TI | 1Q 99.6% 2Q 97.3 % SPAM: 0.18% | All-to-all | Gpi, gpi2, ms | |
Dwave | Quantum annealer | Advantage 4.1 Advantage 6.1 D-Wave 2000Q | ~5000 SC | NA | https://docs.dwavesys.com/docs/latest/doc_physical_properties.html | |||
Xanadu | Continuous-variable (GBS) | Borealis | 288 squeezed-state qubits | NA | ||||
OQC | Gate-based | Lucy | 8 SC, Coaxmon | I RZ V X ECR |
SQ= single qubit gate fidelity
TW= two qubit gate fidelity
RO= readout fidelity
M = measurement fidelity
SPAM= state preparation and measurement error