选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在 Amazon Braket 上使用 CUDA-Q

聚焦模式
在 Amazon Braket 上使用 CUDA-Q - Amazon Braket

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

NVIDIA’s CUDA-Q 是一个软件库,专为编程组合了 CPUs GPUs、和量子处理单元 (QPUs) 的混合量子算法而设计。它提供了统一的编程模型,允许开发人员在单个程序中表达经典指令和量子指令,从而简化工作流程。CUDA-Q 利用其内置 CPU 和 GPU 模拟器加速量子程序仿真和运行时间。

使用 CUDA-Q 在 Amazon Braket 上,Hybrid Jobs 提供了灵活的按需计算环境。计算实例仅在您的工作负载持续时间内运行,确保您只需为实际用量付费。Amazon Braket Hybrid Jobs 还提供了可扩展的体验。用户可以从较小的实例开始进行原型设计和测试,然后扩展到能够处理更多工作负载以进行完整实验的大型实例。

Amazon Braket 混合工作支持对于最大限度 GPUs 地发挥作用至关重要 CUDA-Q的潜力。 GPUs 与基于 CPU 的模拟器相比,可显著加快量子程序仿真速度,尤其是在使用高量子比特数电路时。使用时并行化变得直截了当 CUDA-Q 在 Amazon Braket Hybrid Jobs 上。Hybrid Jobs 简化了电路采样和可观察评估在多个计算节点上的分布。这种无缝并行化 CUDA-Q 工作负载允许用户将更多精力放在开发工作负载上,而不是为大规模实验设置基础架构。

要开始使用,请参阅 CUDA-Q Amazon Braket 上的入门示例 Github 示例创建支持任务容器 CUDA-Q 通过自带集装箱 (BYOC)。确保您拥有相应的 IAM 权限来构建和发布您的 CUDA-Q Amazon ECR 存储库的容器。

以下代码片段是运行的hello-world示例 CUDA-Q 与 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

上面的示例模拟了 CPU 仿真器上的贝尔电路。此示例在您的笔记本电脑或 Braket Jupyter 笔记本电脑上本地运行。由于local=True设置的原因,当您运行此脚本时,将在您的本地环境中启动一个容器来运行 CUDA-Q 程序进行测试和调试。完成测试后,您可以移除该local=True标志并运行您的作业 AWS。要了解更多信息,请参阅 Amazon Braket 混合作业入门

如果您的工作负载具有较高的量子比特数、大量的电路或大量的迭代,则可以通过指定设置来使用更强大的 CPU 计算资源。instance_config以下代码片段显示了如何在hybrid_job装饰器中配置instance_config设置。有关支持的实例类型的更多信息,请参阅配置混合作业实例以运行您的脚本。有关实例类型的列表,请参阅 Amazon EC2 实例类型

@hybrid_job( device="local:nvidia/qpp-cpu", image_uri=image_uri, instance_config=InstanceConfig(instanceType="ml.c5.2xlarge"), ) def my_job_script(): ...

对于要求更高的工作负载,您可以将工作负载运行在 CUDA-Q GPU 模拟器。要启用 GPU 模拟器,请使用后端名称nvidia。后nvidia端的运行方式是 CUDA-Q GPU 模拟器。接下来,选择支持的 Amazon EC2 实例类型 NVIDIA GPU。以下代码片段显示了 GPU 配置的装饰器hybrid_job

@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 支持并行 GPU 模拟 CUDA-Q。 您可以并行计算多个可观测值或多个电路,以提高工作负载的性能。要并行化多个可观察对象,请对算法脚本进行以下更改。

设置后nvidia端的mgpu选项。这是并行化可观察对象所必需的。并行化使用 MPI 进行相互通信 GPUs,因此 MPI 需要在执行前初始化,并在执行之后完成。

接下来,通过设置指定执行模式execution=cudaq.parallel.mpi。以下代码片段显示了这些更改。

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

hybrid_job装饰器中指定托管多个实例类型, GPUs 如以下代码片段所示。

@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): ...

Github 上的 Amazon Braket 示例中的并行仿真笔记本 end-to-end提供了演示如何在 GPU 后端运行量子程序仿真以及如何对可观测物和电路批量进行并行仿真的示例。

在量子计算机上运行工作负载

完成模拟器测试后,您可以过渡到在上运行实验 QPUs。只需将目标切换到 Amazon Braket QPU 即可,比如 IQM, IonQ,或 Rigetti 设备。以下代码片段说明了如何将目标设置为 IQM Garnet 设备。有关可用列表 QPUs,请参阅 Amazon Braket 控制台

device_arn = "arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet" cudaq.set_target("braket", machine=device_arn)

有关 Amazon Braket 混合任务的更多信息,请参阅开发者指南中的使用 Amazon Braket 混合任务。了解相关更多信息 CUDA-Q,请参阅 CUDA-Q 文档

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。