FSharp.Azure.Quantum.Braket
0.6.2
dotnet add package FSharp.Azure.Quantum.Braket --version 0.6.2
NuGet\Install-Package FSharp.Azure.Quantum.Braket -Version 0.6.2
<PackageReference Include="FSharp.Azure.Quantum.Braket" Version="0.6.2" />
<PackageVersion Include="FSharp.Azure.Quantum.Braket" Version="0.6.2" />
<PackageReference Include="FSharp.Azure.Quantum.Braket" />
paket add FSharp.Azure.Quantum.Braket --version 0.6.2
#r "nuget: FSharp.Azure.Quantum.Braket, 0.6.2"
#:package FSharp.Azure.Quantum.Braket@0.6.2
#addin nuget:?package=FSharp.Azure.Quantum.Braket&version=0.6.2
#tool nuget:?package=FSharp.Azure.Quantum.Braket&version=0.6.2
FSharp.Azure.Quantum.Braket
AWS Braket plugin for FSharp.Azure.Quantum
Submits circuits to AWS Braket gate QPUs and simulators via OpenQASM 3.0, and neutral-atom
analog programs to QuEra Aquila via the Braket AHS format. This is the only package that
depends on the AWS SDK — the core FSharp.Azure.Quantum package stays AWS-free.
Supported devices
| Kind | Devices (Braket.Devices.*) |
Format |
|---|---|---|
| Gate QPUs | ionqAria1, ionqForte1, rigettiAnkaa3, iqmGarnet, oqcLucy, infleqtionSqale |
OpenQASM 3.0 |
| Managed simulators | sv1, dm1, tn1 |
OpenQASM 3.0 |
| Neutral-atom analog QPU | queraAquila |
AHS |
Device ARNs track the Braket console — update Braket.Devices if a device is retired or added.
Installation
dotnet add package FSharp.Azure.Quantum.Braket
This package requires FSharp.Azure.Quantum (pulled in transitively) and the AWSSDK.Braket
and AWSSDK.S3 packages. You need AWS credentials with Braket access and an S3 bucket where
Braket writes task results.
Quick start
Gate circuits (any Braket gate device)
BraketBackend implements the shared IQuantumBackend, so it works with any gate device by ARN
and plugs into the standard algorithms (Grover, QFT, Shor, HHL).
open Amazon.Braket
open Amazon.S3
open FSharp.Azure.Quantum.Braket
open FSharp.Azure.Quantum.Braket.BraketExecution
let braket = new AmazonBraketClient()
let s3 = new AmazonS3Client()
let s3Config = { Bucket = "my-braket-results"; KeyPrefix = "tasks" }
// Pick a device by ARN — simulator, IonQ, Rigetti, IQM, OQC, Infleqtion, ...
let backend = BraketBackend(braket, s3, s3Config, Braket.Devices.sv1, shots = 1000)
// Run a gate circuit (wrap a CircuitBuilder.Circuit with CircuitWrapper)
let result = (backend :> IQuantumBackend).ExecuteToState circuit
The backend exports the circuit to OpenQASM 3.0, submits the task, polls to completion, reads the
result JSON from S3, and returns an approximate QuantumState built from the measurement
histogram. Failures come back as Error (QuantumError ...) rather than exceptions.
Qubit limits
The backend reports a qubit limit (IQubitLimitedBackend), and solvers refuse or split a wider
problem before a task is submitted. Braket.Devices.maxQubits holds the figures of the devices
this module names as they were when this version was released; a device it does not name reports
no limit. To use a device at its current width:
// read the figure from the device itself (one GetDevice call, needs braket:GetDevice)
let! live = BraketBackend.CreateWithDeviceLimitAsync(braket, s3, s3Config, Braket.Devices.ionqForte1, shots = 1000)
// or state it
let stated = BraketBackend(braket, s3, s3Config, Braket.Devices.ionqForte1, shots = 1000, maxQubits = 64)
CreateWithDeviceLimitAsync returns Result<BraketBackend, QuantumError>; a device whose
capabilities name no qubit count keeps the built-in figure. deviceQubitsAsync braket deviceArn ct
returns the reported count alone.
Neutral-atom analog programs (QuEra Aquila)
open FSharp.Azure.Quantum.Algorithms.NeutralAtom
// Build a RydbergProgram, then submit it via the AHS format
let! result =
submitAhsAsync braket s3 s3Config Braket.Devices.queraAquila program shots ct
Modules
Braket— pure helpers with no AWS SDK dependency (device ARNs, OpenQASM action wrapping, gate-result parsing). Testable in isolation.BraketExecution— the AWS-facing layer:submitActionAsync,submitAhsAsync, and theBraketBackendgateIQuantumBackend.
Notes
ExecuteToStatereconstructs aQuantumStatefrom the measurement histogram in three tiers: a dense state vector up to 20 qubits, aSparseState(observed outcomes only) for 21–31 qubits, andQuantumState.MeasurementHistogram(bitstring → count) beyond that. The histogram tier has no width limit — it holds at mostshotsentries regardless of qubit count, so wide devices (Rigetti Ankaa, QuEra-scale) work. To get the raw histogram at any width, callBraketBackend.ExecuteToHistogramAsync (circuit, ct).ApplyOperationis not supported (Braket runs whole circuits, not incremental gates); useExecuteToStatewith a complete circuit.
License
Same as the parent project (FSharp.Azure.Quantum) — Unlicense / Public Domain.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- AWSSDK.Braket (>= 4.0.100.17)
- AWSSDK.S3 (>= 4.0.104.2)
- FSharp.Azure.Quantum (>= 1.6.2)
- FSharp.Core (>= 10.1.302)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.6.2 | 96 | 10/10/2026 |
| 0.6.1 | 87 | 10/9/2026 |
| 0.6.0 | 81 | 10/9/2026 |
| 0.5.2 | 101 | 10/2/2026 |
| 0.5.1 | 97 | 10/1/2026 |
| 0.5.0 | 92 | 10/1/2026 |
| 0.4.15 | 97 | 9/30/2026 |
| 0.4.12 | 94 | 9/29/2026 |
| 0.4.11 | 104 | 9/26/2026 |
| 0.4.9 | 102 | 9/20/2026 |
| 0.4.8 | 99 | 9/18/2026 |
| 0.4.7 | 141 | 8/1/2026 |
| 0.4.6 | 137 | 7/11/2026 |
| 0.4.5 | 123 | 7/6/2026 |
| 0.4.4 | 132 | 7/3/2026 |
| 0.4.3 | 134 | 7/1/2026 |
v0.6.2: Rebuilt against FSharp.Azure.Quantum v1.6.2
v0.6.1: Rebuilt against FSharp.Azure.Quantum v1.6.1
v0.6.0: Rebuilt against FSharp.Azure.Quantum v1.6.0 (qubit limits come from the backend; see its notes)
v0.5.2: Rebuilt against FSharp.Azure.Quantum v1.5.2
v0.5.1: Rebuilt against FSharp.Azure.Quantum v1.5.1
- ADDED: the backend reports its device's qubits (IQubitLimitedBackend, Braket.Devices.maxQubits) for the devices the module names
- ADDED: BraketBackend takes maxQubits, which replaces that figure; BraketBackend.CreateWithDeviceLimitAsync and deviceQubitsAsync read the device's own qubit count (GetDevice, Braket.Devices.qubitCountOfCapabilities)
v0.5.0: Rebuilt against FSharp.Azure.Quantum v1.5.0 (Task-based API; see its notes)
v0.4.16: Rebuilt against FSharp.Azure.Quantum v1.4.16
- CHANGED: Braket results carry their recorded counts, so measuring a returned state yields Braket's own shots rather than outcomes resampled from its amplitudes
v0.4.14: Rebuilt against FSharp.Azure.Quantum v1.4.14
- ADDED: the Braket backend implements IShotSamplingBackend, so sampled UCCSD-VQE knows its shot count
- CHANGED: circuits are transpiled to the target device's gate set before OpenQASM 3.0 export, so composite gates (Toffoli, multi-controlled, controlled-phase) reach the device; an optional JobBudget limits submitted jobs
- Requires FSharp.Azure.Quantum v1.4.14+