

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

# 使用参数化编译加快混合作业的速度
<a name="braket-jobs-parametric-compilation"></a>

 Amazon Braket 在某些方面支持参数化编译。 QPUs这样，您可以仅编译一次电路，而不是为混合算法中的每次迭代编译一次，从而减少与计算成本高昂的编译步骤相关的开销。这样可以明显缩短 Hybrid Jobs 的运行时，因为您无需在每一步都重新编译电路。只需将参数化电路提交给我们支持的 Braket Hybrid QPUs Job 即可。对于长时间运行的混合作业，Braket 在编译电路时会自动使用硬件提供商提供的最新校准数据，以确保获得最高质量的结果。

要创建参数化电路，首先需要在算法脚本中提供参数作为输入。在该例子中，我们使用了一个小型参数化电路，忽略了每次迭代之间的任何经典处理。对于典型的工作负载，您需要批量提交许多电路并执行经典处理，例如在每次迭代中更新参数。

```
import os

from braket.aws import AwsDevice
from braket.circuits import Circuit, FreeParameter

def start_here():

    print("Test job started.")

    # Use the device declared in the job script
    device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"])

    circuit = Circuit().rx(0, FreeParameter("theta"))
    parameter_list = [0.1, 0.2, 0.3]
    
    for parameter in parameter_list:
        result = device.run(circuit, shots=1000, inputs={"theta": parameter})

    print("Test job completed.")
```

您可以使用以下作业脚本提交算法脚本以混合作业形式运行。在支持参数化编译的 QPU 上运行 Hybrid Jobs 时，仅在第一次运行时才编译电路。在接下来的运行中，重复使用编译后的电路，无需任何额外的代码行即可提高 Hybrid Jobs 的运行时性能。

```
from braket.aws import AwsQuantumJob

job = AwsQuantumJob.create(
    device=device_arn,
    source_module="algorithm_script.py",
)
```

**注意**  
除脉冲电平程序外，所有基于门的 QPUs 超导模式都支持参数化编译。Rigetti Computing