创建并提交示例 OpenQASM 3.0 量子任务 - Amazon Braket

创建并提交示例 OpenQASM 3.0 量子任务

您可以使用 Amazon Braket Python SDK、Boto3 或 AWS CLI 向 Amazon Braket 设备提交 OpenQASM 3.0 量子任务。

一个 OpenQASM 3.0 程序示例

要创建 OpenQASM 3.0 任务,您可以从一个基本的 OpenQASM 3.0 程序 (ghz.qasm) 开始,该程序准备 GHZ 状态,如以下示例所示。

// ghz.qasm // Prepare a GHZ state OPENQASM 3; qubit[3] q; bit[3] c; h q[0]; cnot q[0], q[1]; cnot q[1], q[2]; c = measure q;

使用 Python SDK 创建 OpenQASM 3.0 量子任务

您可以使用以下代码及 Amazon Braket Python SDK 将此程序提交到 Amazon Braket 设备。请务必将 Amazon S3 存储桶位置“amzn-s3-demo-bucket”替换为您自己的 Amazon S3 存储桶名称。

with open("ghz.qasm", "r") as ghz: ghz_qasm_string = ghz.read() # Import the device module from braket.aws import AwsDevice # Choose the Rigetti device device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3") from braket.ir.openqasm import Program program = Program(source=ghz_qasm_string) my_task = device.run(program) # Specify an optional s3 bucket location and number of shots s3_location = ("amzn-s3-demo-bucket", "openqasm-tasks") my_task = device.run( program, s3_location, shots=100, )

使用 Boto3 创建 OpenQASM 3.0 量子任务

您还可以使用 AWS 适用于 Braket 的 Python SDK(Boto3),利用 OpenQASM 3.0 字符串创建量子任务,如以下示例所示。以下代码片段引用了 ghz.qasm,它准备了 GHZ 状态,如上所示。

import boto3 import json my_bucket = "amzn-s3-demo-bucket" s3_prefix = "openqasm-tasks" with open("ghz.qasm") as f: source = f.read() action = { "braketSchemaHeader": { "name": "braket.ir.openqasm.program", "version": "1" }, "source": source } device_parameters = {} device_arn = "arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3" shots = 100 braket_client = boto3.client('braket', region_name='us-west-1') rsp = braket_client.create_quantum_task( action=json.dumps( action ), deviceParameters=json.dumps( device_parameters ), deviceArn=device_arn, shots=shots, outputS3Bucket=my_bucket, outputS3KeyPrefix=s3_prefix, )

使用 AWS CLI 创建 OpenQASM 3.0 任务

AWS Command Line Interface(CLI)也可用于提交 OpenQASM 3.0 程序,如以下示例所示。

aws braket create-quantum-task \ --region "us-west-1" \ --device-arn "arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3" \ --shots 100 \ --output-s3-bucket "amzn-s3-demo-bucket" \ --output-s3-key-prefix "openqasm-tasks" \ --action '{ "braketSchemaHeader": { "name": "braket.ir.openqasm.program", "version": "1" }, "source": $(cat ghz.qasm) }'