

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用參數編譯來加速混合式任務
<a name="braket-jobs-parametric-compilation"></a>

 Amazon Braket 支援特定 QPUs上的參數編譯。這可讓您只編譯電路一次，而不是混合演算法中的每次反覆運算，以減少與運算昂貴編譯步驟相關的額外負荷。這可以大幅改善混合任務的執行時間，因為您不必在每個步驟重新編譯電路。只需將參數化電路提交到我們支援的其中一個 QPUs 做為 Braket 混合任務。對於長時間執行的混合任務，Raket 會在編譯電路時自動使用硬體提供者的更新校正資料，以確保最高品質的結果。

若要建立參數電路，您必須先在演算法指令碼中提供參數做為輸入。在此範例中，我們使用小型參數電路，並忽略每次反覆運算之間的任何傳統處理。對於典型工作負載，您可以批次提交許多電路，並執行傳統處理，例如更新每個反覆運算中的參數。

```
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 上執行混合任務時，只會在第一次執行時編譯電路。在下列執行中，會重複使用編譯的電路，增加混合任務的執行時間效能，而不需要任何額外的程式碼行。

```
from braket.aws import AwsQuantumJob

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

**注意**  
除了脈衝層級程式Rigetti Computing之外， 的所有超執行、以閘道為基礎的 QPUs都支援參數編譯。