-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feature: Support for Braket Direct Reservations (#87)
* [Feature]: Support for Braket Direct reservations * [Feature]: Support for Braket Direct reservations - adding docstrings and tests * [Feature]: Support for Braket Direct reservations - minor cleanup * [Feature]: Support for Braket Direct reservations - Adding more tests * [Feature]: Support for Braket Direct reservations - Final Polish * [Feature]: Support for Braket Direct reservations - Improving Indentation * [Feature]: Support for Braket Direct reservations - codereview * [Feature]: Support for Braket Direct reservations - codereview * [Feature]: Support for Braket Direct reservations - codereview * [Feature]: Support for Braket Direct reservations - codereview suggestions * [Feature]: Support for Braket Direct reservations - formatting * [Feature]: Support for Braket Direct reservations - formatting * Adding codereview suggestions * Minor Formatting * Minor Formatting * adding direct reservation details in docstring * Minor formatting and cleanup * CI documentation fix --------- Co-authored-by: Fe-r-oz <[email protected]>
- Loading branch information
Showing
5 changed files
with
176 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# Reservations | ||
|
||
[Reservations](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html) grant exclusive access to a specific quantum device for a predetermined time slot. This control over execution windows offers several advantages to users: | ||
|
||
* **Predictability:** Users have guaranteed knowledge of precisely when their tasks will be executed, eliminating scheduling uncertainties. | ||
* **Prioritization:** During the reservation window, the user's workloads take precedence over others, avoiding queueing delays and potential bottlenecks. | ||
* **Efficiency:** The cost is based solely on the reserved duration, irrespective of the number of tasks the user runs within that window. | ||
|
||
# Why Use Reservations? | ||
|
||
In certain scenarios, reservations provide significant benefits over on-demand access: | ||
|
||
- **Production Runs**: When finalizing research or performing critical computations, reservations guarantee timely completion, ensuring adherence to deadlines. | ||
- **Live Demos or Workshops**: Reservations secure exclusive device access for showcasing work or conducting workshops at specific times. | ||
- **Streamlined Workflows**: Users can schedule reservations for tasks requiring execution at particular moments within their workflows, optimizing their overall process. | ||
|
||
# Reservations vs. On-Demand Access | ||
|
||
On-demand access is better suited for the initial development and prototyping stages of a quantum project. This method allows for rapid iterations without the need for pre-scheduled reservations, facilitating agile development. However, once the project progresses towards final production runs requiring guaranteed execution times, reservations become the preferred choice. | ||
""" | ||
|
||
```@docs | ||
Braket.DirectReservation | ||
Braket.start_reservation! | ||
Braket.stop_reservation! | ||
Braket.direct_reservation | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
using Braket, Test, Mocking, JSON3, Dates, Graphs | ||
using Braket: status | ||
Mocking.activate() | ||
|
||
# Constants | ||
RESERVATION_ARN = "arn:aws:braket:us-east-1:123456789:reservation/uuid" | ||
DEVICE_ARN = "arn:aws:braket:us-east-1:123456789:device/qpu/ionq/Forte-1" | ||
|
||
@testset "DirectReservation Tests" begin | ||
# Creating a DirectReservation | ||
@testset "Creating DirectReservation" begin | ||
reservation = Braket.DirectReservation(DEVICE_ARN, RESERVATION_ARN) | ||
@test reservation.device_arn == DEVICE_ARN | ||
@test reservation.reservation_arn == RESERVATION_ARN | ||
@test reservation.is_active == false | ||
end | ||
|
||
# Starting and stopping a reservation | ||
@testset "Starting and Stopping Reservation" begin | ||
reservation = Braket.DirectReservation(DEVICE_ARN, RESERVATION_ARN) | ||
|
||
# Start reservation | ||
Braket.start_reservation!(reservation) | ||
@test reservation.is_active == true | ||
@test ENV["AMZN_BRAKET_RESERVATION_DEVICE_ARN"] == DEVICE_ARN | ||
@test ENV["AMZN_BRAKET_RESERVATION_TIME_WINDOW_ARN"] == RESERVATION_ARN | ||
|
||
# Stop reservation | ||
Braket.stop_reservation!(reservation) | ||
@test reservation.is_active == false | ||
@test !haskey(ENV, "AMZN_BRAKET_RESERVATION_DEVICE_ARN") | ||
@test !haskey(ENV, "AMZN_BRAKET_RESERVATION_TIME_WINDOW_ARN") | ||
|
||
end | ||
|
||
function test_func() | ||
println("Executing within reservation context") | ||
return 5 | ||
# Add actions as needed | ||
@test ENV["AMZN_BRAKET_RESERVATION_DEVICE_ARN"] == DEVICE_ARN | ||
@test ENV["AMZN_BRAKET_RESERVATION_TIME_WINDOW_ARN"] == RESERVATION_ARN | ||
end | ||
|
||
@testset "Direct Reservation Function" begin | ||
reservation = Braket.DirectReservation(DEVICE_ARN, RESERVATION_ARN) | ||
@test Braket.direct_reservation(reservation, test_func) == 5 | ||
end | ||
|
||
@testset "Invalid Device Type" begin | ||
invalid_device = 12345 # Not a valid device type | ||
@test_throws UndefVarError DirectReservation(invalid_device, RESERVATION_ARN) | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters