

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 예제 OpenQASM 3.0 양자 작업 생성 및 제출
<a name="braket-openqasm-create-submit-task"></a>

Amazon Braket Python SDK, Boto3 또는를 사용하여 Amazon Braket 디바이스 AWS CLI 에 OpenQASM 3.0 양자 작업을 제출할 수 있습니다.

**Topics**
+ [OpenQASM 3.0 프로그램 예제](#braket-openqasm-example-program)
+ [Python SDK를 사용하여 OpenQASM 3.0 양자 작업 생성](#braket-openqasm-create-tasks-with-python-sdk)
+ [Boto3을 사용하여 OpenQASM 3.0 양자 작업 생성](#braket-openqasm-create-tasks-with-boto3)
+ [AWS CLI 를 사용하여 OpenQASM 3.0 작업 생성](#braket-openqasm-create-tasks-with-aws-cli)

## OpenQASM 3.0 프로그램 예제
<a name="braket-openqasm-example-program"></a>

OpenQASM 3.0 작업을 생성하려면, 다음 예제와 같이 [GHZ 상태](https://en.wikipedia.org/wiki/Greenberger%E2%80%93Horne%E2%80%93Zeilinger_state)를 준비하는 기본 OpenQASM 3.0 프로그램(ghz.qasm)으로 시작할 수 있습니다.

```
// 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 양자 작업 생성
<a name="braket-openqasm-create-tasks-with-python-sdk"></a>

[Amazon Braket Python SDK](https://github.com/aws/amazon-braket-sdk-python)를 사용하여 다음 코드로 이 프로그램을 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 양자 작업 생성
<a name="braket-openqasm-create-tasks-with-boto3"></a>

다음 예제와 같이 [AWS Python SDK for Braket(Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/braket.html)을 사용하여 OpenQASM 3.0 문자열을 이용해 양자 작업을 생성할 수도 있습니다. 다음 코드 조각은 위에서와 같이 [GHZ 상태](https://en.wikipedia.org/wiki/Greenberger%E2%80%93Horne%E2%80%93Zeilinger_state)를 준비하는 ghz.qasm을 참조합니다.

```
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 작업 생성
<a name="braket-openqasm-create-tasks-with-aws-cli"></a>

다음 예제와 같이 [AWS Command Line Interface (CLI)](https://aws.amazon.com/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)
    }'
```