Submit an analog program using QuEra’s Aquila - Amazon Braket

Submit an analog program using QuEra’s Aquila

This page provides a comprehensive documentation about the capabilities of the Aquila machine from QuEra. Details covered here are the following: 1) The parameterized Hamiltonian simulated by Aquila, 2) AHS program parameters, 3) AHS result content, 4) Aquila capabilities parameter. We suggest using Ctrl+F text search to find parameters relevant to your questions.

Hamiltonian

The Aquila machine from QuEra simulates the following (time-dependent) Hamiltonian natively:


               TimeDependentDrivingHamiltonian

where

  • Hdrive,k​(t)=( 1/2 ​Ω(t)eiϕ(t)S−,k​ + 1/2 ​Ω(t)e−iϕ(t) S+,k​) + (−Δglobal​(t)nk​),

    • Ω(t) is the time-dependent, global driving amplitude (aka Rabi frequency), in units of (rad / us)

    • ϕ(t) is the time-dependent, global phase, measured in radians

    • S−,k​ and S+,k​ are the spin lowering and raising operators of atom k (in the basis |↓⟩=|g⟩, |↑⟩=|r⟩, they are S​=|g⟩⟨r|, S+​=(S​)=|r⟩⟨g|)

    • Δglobal​(t) is the time-dependent, global detuning

    • nk ​is the projection operator on the Rydberg state of atom k (i.e. n=|r⟩⟨r|)

  • Vvdw,k,l​=C6​/(dk,l​)6nk​nl​,

    • C6​ is the van der Waals coefficient, in units of (rad / s) * (m)^6

    • dk,l ​is the Euclidean distance between atom k and l, measured in um.

The users have control over the following parameters via the Braket AHS program schema.

  • 2-d atom arrangement (xk​ and yk​ coordinates of each atom k, in units of um), which controls the pairwise atomic distances dk,l​ with k,l=1,2,…N

  • Ω(t), the time-dependent, global Rabi frequency, in units of (rad / s)

  • ϕ(t), the time-dependent, global phase, in units of (rad / s)

  • Δglobal​(t), the time-dependent, global detuning, in units of (rad / s)

Note

The user cannot control which levels are involved (i.e. S​,S+​,n operators are fixed) nor the strength of the Rydberg-Rydberg interaction coefficient (C6​).

Braket AHS program schema

braket.ir.ahs.program_v1.Program object (example)

Program( braketSchemaHeader=BraketSchemaHeader( name='braket.ir.ahs.program', version='1' ), setup=Setup( ahs_register=AtomArrangement( sites=[[Decimal('0'), Decimal('0')]], filling=[1] ) ), hamiltonian=Hamiltonian( drivingFields=[ DrivingField( amplitude=PhysicalField( time_series=TimeSeries( values=[Decimal('0'), Decimal('15700000.0')], times=[Decimal('0'), Decimal('0.000001')] ), pattern='uniform' ), phase=PhysicalField( time_series=TimeSeries( values=[Decimal('0'), Decimal('0')], times=[Decimal('0'), Decimal('0.000001')] ), pattern='uniform' ), detuning=PhysicalField( time_series=TimeSeries( values=[Decimal('-54000000.0'), Decimal('54000000.0')], times=[Decimal('0'), Decimal('0.000001')] ), pattern='uniform' ) ) ], shiftingFields=[] ) )

JSON (example)

{ "braketSchemaHeader": { "name": "braket.ir.ahs.program", "version": "1" }, "setup": { "ahs_register": { "sites": [[0E-7, 0E-7]], "filling": [1] } }, "hamiltonian": { "drivingFields": [ { "amplitude": { "time_series": { "values": [0.0, 15700000.0], "times": [0E-9, 0.000001000] }, "pattern": "uniform" }, "phase": { "time_series": { "values": [0E-7, 0E-7], "times": [0E-9, 0.000001000] }, "pattern": "uniform" }, "detuning": { "time_series": { "values": [-54000000.0, 54000000.0], "times": [0E-9, 0.000001000] }, "pattern": "uniform" } } ], "shiftingFields": [] } }
Main fields
Program field type description

setup.ahs_register.sites

List[List[Decimal]]

