Braket via Nexus¶
Here you can find some examples and explanations on running quantum circuits on AWS Braket via Nexus.
These will require that you have set Braket credentials via Settings->Linked Accounts on the Nexus website.
from datetime import datetime
from pytket import Circuit
import qnexus as qnx
List available Braket devices, optionally specifying a specific AWS region (by default devices for ALL regions will be returned).
qnx.devices.get_all(
issuers=[qnx.devices.IssuerEnum.BRAKET]
).df()
To configure Nexus to target Braket, you’ll need to provide the following arguments to the BraketConfig.
local
:bool
if true then the circuit will run as a simulation in the Nexus cloud.
device_type
:str
device type from device ARN (e.g.
"qpu"
,"quantum-simulator"
)
provider
:str
provider name from device ARN (e.g.
"ionq"
,"rigetti"
,"oqc"
,"amazon"
, …)
device
:str
device name from device ARN (e.g.
"ionQdevice"
,"Aspen-8"
,"sv1"
, …)
s3_bucket
:str
name of S3 bucket to store results
s3_folder
:str
name of folder (
"key"
) in S3 bucket to store results in
braket_config = qnx.BraketConfig(
local=True,
device_type="quantum-simulator",
provider="amazon",
device="sv1",
s3_bucket="",
s3_folder="",
)
Example of compiling and executing a circuit on AWS Braket¶
my_project_ref = qnx.projects.get_or_create(name="My AWS Braket Project")
circuit = Circuit(2).H(0).CX(0,1).measure_all()
my_circuit_ref = qnx.circuits.upload(
name=f"My AWS Braket Circuit from {datetime.now()}",
circuit = circuit,
project = my_project_ref,
)
compiled_circuits = qnx.compile(
circuits=[my_circuit_ref],
name=f"My Compile Job from {datetime.now()}",
optimisation_level=1,
backend_config=braket_config,
project=my_project_ref,
)
compiled_circuits.df()
execute_job_ref = qnx.start_execute_job(
circuits=compiled_circuits,
name=f"My Execute Job from {datetime.now()}",
n_shots=[100],
backend_config=braket_config,
project=my_project_ref,
)
qnx.jobs.wait_for(execute_job_ref)
# Retrieve a ExecutionResultRef for every Circuit that was executed
execute_job_result_refs = qnx.jobs.results(execute_job_ref)
# Get a pytket BackendResult for the execution
result = execute_job_result_refs[0].download_result()
result.get_counts()