

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esecuzione di attività quantistiche durante una prenotazione
<a name="braket-run-quantum-task-with-reservation"></a>

Dopo aver ottenuto un ARN di prenotazione valido da [Crea una prenotazione](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation), puoi creare attività quantistiche da eseguire durante la prenotazione. Le attività quantistiche e i lavori ibridi inviati con un ARN di prenotazione non verranno visualizzati nella coda dei dispositivi. Le attività inviate prima dell'orario di inizio della prenotazione rimarranno nello `QUEUED` stato fino all'inizio della prenotazione. 

**Nota**  
Le prenotazioni sono AWS specifiche per account e dispositivo. Solo l' AWS account che ha creato la prenotazione può utilizzare l'ARN della prenotazione.   
Durante una prenotazione, è possibile creare sia attività di prenotazione che attività regolari. Per verificare che un'attività quantistica Braket creata sia associata a una prenotazione, controlla il campo «ARN di prenotazione» nella pagina dell'attività quantistica nella console Braket o interroga lo stesso campo nei metadati dell'attività utilizzando l'SDK. Il resto di questa pagina descrive come specificare quali attività sono associate alla prenotazione. 

[È possibile creare attività quantistiche utilizzando Python SDKs ad esempio [Braket](https://docs.aws.amazon.com/braket/latest/developerguide/braket-references.html),, [https://github.com/NVIDIA/cuda-quantum](https://github.com/NVIDIA/cuda-quantum), o direttamente con boto3 (Lavorare con Boto3).](https://docs.aws.amazon.com/braket/latest/developerguide/braket-using-boto3.html) [Per utilizzare le prenotazioni, devi disporre della versione [v1.79.0](https://github.com/amazon-braket/amazon-braket-sdk-python/releases/tag/v1.79.0) o successiva di Amazon Braket. Python SDK](https://github.com/amazon-braket/amazon-braket-sdk-python) Puoi eseguire l'aggiornamento all'SDK, al Qiskit provider e PennyLane al plug-in Braket più recenti con il codice seguente. 

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

**Esegui attività con il gestore di contesto `DirectReservation`**

Il modo consigliato per eseguire un'attività all'interno della prenotazione pianificata consiste nell'utilizzare il gestore di `DirectReservation` contesto. Specificando il dispositivo di destinazione e l'ARN di prenotazione, il gestore di contesto assicura che tutte le attività create all'interno dell'istruzione `with` Python vengano eseguite con accesso esclusivo al dispositivo. 

Innanzitutto, definisci un circuito quantistico e il dispositivo. Quindi utilizza il contesto di prenotazione ed esegui l'attività. **Assicurati che l'intero carico di lavoro venga eseguito all'interno del `with` blocco; tutto ciò che non rientra nell'ambito del `with` blocco non verrà associato alla tua prenotazione\$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)
```

È possibile creare attività quantistiche in una prenotazione utilizzandoCUDA-Q, e i Qiskit pluginPennyLane, purché il `DirectReservation` contesto sia attivo durante la creazione di attività quantistiche. Ad esempio, con il Qiskit-Braket provider, è possibile eseguire le attività come segue.

```
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)
```

Analogamente, il codice seguente esegue un circuito durante una prenotazione utilizzando il 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()
```

**Impostazione manuale del contesto di prenotazione**

In alternativa, puoi impostare manualmente il contesto di prenotazione con il seguente codice.

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

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

Questo è ideale per i notebook Jupyter in cui il contesto può essere eseguito nella prima cella e tutte le attività successive verranno eseguite nella prenotazione.

**Nota**  
*La cella contenente la `.start()` chiamata deve essere eseguita solo una volta.* 

Per tornare alla modalità su richiesta: riavvia il notebook Jupyter o chiama quanto segue per riportare il contesto alla modalità su richiesta.

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

**Nota**  
 [Le prenotazioni hanno un orario di inizio e di fine predeterminati (vedi Creare una prenotazione).](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation) I `reservation_context.stop()` metodi `reservation_context.start()` and **non iniziano o terminano una prenotazione**. Invece, mentre il contesto è attivo, tutte le attività quantistiche create verranno associate alla prenotazione e verranno eseguite solo durante la prenotazione pianificata. Il contesto della prenotazione non ha alcun effetto sull'orario di prenotazione pianificato. 

**Passa esplicitamente l'ARN di prenotazione durante la creazione dell'attività**

Un altro modo per creare attività durante una prenotazione consiste nel trasmettere esplicitamente l'ARN della prenotazione durante la chiamata. `device.run()` 

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

Questo metodo associa direttamente l'attività quantistica all'ARN di prenotazione, assicurando che venga eseguita durante il periodo riservato. Per questa opzione, aggiungi l'ARN di prenotazione a ogni attività che intendi eseguire durante una prenotazione. Tuttavia, tieni presente che quando utilizzi librerie di terze parti come Qiskit orPennyLane, può essere difficile garantire che le attività inviate utilizzino l'ARN di prenotazione corretto. Per questo motivo, si consiglia di utilizzare il gestore di DirectReservation contesto. 

Quando usi direttamente boto3, passa l'ARN di prenotazione come associazione durante la creazione di un'attività.

```
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)
```