List of 2-d coordinates where the tweezers trap atoms

setup.ahs_register.filling

List[int]

Marks atoms that occupy the trap sites with 1, and empty sites with 0

hamiltonian.drivingFields[].amplitude.time_series.times

List[Decimal]

time points of driving amplitude, Omega(t)

hamiltonian.drivingFields[].amplitude.time_series.values

List[Decimal]

values of driving amplitude, Omega(t)

hamiltonian.drivingFields[].amplitude.pattern

str

spatial pattern of driving amplitude, Omega(t); must be 'uniform'

hamiltonian.drivingFields[].phase.time_series.times

List[Decimal]

time points of driving phase, phi(t)

hamiltonian.drivingFields[].phase.time_series.values

List[Decimal]

values of driving phase, phi(t)

hamiltonian.drivingFields[].phase.pattern

str

spatial pattern of driving phase, phi(t); must be 'uniform'

hamiltonian.drivingFields[].detuning.time_series.times

List[Decimal]

time points of driving detuning, Delta_global(t)

hamiltonian.drivingFields[].detuning.time_series.values

List[Decimal]

values of driving detuning, Delta_global(t)

hamiltonian.drivingFields[].detuning.pattern

str

spatial pattern of driving detuning, Delta_global(t); must be 'uniform'

hamiltonian.shiftingFields

List

must be empty

Metadata fields
Program field type description

braketSchemaHeader.name

str

name of the schema; must be 'braket.ir.ahs.program'

braketSchemaHeader.version

str

version of the schema

Braket AHS task result schema

braket.tasks.analog_hamiltonian_simulation_quantum_task_result.AnalogHamiltonianSimulationQuantumTaskResult (example)

AnalogHamiltonianSimulationQuantumTaskResult( task_metadata=TaskMetadata( braketSchemaHeader=BraketSchemaHeader( name='braket.task_result.task_metadata', version='1' ), id='arn:aws:braket:us-east-1:123456789012:quantum-task/12345678-90ab-cdef-1234-567890abcdef', shots=2, deviceId='arn:aws:braket:us-east-1::device/qpu/quera/Aquila', deviceParameters=None, createdAt='2022-10-25T20:59:10.788Z', endedAt='2022-10-25T21:00:58.218Z', status='COMPLETED', failureReason=None ), measurements=[ ShotResult( status=<AnalogHamiltonianSimulationShotStatus.SUCCESS: 'Success'>, pre_sequence=array([1, 1, 1, 1]), post_sequence=array([0, 1, 1, 1]) ), ShotResult( status=<AnalogHamiltonianSimulationShotStatus.SUCCESS: 'Success'>, pre_sequence=array([1, 1, 0, 1]), post_sequence=array([1, 0, 0, 0]) ) ] )

JSON (example)

{ "braketSchemaHeader": { "name": "braket.task_result.analog_hamiltonian_simulation_task_result", "version": "1" }, "taskMetadata": { "braketSchemaHeader": { "name": "braket.task_result.task_metadata", "version": "1" }, "id": "arn:aws:braket:us-east-1:123456789012:quantum-task/12345678-90ab-cdef-1234-567890abcdef", "shots": 2, "deviceId": "arn:aws:braket:us-east-1::device/qpu/quera/Aquila", "createdAt": "2022-10-25T20:59:10.788Z", "endedAt": "2022-10-25T21:00:58.218Z", "status": "COMPLETED" }, "measurements": [ { "shotMetadata": {"shotStatus": "Success"}, "shotResult": { "preSequence": [1, 1, 1, 1], "postSequence": [0, 1, 1, 1] } }, { "shotMetadata": {"shotStatus": "Success"}, "shotResult": { "preSequence": [1, 1, 0, 1], "postSequence": [1, 0, 0, 0] } } ], "additionalMetadata": { "action": {...} "queraMetadata": { "braketSchemaHeader": { "name": "braket.task_result.quera_metadata", "version": "1" }, "numSuccessfulShots": 100 } } }
Main fields
Task result field type description

measurements[].shotResult.preSequence

List[int]

Pre-sequence measurement bits (one for each atomic site) for each shot: 0 if site is empty, 1 if site is filled, measured before the sequences of pulses that run the quantum evolution

