

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menjalankan tugas kuantum selama reservasi
<a name="braket-run-quantum-task-with-reservation"></a>

Setelah mendapatkan ARN reservasi yang valid dari [Buat reservasi](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation), Anda dapat membuat tugas kuantum untuk dijalankan selama reservasi. Tugas kuantum dan pekerjaan hybrid yang dikirimkan dengan reservasi ARN tidak akan muncul dalam antrian perangkat. Tugas yang diajukan sebelum waktu mulai reservasi akan tetap berada di `QUEUED` negara bagian sampai reservasi Anda dimulai. 

**catatan**  
Reservasi bersifat khusus untuk AWS akun dan perangkat. Hanya AWS akun yang membuat reservasi yang dapat menggunakan ARN reservasi Anda.   
Selama reservasi, reservasi dan tugas reguler dapat dibuat. Untuk memverifikasi bahwa tugas kuantum Braket yang dibuat dikaitkan dengan reservasi, periksa bidang “ARN Reservasi” pada halaman tugas kuantum di konsol Braket, atau kueri bidang yang sama di metadata tugas menggunakan SDK. Sisa halaman ini menjelaskan cara menentukan tugas mana yang terkait dengan reseravasi. 

Anda dapat membuat tugas kuantum menggunakan Python SDKs seperti [Braket](https://docs.aws.amazon.com/braket/latest/developerguide/braket-references.html),,, [https://github.com/NVIDIA/cuda-quantum](https://github.com/NVIDIA/cuda-quantum), [https://github.com/amazon-braket/amazon-braket-pennylane-plugin-python](https://github.com/amazon-braket/amazon-braket-pennylane-plugin-python), atau langsung dengan boto3 ([Bekerja dengan](https://docs.aws.amazon.com/braket/latest/developerguide/braket-using-boto3.html) Boto3). [Untuk menggunakan reservasi, Anda harus memiliki versi [v1.79.0](https://github.com/amazon-braket/amazon-braket-sdk-python/releases/tag/v1.79.0) atau lebih tinggi dari Amazon Braket. Python SDK](https://github.com/amazon-braket/amazon-braket-sdk-python) Anda dapat memperbarui ke Braket SDK terbaru, Qiskit penyedia dan PennyLane plugin dengan kode berikut. 

```
pip install --upgrade amazon-braket-sdk amazon-braket-pennylane-plugin qiskit-braket-provider
```

**Jalankan tugas dengan manajer `DirectReservation` konteks**

Cara yang disarankan untuk menjalankan tugas dalam reservasi terjadwal Anda adalah dengan menggunakan pengelola `DirectReservation` konteks. Dengan menentukan perangkat target dan ARN reservasi Anda, manajer konteks memastikan bahwa semua tugas yang dibuat dalam pernyataan `with` Python dijalankan dengan akses eksklusif ke perangkat. 

Pertama, tentukan sirkuit kuantum dan perangkat. Kemudian gunakan konteks reservasi dan jalankan tugas. **Pastikan seluruh beban kerja Anda dijalankan di dalam `with` blok; apa pun yang berjalan di luar cakupan `with` blok tidak akan dikaitkan dengan reservasi Anda\$1**

```
from braket.aws import AwsDevice, DirectReservation
from braket.circuits import Circuit
from braket.devices import Devices

bell = Circuit().h(0).cnot(0, 1)
device = AwsDevice(Devices.IonQ.ForteEnterprise1)

# run the circuit in a reservation
with DirectReservation(device, reservation_arn="<my_reservation_arn>"):
    task = device.run(bell, shots=100)
```

Anda dapat membuat tugas kuantum dalam reservasi menggunakan CUDA-QPennyLane,, dan Qiskit plugin, selama `DirectReservation` konteksnya aktif saat membuat tugas kuantum. Misalnya, dengan Qiskit-Braket penyedia, Anda dapat menjalankan tugas sebagai berikut.

```
from braket.devices import Devices
from braket.aws import DirectReservation
from qiskit import QuantumCircuit
from qiskit_braket_provider import BraketProvider


qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)

qpu = BraketProvider().get_backend("Forte Enterprise 1")

# run the circuit in a reservation
with DirectReservation(Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>"):
    qpu_task = qpu.run(qc, shots=10)
```

Demikian pula, kode berikut menjalankan sirkuit selama reservasi menggunakan Braket-PennyLane plugin.

```
from braket.devices import Devices
from braket.aws import DirectReservation
import pennylane as qml


dev = qml.device("braket.aws.qubit", device_arn=Devices.IonQ.ForteEnterprise1.value, wires=2, shots=10)

@qml.qnode(dev)
def bell_state():
    qml.Hadamard(wires=0)
    qml.CNOT(wires=[0, 1])
    return qml.probs(wires=[0, 1])

# run the circuit in a reservation
with DirectReservation(Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>"):
    probs = bell_state()
```

**Mengatur konteks reservasi secara manual**

Atau, Anda dapat mengatur konteks reservasi secara manual dengan kode berikut.

```
# set reservation context 
reservation_context = DirectReservation(device, reservation_arn="<my_reservation_arn>").start()

# run circuit during reservation
task = device.run(bell, shots=100)
```

Ini sangat ideal untuk notebook Jupyter di mana konteksnya dapat dijalankan di sel pertama dan semua tugas berikutnya akan berjalan di reservasi.

**catatan**  
Sel yang berisi `.start()` panggilan *hanya boleh dijalankan sekali*. 

Untuk beralih kembali ke mode sesuai permintaan: Mulai ulang notebook Jupyter, atau hubungi yang berikut ini untuk mengubah konteks kembali ke mode sesuai permintaan.

```
reservation_context.stop()  # unset reservation context 
```

**catatan**  
 Reservasi memiliki waktu mulai dan berakhir yang telah ditentukan sebelumnya (lihat [Membuat reservasi](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation)). Metode `reservation_context.start()` dan `reservation_context.stop()` metode **tidak memulai atau mengakhiri reservasi**. Sebaliknya, saat konteksnya aktif, tugas kuantum apa pun yang Anda buat akan dikaitkan dengan reservasi Anda, dan hanya akan berjalan selama reservasi terjadwal Anda. Konteks reservasi tidak berpengaruh pada waktu reservasi yang dijadwalkan. 

**Secara eksplisit lulus ARN reservasi saat membuat tugas**

Cara lain untuk membuat tugas selama reservasi adalah dengan secara eksplisit melewati ARN reservasi saat menelepon. `device.run()` 

```
task = device.run(bell, shots=100, reservation_arn="<my_reservation_arn>")
```

Metode ini secara langsung mengaitkan tugas kuantum dengan ARN reservasi, memastikannya berjalan selama periode cadangan. Untuk opsi ini, tambahkan ARN reservasi ke setiap tugas yang Anda rencanakan untuk dijalankan selama reservasi. Namun, perhatikan bahwa saat menggunakan pustaka pihak ketiga seperti Qiskit atauPennyLane, mungkin sulit untuk memastikan bahwa tugas yang dikirimkan menggunakan ARN reservasi yang benar. Untuk alasan ini, disarankan menggunakan manajer DirectReservation konteks. 

Saat langsung menggunakan boto3, lewati ARN reservasi sebagai asosiasi saat membuat tugas.

```
import boto3

braket_client = boto3.client("braket")


kwargs["associations"] = [
    {
        "arn": "<my_reservation_arn>",
        "type": "RESERVATION_TIME_WINDOW_ARN",
    }
]

response = braket_client.create_quantum_task(**kwargs)
```