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.
CUDA-Q mit Amazon Braket verwenden
NVIDIA’s CUDA-Qist 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-Qbeschleunigt die Simulation und Laufzeit von Quantenprogrammen mit seinen integrierten CPU- und GPU-Simulatoren.
Die Verwendung 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 CUDA-Q des Potenzials unerlässlich ist. 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 CUDA-Q auf Amazon Braket Hybrid Jobs unkompliziert. Hybrid Jobs vereinfacht die Verteilung von Schaltkreisabtastungen und beobachtbaren Auswertungen auf mehrere Rechenknoten. Diese nahtlose Parallelisierung der CUDA-Q Workloads ermöglicht es den Benutzern, sich mehr auf die Entwicklung ihrer Workloads zu konzentrieren, anstatt die Infrastruktur für groß angelegte Experimente einzurichten.
Sehen Sie sich zunächst das CUDA-QStarter-Beispiel
Der folgende Codeausschnitt ist ein hello-world
Beispiel für die Ausführung eines CUDA-Q Programms 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 CUDA-Q GPU-Simulator ausführen. Verwenden Sie den Backend-Namen, um einen GPU-Simulator zu aktivieren. nvidia
Das nvidia
Backend arbeitet als CUDA-Q GPU-Simulator. Wählen Sie als Nächstes einen EC2 Amazon-Instance-Typ aus, der eine NVIDIA GPU unterstützt. 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 mitCUDA-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, sodass MPI vor der Ausführung initialisiert und danach finalisiert werden muss.
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. Stellen Sie das Ziel einfach auf eine Amazon Braket-QPU um, z. B. auf die IQM GeräteIonQ, oderRigetti. Der folgende Codeausschnitt veranschaulicht, wie Sie das Ziel für das Gerät festlegen. IQM Garnet 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. Weitere Informationen über CUDA-Q finden Sie in der CUDA-QDokumentation