measurements[].shotResult.postSequence

List[int]

Post-sequence measurement bits for each shot: 0 if atom is in Rydberg state or site is empty, 1 if atom is in ground state, measured at the end of the sequences of pulses that run the quantum evolution

Metadata fields
Task result field type description

braketSchemaHeader.name

str

name of the schema; must be 'braket.task_result.analog_hamiltonian_simulation_task_result'

braketSchemaHeader.version

str

version of the schema

taskMetadata.braketSchemaHeader.name

str

name of the schema; must be ‘braket.task_result.task_metadata'

taskMetadata.braketSchemaHeader.version

str

version of the schema

taskMetadata.id

str

The ID of the task. For AWS tasks, this is the task ARN.

taskMetadata.shots

int

The number of shots for the task

taskMetadata.shots.deviceId

str

The ID of the device on which the task ran. For AWS devices, this is the device ARN.

taskMetadata.shots.createdAt

str

The timestamp of creation; the format must be in ISO-8601/RFC3339 string format YYYY-MM-DDTHH:mm:ss.sssZ. Default is None.

taskMetadata.shots.endedAt

str

The timestamp of when the task ended; the format must be in ISO-8601/RFC3339 string format YYYY-MM-DDTHH:mm:ss.sssZ. Default is None.

taskMetadata.shots.status

str

The status of the task (CREATED, QUEUED, RUNNING, COMPLETED, FAILED). Default is None.

taskMetadata.shots.failureReason

str

The failure reason of the task. Default is None.

additionalMetadata.action

braket.ir.ahs.program_v1.Program

(See the Braket AHS program schema section)

additionalMetadata.action.braketSchemaHeader.queraMetadata.name

str

name of the schema; must be 'braket.task_result.quera_metadata'

additionalMetadata.action.braketSchemaHeader.queraMetadata.version

str

version of the schema

additionalMetadata.action.numSuccessfulShots

int

number of completely successful shots; must be equal to the requested number of shots

measurements[].shotMetadata.shotStatus

int

The status of the shot, (Success, Partial success, Failure); must be "Success"

QuEra device properties schema

braket.device_schema.quera.quera_device_capabilities_v1.QueraDeviceCapabilities (example)

QueraDeviceCapabilities( service=DeviceServiceProperties( braketSchemaHeader=BraketSchemaHeader( name='braket.device_schema.device_service_properties', version='1' ), executionWindows=[ DeviceExecutionWindow( executionDay=<ExecutionDay.TUESDAY: 'Tuesday'>, windowStartHour=datetime.time(16, 0), windowEndHour=datetime.time(20, 0) ) ], shotsRange=(1, 1000), deviceCost=DeviceCost( price=0.01, unit='shot' ), deviceDocumentation= DeviceDocumentation( imageUrl='https://a.b.cdn.console.awsstatic.com/59534b58c709fc239521ef866db9ea3f1aba73ad3ebcf60c23914ad8c5c5c878/a6cfc6fca26cf1c2e1c6.png', summary='Analog quantum processor based on neutral atom arrays', externalDocumentationUrl='https://www.quera.com/aquila' ), deviceLocation='Boston, USA', updatedAt=datetime.datetime(2022, 10, 24, 15, 45, tzinfo=datetime.timezone.utc) ), action={ <DeviceActionType.AHS: 'braket.ir.ahs.program'>: DeviceActionProperties( version=['1'], actionType=<DeviceActionType.AHS: 'braket.ir.ahs.program'> ) }, deviceParameters={}, braketSchemaHeader=BraketSchemaHeader( name='braket.device_schema.quera.quera_device_capabilities', version='1' ), paradigm=QueraAhsParadigmProperties( braketSchemaHeader=BraketSchemaHeader( name='braket.device_schema.quera.quera_ahs_paradigm_properties', version='1' ), qubitCount=256, lattice=Lattice( area=Area( width=Decimal('0.000075'), height=Decimal('0.0001') ), geometry=Geometry( spacingRadialMin=Decimal('0.000004'), spacingVerticalMin=Decimal('0.000004'), positionResolution=Decimal('1E-7'), numberSitesMax=256 ) ), rydberg=Rydberg( c6Coefficient=Decimal('5.42E-24'), rydbergGlobal=RydbergGlobal( rabiFrequencyRange=(Decimal('0.0'), Decimal('15800000.0')), rabiFrequencyResolution=Decimal('400.0'), rabiFrequencySlewRateMax=Decimal('250000000000000.0'), detuningRange=(Decimal('-125000000.0'), Decimal('125000000.0')), detuningResolution=Decimal('0.2'), detuningSlewRateMax=Decimal('2500000000000000.0'), phaseRange=(Decimal('-99.0'), Decimal('99.0')), phaseResolution=Decimal('5E-7'), timeResolution=Decimal('1E-9'), timeDeltaMin=Decimal('1E-8'), timeMin=Decimal('0.0'), timeMax=Decimal('0.000004') ) ), performance=Performance( lattice=PerformanceLattice( positionErrorAbs=Decimal('1E-7') ), rydberg=PerformanceRydberg( rydbergGlobal=PerformanceRydbergGlobal( rabiFrequencyErrorRel=Decimal('0.02') ) ) ) ) )

