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.
NVIDIA’s CUDA-Q ist eine Softwarebibliothek, die für die Programmierung hybrider Quantenalgorithmen entwickelt wurde CPUs GPUs, die, und Quantenverarbeitungseinheiten (QPUs) kombinieren. Sie bietet ein einheitliches Programmiermodell, das es Entwicklern ermöglicht, sowohl klassische als auch Quantenbefehle in einem einzigen Programm auszudrücken und so Arbeitsabläufe zu rationalisieren. CUDA-Q beschleunigt die Simulation und Laufzeit von Quantenprogrammen mit seinen integrierten CPU- und GPU-Simulatoren.
Die Verwendung von CUDA-Q auf Amazon Braket Hybrid Jobs bietet eine flexible On-Demand-Computerumgebung. Recheninstanzen werden nur für die Dauer Ihrer Arbeitslast ausgeführt, sodass sichergestellt ist, dass Sie nur für das bezahlen, was Sie tatsächlich nutzen. Amazon Braket Hybrid Jobs bietet auch ein skalierbares Erlebnis. Benutzer können mit kleineren Instances für das Prototyping und Testen beginnen und dann auf größere Instances skalieren, die größere Workloads für vollständige Experimente bewältigen können.
Amazon Braket Hybrid Jobs-Unterstützung GPUs , die für die Maximierung unerlässlich ist CUDA-Qist Potenzial. GPUs beschleunigt die Simulationen von Quantenprogrammen im Vergleich zu CPU-basierten Simulatoren erheblich, insbesondere bei der Arbeit mit Schaltungen mit hoher Qubitzahl. Die Parallelisierung wird bei der Verwendung von CUDA-Q auf Amazon Braket Hybrid Jobs. Hybrid Jobs vereinfacht die Verteilung von Schaltkreisabtastungen und beobachtbaren Auswertungen auf mehrere Rechenknoten. Diese nahtlose Parallelisierung von CUDA-Q Workloads ermöglichen es Benutzern, sich mehr auf die Entwicklung ihrer Workloads zu konzentrieren, anstatt die Infrastruktur für groß angelegte Experimente einzurichten.
Informationen zu den ersten Schritten finden Sie im CUDA-Q Starter-Beispiel
Der folgende Codeausschnitt ist ein Beispiel für die Ausführung eines hello-world
CUDA-Q Programm mit Amazon Braket Hybrid Jobs.
image_uri = "<ecr-image-uri>"
@hybrid_job(device='local:nvidia/qpp-cpu', image_uri=image_uri)
def hello_quantum():
import cudaq
# define the backend
device=get_job_device_arn()
cudaq.set_target(device.split('/')[-1])
# define the Bell circuit
kernel = cudaq.make_kernel()
qubits = kernel.qalloc(2)
kernel.h(qubits[0])
kernel.cx(qubits[0], qubits[1])
# sample the Bell circuit
result = cudaq.sample(kernel, shots_count=1000)
measurement_probabilities = dict(result.items())
return measurement_probabilities
Das obige Beispiel simuliert eine Bell-Schaltung auf einem CPU-Simulator. Dieses Beispiel wird lokal auf Ihrem Laptop oder Braket Jupyter-Notebook ausgeführt. Aufgrund der local=True
Einstellung wird bei der Ausführung dieses Skripts ein Container in Ihrer lokalen Umgebung gestartet, um das CUDA-Q-Programm zum Testen und Debuggen auszuführen. Nachdem Sie den Test abgeschlossen haben, können Sie das local=True
Flag entfernen und Ihren Job ausführen. AWS Weitere Informationen finden Sie unter Erste Schritte mit Amazon Braket Hybrid Jobs.
Wenn Ihre Workloads eine hohe Qubit-Anzahl, eine große Anzahl von Schaltungen oder eine große Anzahl von Iterationen aufweisen, können Sie leistungsstärkere CPU-Rechenressourcen verwenden, indem Sie die Einstellung angeben. instance_config
Der folgende Codeausschnitt zeigt, wie Sie die Einstellung im Decorator konfigurieren. instance_config
hybrid_job
Weitere Informationen zu den unterstützten Instanztypen finden Sie unter Konfigurieren der Hybrid-Job-Instanz zur Ausführung Ihres Skripts. Eine Liste der Instance-Typen finden Sie unter EC2 Amazon-Instance-Typen
@hybrid_job(
device="local:nvidia/qpp-cpu",
image_uri=image_uri,
instance_config=InstanceConfig(instanceType="ml.c5.2xlarge"),
)
def my_job_script():
...
Für anspruchsvollere Workloads können Sie Ihre Workloads auf einem ausführen CUDA-Q GPU-Simulator. Verwenden Sie den Backend-Namennvidia
, um einen GPU-Simulator zu aktivieren. Das nvidia
Backend funktioniert als CUDA-Q GPU-Simulator. Wählen Sie als Nächstes einen EC2 Amazon-Instance-Typ aus, der eine unterstützt NVIDIA GPU. Der folgende Codeausschnitt zeigt den hybrid_job
GPU-konfigurierten Decorator.
@hybrid_job(
device="local:nvidia/nvidia",
image_uri=image_uri,
instance_config=InstanceConfig(instanceType="ml.p3.2xlarge"),
)
def my_job_script():
...
Amazon Braket Hybrid Jobs unterstützt parallel GPU-Simulationen mit CUDA-Q. Sie können die Auswertung mehrerer Observables oder mehrerer Schaltungen parallelisieren, um die Leistung Ihres Workloads zu steigern. Um mehrere Observables zu parallelisieren, nehmen Sie die folgenden Änderungen an Ihrem Algorithmus-Skript vor.
Stellen Sie die mgpu
Option des Backends ein. nvidia
Dies ist erforderlich, um die Observablen zu parallelisieren. Bei der Parallelisierung wird MPI für die Kommunikation zwischen beiden verwendet. GPUs Daher muss MPI vor der Ausführung initialisiert und danach finalisiert werden.
Geben Sie als Nächstes den Ausführungsmodus durch Einstellung an. execution=cudaq.parallel.mpi
Der folgende Codeausschnitt zeigt diese Änderungen.
cudaq.set_target("nvidia", option="mqpu")
cudaq.mpi.initialize()
result = cudaq.observe(
kernel, hamiltonian, shots_count=n_shots, execution=cudaq.parallel.mpi
)
cudaq.mpi.finalize()
Geben Sie im hybrid_job
Decorator einen Instanztyp an, der mehrere Instanzen hostet, GPUs wie im folgenden Codeausschnitt gezeigt.
@hybrid_job(
device="local:nvidia/nvidia-mqpu",
instance_config=InstanceConfig(instanceType="ml.p3.8xlarge", instanceCount=1),
image_uri=image_uri,
)
def parallel_observables_gpu_job(sagemaker_mpi_enabled=True):
...
Das Notizbuch für parallel Simulationen
Ihre Workloads auf Quantencomputern ausführen
Nach Abschluss der Simulatortests können Sie mit der Durchführung von Experimenten am QPUs beginnen. Wechseln Sie einfach das Ziel zu einer Amazon Braket-QPU, z. B. IQM, IonQ, oder Rigetti Geräte. Der folgende Codeausschnitt veranschaulicht, wie Sie das Ziel auf das setzen IQM Garnet Gerät. Eine Liste der verfügbaren QPUs Produkte finden Sie in der Amazon Braket-Konsole
device_arn = "arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet"
cudaq.set_target("braket", machine=device_arn)
Weitere Informationen zu Amazon Braket Hybrid Jobs finden Sie unter Arbeiten mit Amazon Braket Hybrid Jobs im Entwicklerhandbuch. Für weitere Informationen über CUDA-Q, siehe CUDA-Q Dokumentation