

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.

# Mehrere Programme ausführen
<a name="braket-batching-tasks"></a>

Amazon Braket bietet zwei Ansätze für die effiziente Ausführung mehrerer Quantenprogramme: Programmsätze und Batching von Quantenaufgaben.

**Programmgruppen** sind die bevorzugte Methode, um Workloads mit mehreren Programmen auszuführen. Sie ermöglichen es Ihnen, mehrere Programme in einer einzigen Amazon Braket-Quantenaufgabe zu bündeln. Programmgruppen bieten [Leistungsverbesserungen](https://aws.amazon.com/blogs/quantum-computing/amazon-braket-introduces-program-sets-enabling-customers-to-run-quantum-programs-up-to-24x-faster/) und Kosteneinsparungen im Vergleich zur individuellen Einreichung von Programmen, insbesondere wenn sich die Anzahl der Programmausführungen 100 nähert. 

Derzeit unterstützen IQM alle Rigetti Geräte Programmpakete. Bevor Sie Programmpakete an einreichen QPUs, wird empfohlen, zuerst [auf dem Amazon Braket Local Simulator zu testen](https://docs.aws.amazon.com/braket/latest/developerguide/braket-send-to-local-simulator.html). Um zu überprüfen, ob ein Gerät Programmsets unterstützt, können Sie die [Eigenschaften des Geräts](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/braket_features/Getting_Devices_and_Checking_Device_Properties.ipynb) mit dem Amazon Braket SDK oder die Geräteseite in der [Amazon Braket-Konsole](https://console.aws.amazon.com/braket/) aufrufen.

Das folgende Beispiel zeigt, wie ein Programmsatz ausgeführt wird.

```
from math import pi
from braket.devices import LocalSimulator
from braket.program_sets import ProgramSet
from braket.circuits import Circuit

program_set = ProgramSet([
    Circuit().h(0).cnot(0,1),
    Circuit().rx(0, pi/4).ry(1, pi/8).cnot(1,0),
    Circuit().t(0).t(1).cz(0,1).s(0).cz(1,2).s(1).s(2),
])

device = LocalSimulator()
result = device.run(program_set, shots=300).result()
print(result[0][0].counts)  # The result of the first program in the program set
```

Weitere Informationen über verschiedene Methoden zum Erstellen einer Programmgruppe (z. B. zum Konstruieren einer Programmgruppe aus vielen Observablen oder Parametern mit einem einzigen Programm) und zum Abrufen von Programmgruppenergebnissen finden Sie im Abschnitt [Programmgruppen](https://docs.aws.amazon.com/braket/latest/developerguide/braket-constructing-circuit.html#braket-program-set) im *Amazon Braket Developer Guide* und im [Ordner Program Sets](https://github.com/amazon-braket/amazon-braket-examples/tree/main/examples/braket_features/program_sets) im Github-Repository Braket-Beispiele.

**Quantum Task Batching** ist auf jedem Amazon Braket-Gerät verfügbar. Batching ist besonders nützlich für Quantenaufgaben, die Sie auf den On-Demand-Simulatoren (SV1, DM1 oderTN1) ausführen, da sie mehrere Quantenaufgaben parallel verarbeiten können. Durch Batching können Sie Quantenaufgaben parallel starten. Wenn Sie beispielsweise eine Berechnung durchführen möchten, für die 10 Quantenaufgaben erforderlich sind und die Programme in diesen Quantenaufgaben unabhängig voneinander sind, empfiehlt es sich, Task-Batching zu verwenden. Verwenden Sie Quantentask-Batching, wenn Sie Workloads mit mehreren Programmen auf einem Gerät ausführen, das keine Programmgruppen unterstützt.

Das folgende Beispiel zeigt, wie ein Stapel von Quantenaufgaben ausgeführt wird.

```
from braket.circuits import Circuit
from braket.devices import LocalSimulator

bell = Circuit().h(0).cnot(0, 1)
circuits = [bell for _ in range(5)]

device = LocalSimulator()
batch = device.run_batch(circuits, shots=100)
print(batch.results()[0].measurement_counts)  # The result of the first quantum task in the batch
```

Genauere Informationen zur Batchverarbeitung finden Sie in den [Amazon Braket-Beispielen](https://github.com/amazon-braket/amazon-braket-examples) unter. GitHub

**Topics**
+ [Informationen zum Programmumfang und zu den Kosten](#braket-program-sets-costs)
+ [Informationen zur Batchverarbeitung und zu den Kosten von Quantenaufgaben](#braket-batching-costs)
+ [Batching von Quantenaufgaben und PennyLane](#braket-batching-pennylane)
+ [Batching von Aufgaben und parametrisierte Schaltungen](#braket-batching-parametrized-circuits)

## Informationen zum Programmumfang und zu den Kosten
<a name="braket-program-sets-costs"></a>

Mit Programmsätzen können mehrere Quantenprogramme effizient ausgeführt werden, indem sie bis zu 100 Programme oder Parametersätze in einer einzigen Quantenaufgabe zusammenfassen. Bei Programmsets zahlen Sie nur eine Gebühr pro Aufgabe zuzüglich der Gebühren pro Schuss, die auf der Gesamtzahl der Aufnahmen aller Programme basieren, wodurch die Kosten im Vergleich zur Einreichung einzelner Programme erheblich gesenkt werden. Dieser Ansatz ist besonders vorteilhaft bei Workloads mit vielen Programmen und einer geringen Anzahl von Aufnahmen pro Programm. Programmsätze werden derzeit auf IQM allen Rigetti Geräten sowie im Amazon Braket Local Simulator unterstützt. 

Weitere Informationen finden Sie im Abschnitt [Programmgruppen mit](https://docs.aws.amazon.com/braket/latest/developerguide/braket-constructing-circuit.html#braket-program-set) detaillierten Implementierungsschritten, bewährten Methoden und Codebeispielen.

## Informationen zur Batchverarbeitung und zu den Kosten von Quantenaufgaben
<a name="braket-batching-costs"></a>

Einige Vorbehalte, die Sie in Bezug auf die Batch- und Abrechnungskosten für Quantenaufgaben beachten sollten:
+ Standardmäßig wiederholt die Batchverarbeitung bei Quantenaufgaben die Zeitüberschreitung oder schlägt dreimal fehl.
+ Ein Stapel lang andauernder Quantenaufgaben, wie z. B. 34 qubits fürSV1, kann hohe Kosten verursachen. Achten Sie darauf, die `run_batch` Zuweisungswerte sorgfältig zu überprüfen, bevor Sie mit einer Reihe von Quantenaufgaben beginnen. Wir empfehlen nicht, TN1 mit zu verwenden`run_batch`.
+  TN1kann Kosten für fehlgeschlagene Aufgaben in der Probenphase verursachen (weitere Informationen finden Sie in [der TN1 Beschreibung](https://docs.aws.amazon.com/braket/latest/developerguide/braket-devices.html#braket-simulator-tn1)). Automatische Wiederholungsversuche können die Kosten in die Höhe treiben. Wir empfehlen daher, die Anzahl der 'max\_retries' beim Batching auf 0 zu setzen, wenn sie verwendet werden TN1 (siehe [Quantum](https://github.com/aws/amazon-braket-sdk-python/blob/4c7c3b28e5a17b8f0cddf94377b7734fcbe2ebfc/src/braket/aws/aws_quantum_task_batch.py#L186) Task Batching, Zeile 186).

## Batching von Quantenaufgaben und PennyLane
<a name="braket-batching-pennylane"></a>

Nutzen Sie die Batching-Funktion, wenn Sie PennyLane Amazon Braket verwenden, indem Sie festlegen, `parallel = True` wann Sie ein Amazon Braket-Gerät instanziieren, wie im folgenden Beispiel gezeigt.

```
import pennylane as qml

# Define the number of wires (qubits) you want to use
wires = 2  # For example, using 2 qubits

# Define your S3 bucket 
my_bucket = "amazon-braket-s3-demo-bucket"
my_prefix = "pennylane-batch-output"
s3_folder = (my_bucket, my_prefix)

device = qml.device("braket.aws.qubit", 
                    device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1", 
                    wires=wires, 
                    s3_destination_folder=s3_folder, 
                    parallel=True)
```

[Weitere Informationen zur Stapelverarbeitung mit finden Sie unter Parallelisierte Optimierung von PennyLane Quantenschaltkreisen.](https://github.com/aws/amazon-braket-examples/blob/main/examples/pennylane/1_Parallelized_optimization_of_quantum_circuits/1_Parallelized_optimization_of_quantum_circuits.ipynb)

## Batching von Aufgaben und parametrisierte Schaltungen
<a name="braket-batching-parametrized-circuits"></a>

Wenn Sie einen Quanten-Task-Batch einreichen, der parametrisierte Schaltungen enthält, können Sie entweder ein `inputs` Wörterbuch bereitstellen, das für alle Quantenaufgaben im Stapel verwendet wird, oder ein `list` Eingabewörterbuch, in welchem Fall `i` das -te Wörterbuch mit `i` der -ten Aufgabe verknüpft wird, wie im folgenden Beispiel gezeigt.

```
from braket.circuits import Circuit, FreeParameter, Observable
from braket.aws import AwsQuantumTaskBatch, AwsDevice

# Define your quantum device
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")

# Create the free parameters
alpha = FreeParameter('alpha')
beta = FreeParameter('beta')

# Create two circuits
circ_a = Circuit().rx(0, alpha).ry(1, alpha).cnot(0, 2).xx(0, 2, beta)
circ_a.variance(observable=Observable.Z(), target=0)

circ_b = Circuit().rx(0, alpha).rz(1, alpha).cnot(0, 2).zz(0, 2, beta)
circ_b.expectation(observable=Observable.Z(), target=2)

# Use the same inputs for both circuits in one batch
tasks = device.run_batch([circ_a, circ_b], inputs={'alpha': 0.1, 'beta': 0.2})

# Or provide each task its own set of inputs
inputs_list = [{'alpha': 0.3, 'beta': 0.1}, {'alpha': 0.1, 'beta': 0.4}]

tasks = device.run_batch([circ_a, circ_b], inputs=inputs_list)
```

Sie können auch eine Liste von Eingabewörterbüchern für einen einzelnen parametrischen Schaltkreis erstellen und diese als Quanten-Task-Batch einreichen. Wenn die Liste N Eingabewörterbücher enthält, enthält der Stapel N Quantenaufgaben. Die `i` -te Quantenaufgabe entspricht der Schaltung, die mit dem `i` -th Eingabewörterbuch ausgeführt wird. 

```
from braket.circuits import Circuit, FreeParameter

# Create a parametric circuit
circ = Circuit().rx(0, FreeParameter('alpha'))

# Provide a list of inputs to execute with the circuit
inputs_list = [{'alpha': 0.1}, {'alpha': 0.2}, {'alpha': 0.3}]

tasks = device.run_batch(circ, inputs=inputs_list, shots=100)
```