JSON (example)

{ "service": { "braketSchemaHeader": { "name": "braket.device_schema.device_service_properties", "version": "1" }, "executionWindows": [ { "executionDay": "Tuesday", "windowStartHour": "16:00:00", "windowEndHour": "20:00:00" } ], "shotsRange": [1, 1000], "deviceCost": { "price": 0.01, "unit": "shot" }, "deviceDocumentation": { "imageUrl": "https://a.b.cdn.console.awsstatic.com/59534b58c709fc239521ef866db9ea3f1aba73ad3ebcf60c23914ad8c5c5c878/a6cfc6fca26cf1c2e1c6.png", "summary": "Analog quantum processor based on neutral atom arrays", "externalDocumentationUrl": "https://www.quera.com/aquila" }, "deviceLocation": "Boston, USA", "updatedAt": "2022-10-24T15:45:00+00:00" }, "action": { "braket.ir.ahs.program": { "version": ["1"], "actionType": "braket.ir.ahs.program" } }, "deviceParameters": {}, "braketSchemaHeader": { "name": "braket.device_schema.quera.quera_device_capabilities", "version": "1" }, "paradigm": { "braketSchemaHeader": { "name": "braket.device_schema.quera.quera_ahs_paradigm_properties", "version": "1" }, "qubitCount": 256, "lattice": { "area": { "width": 7.5e-05, "height": 0.0001 }, "geometry": { "spacingRadialMin": 4e-06, "spacingVerticalMin": 4e-06, "positionResolution": 1e-07, "numberSitesMax": 256 } }, "rydberg": { "c6Coefficient": 5.42e-24, "rydbergGlobal": { "rabiFrequencyRange": [0.0,15800000.0], "rabiFrequencyResolution": 400.0, "rabiFrequencySlewRateMax": 250000000000000.0, "detuningRange": [-125000000.0, 125000000.0], "detuningResolution": 0.2, "detuningSlewRateMax": 2500000000000000.0, "phaseRange": [-99.0, 99.0], "phaseResolution": 5e-07, "timeResolution": 1e-09, "timeDeltaMin": 1e-08, "timeMin": 0.0, "timeMax": 4e-06 } }, "performance": { "lattice": { "positionErrorAbs": 1e-07 }, "rydberg": { "rydbergGlobal": { "rabiFrequencyErrorRel": 0.02 } } } } }
Capabilities fields
Task result field type description

paradigm.qubitCount

int

the number of qubits

paradigm.lattice.area.width

Decimal

Largest allowed difference between x coordinates of any two sites (measured in meters)

paradigm.lattice.area.height

Decimal

Largest allowed difference between y coordinates of any two sites (measured in meters)

paradigm.lattice.geometry.spacingRadialMin

Decimal

Minimum radial spacing between any two sites in the lattice (measured in meters)

paradigm.lattice.geometry.spacingVerticalMin

Decimal

Minimum spacing between any two rows in the lattice (measured in meters)

paradigm.lattice.geometry.positionResolution

Decimal

Resolution with which site positions can be specified (measured in meters)

