

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Ausführung von Quantenaufgaben während einer Reservierung
<a name="braket-run-quantum-task-with-reservation"></a>

Nachdem Sie einen gültigen Reservierungs-ARN von [Create a reservation](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation) erhalten haben, können Sie Quantenaufgaben erstellen, die während der Reservierung ausgeführt werden sollen. Quantenaufgaben und Hybrid-Jobs, die mit einem Reservierungs-ARN eingereicht wurden, werden nicht in einer Gerätewarteschlange angezeigt. Aufgaben, die vor Beginn der Reservierung eingereicht wurden, bleiben so lange `QUEUED` erhalten, bis Ihre Reservierung beginnt. 

**Anmerkung**  
Reservierungen sind AWS konto- und gerätespezifisch. Nur das AWS Konto, das die Reservierung erstellt hat, kann Ihren Reservierungs-ARN verwenden.   
Während einer Reservierung können sowohl Reservierungen als auch reguläre Aufgaben erstellt werden. Um zu überprüfen, ob eine erstellte Braket-Quantenaufgabe mit einer Reservierung verknüpft ist, überprüfen Sie das Feld „Reservierungs-ARN“ auf der Seite der Quantenaufgabe in der Braket-Konsole oder fragen Sie dasselbe Feld in den Aufgabenmetadaten mithilfe des SDK ab. Im Rest dieser Seite wird beschrieben, wie Sie angeben, welche Aufgaben mit der Reservierung verknüpft sind. 

[Sie können Quantenaufgaben Python SDKs beispielsweise mit [Braket](https://docs.aws.amazon.com/braket/latest/developerguide/braket-references.html),, [https://github.com/NVIDIA/cuda-quantum](https://github.com/NVIDIA/cuda-quantum), oder direkt mit boto3 (Working with Boto3) erstellen.](https://docs.aws.amazon.com/braket/latest/developerguide/braket-using-boto3.html) Um Reservierungen nutzen zu können, benötigen Sie Version [v1.79.0](https://github.com/amazon-braket/amazon-braket-sdk-python/releases/tag/v1.79.0) oder höher von [Amazon](https://github.com/amazon-braket/amazon-braket-sdk-python) Braket. Python SDK Mit dem folgenden Code können Sie auf das neueste Braket-SDK, den neuesten Qiskit Anbieter und PennyLane das neueste Plugin aktualisieren. 

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

**Führen Sie Aufgaben mit dem `DirectReservation` Kontext-Manager aus**

Die empfohlene Methode, eine Aufgabe innerhalb Ihrer geplanten Reservierung auszuführen, ist die Verwendung des `DirectReservation` Kontext-Managers. Durch die Angabe Ihres Zielgeräts und des Reservierungs-ARN stellt der Kontext-Manager sicher, dass alle in der `with` Python-Anweisung erstellten Aufgaben mit exklusivem Zugriff auf das Gerät ausgeführt werden. 

Definieren Sie zunächst einen Quantenschaltkreis und das Gerät. Verwenden Sie dann den Reservierungskontext und führen Sie die Aufgabe aus. **Stellen Sie sicher, dass Ihre gesamte Arbeitslast innerhalb des `with` Blocks ausgeführt wird. Alles, was außerhalb des Bereichs des `with` Blocks ausgeführt wird, wird nicht mit Ihrer Reservierung verknüpft\!**

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

Sie können Quantenaufgaben in einer Reservierung mithilfe der Qiskit Plug-ins CUDA-QPennyLane, und erstellen, sofern der `DirectReservation` Kontext beim Erstellen von Quantenaufgaben aktiv ist. Mit dem Qiskit-Braket Anbieter können Sie Aufgaben beispielsweise wie folgt ausführen.

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

In ähnlicher Weise führt der folgende Code während einer Reservierung mithilfe des Braket-PennyLane Plug-ins eine Verbindung aus.

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

**Manuelles Einstellen des Reservierungskontextes**

Alternativ können Sie den Reservierungskontext mit dem folgenden Code manuell festlegen.

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

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

Dies ist ideal für Jupyter-Notebooks, bei denen der Kontext in der ersten Zelle ausgeführt werden kann und alle nachfolgenden Aufgaben in der Reservierung ausgeführt werden.

**Anmerkung**  
Die Zelle, die den `.start()` Aufruf enthält, sollte *nur einmal ausgeführt werden.* 

Um zum On-Demand-Modus zurückzukehren: Starten Sie das Jupyter-Notebook neu, oder rufen Sie den folgenden Befehl auf, um den Kontext wieder in den On-Demand-Modus zu ändern.

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

**Anmerkung**  
 Reservierungen haben eine vorab festgelegte Start- und Endzeit (siehe Reservierung [erstellen](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation)). Die `reservation_context.stop()` Methoden `reservation_context.start()` und **bedeuten weder den Beginn noch das Ende einer Reservierung**. Stattdessen werden alle Quantenaufgaben, die Sie erstellen, Ihrer Reservierung zugeordnet und nur während Ihrer geplanten Reservierung ausgeführt, solange der Kontext aktiv ist. Der Reservierungskontext hat keine Auswirkung auf die geplante Reservierungszeit. 

**Übergeben Sie den Reservierungs-ARN beim Erstellen der Aufgabe explizit**

Eine andere Möglichkeit, Aufgaben während einer Reservierung zu erstellen, besteht darin, den Reservierungs-ARN beim Anrufen explizit zu übergeben`device.run()`. 

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

Diese Methode verknüpft die Quantenaufgabe direkt mit dem Reservierungs-ARN und stellt so sicher, dass sie während des reservierten Zeitraums ausgeführt wird. Fügen Sie für diese Option den Reservierungs-ARN zu jeder Aufgabe hinzu, die Sie während einer Reservierung ausführen möchten. Beachten Sie jedoch, dass es bei der Verwendung von Bibliotheken von Drittanbietern wie Qiskit oder schwierig sein kannPennyLane, sicherzustellen, dass die eingereichten Aufgaben den richtigen Reservierungs-ARN verwenden. Aus diesem Grund wird die Verwendung des DirectReservation Kontext-Managers empfohlen. 

Wenn Sie boto3 direkt verwenden, übergeben Sie den Reservierungs-ARN als Assoziation, wenn Sie eine Aufgabe erstellen.

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