paradigm.lattice.geometry.numberSitesMax

int

Maximum number of sites that can be placed in the lattice

paradigm.rydberg.c6Coefficient

Decimal

Rydberg-Rydberg C6 interaction coefficient (measured in (rad/s)*m^6)

paradigm.rydberg.rydbergGlobal.rabiFrequencyRange

Tuple[Decimal, Decimal]

Achievable Rabi frequency range for the global Rydberg drive time series (measured in rad/s)

paradigm.rydberg.rydbergGlobal.rabiFrequencyResolution

Decimal

Resolution with which global Rabi frequency amplitude can be specified (measured in rad/s)

paradigm.rydberg.rydbergGlobal.rabiFrequencySlewRateMax

Decimal

Maximum slew rate for changing the global Rabi frequency (measured in (rad/s)/s)

paradigm.rydberg.rydbergGlobal.detuningRange

Tuple[Decimal, Decimal]

Achievable detuning range for the global Rydberg pulse (measured in rad/s)

paradigm.rydberg.rydbergGlobal.detuningResolution

Decimal

Resolution with which global detuning can be specified (measured in rad/s)

paradigm.rydberg.rydbergGlobal.detuningSlewRateMax

Decimal

Maximum slew rate for detuning (measured in (rad/s)/s)

paradigm.rydberg.rydbergGlobal.phaseRange

Tuple[Decimal, Decimal]

Achievable phase range for the global Rydberg pulse (measured in rad)

paradigm.rydberg.rydbergGlobal.phaseResolution

Decimal

Resolution with which global Rabi frequency phase can be specified (measured in rad)

paradigm.rydberg.rydbergGlobal.timeResolution

Decimal

Resolution with which times for global Rydberg drive parameters can be specified (measured in s)

paradigm.rydberg.rydbergGlobal.timeDeltaMin

Decimal

Minimum time step with which times for global Rydberg drive parameters can be specified (measured in s)

paradigm.rydberg.rydbergGlobal.timeMin

Decimal

Minimum duration of Rydberg drive (measured in s)

paradigm.rydberg.rydbergGlobal.timeMax

Decimal

Maximum duration of Rydberg drive (measured in s)

Performance fields
Task result field type description

paradigm.peformance.lattice.positionErrorAbs

Decimal

Error between target and actual site position (measured in meters)

paradigm.peformance.rydberg.rydbergGlobal.rabiFrequencyErrorRel

Decimal

random error in the Rabi frequency, relative (unitless)

Service properties fields
Task result field type description

service.executionWindows[].executionDay

ExecutionDay

Days of the execution window; must be 'Everyday', 'Weekdays', 'Weekend', 'Monday', 'Tuesday', 'Wednesday', Thursday', 'Friday', 'Saturday' or 'Sunday'

service.executionWindows[].windowStartHour

datetime.time

UTC 24-hour format of the time when the execution window starts

service.executionWindows[].windowEndHour

datetime.time

UTC 24-hour format of the time when the execution window ends

service.qpu_capabilities.service.shotsRange

Tuple[int, int]

Minimum and maximum number of shots for the device

service.qpu_capabilities.service.deviceCost.price

float

Price of the device in terms of US dollars

service.qpu_capabilities.service.deviceCost.unit

str

unit for charging the price, e.g: 'minute', 'hour', 'shot', 'task'

Metadata fields
Task result field type description

paradigm.braketSchemaHeader.name

str

name of the schema; must be 'braket.device_schema.quera.quera_ahs_paradigm_properties'

paradigm.braketSchemaHeader.version

str

version of the schema

action[].version

str

version of the AHS program schema

action[].actionType

ActionType

AHS program schema name; must be 'braket.ir.ahs.program'

service.braketSchemaHeader.name

str

name of the schema; must be 'braket.device_schema.device_service_properties'

service.braketSchemaHeader.version

str

version of the schema

service.deviceDocumentation.imageUrl

str

URL for the image of the device

service.deviceDocumentation.summary

str

brief description on the device

service.deviceDocumentation.externalDocumentationUrl

str

external documentation URL

service.deviceLocation

str

geographic location fo the device

service.updatedAt

datetime

time when the device properties were last updated