OpenQASM 문제 해결 - Amazon Braket

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

OpenQASM 문제 해결

이 섹션에서는 OpenQASM 3.0을 사용할 때 오류가 발생할 때 유용할 수 있는 문제 해결 지침을 제공합니다.

명령문 포함 오류

Braket에는 현재 OpenQASM 프로그램에 포함할 표준 게이트 라이브러리 파일이 없습니다. 예를 들어, 다음 예제에서는 파서 오류가 발생합니다.

OPENQASM 3; include "standardlib.inc";

이 코드는 오류 메시지를 생성합니다. No terminal matches '"' in the current parser context, at line 2 col 17.

비연속 오류 qubits

장치 true 기능에서 로 설정된 qubits 장치에서 비연속적인 requiresContiguousQubitIndices 장치를 사용하면 오류가 발생합니다.

시뮬레이터 및 에서 양자 작업을 실행할 때 다음 프로그램이 IonQ 오류를 트리거합니다.

OPENQASM 3; qubit[4] q; h q[0]; cnot q[0], q[2]; cnot q[0], q[3];

이 코드는 오류 메시지를 생성합니다. Device requires contiguous qubits. Qubit register q has unused qubits q[1], q[4].

물리적 qubits 오류와 가상 qubits 오류 혼용

동일한 프로그램에서 물리적인 qubits qubits 것과 가상을 혼합하는 것은 허용되지 않으며 오류가 발생합니다. 다음 코드는 오류를 생성합니다.

OPENQASM 3; qubit[2] q; cnot q[0], $1;

이 코드는 오류 메시지를 생성합니다. [line 4] mixes physical qubits and qubits registers.

동일한 프로그램에서 결과 유형 요청 및 측정 qubits 오류

동일한 프로그램에서 qubits 명시적으로 측정된 결과 유형을 요청하면 오류가 발생합니다. 다음 코드는 오류를 생성합니다.

OPENQASM 3; qubit[2] q; h q[0]; cnot q[0], q[1]; measure q; #pragma braket result expectation x(q[0]) @ z(q[1])

이 코드는 오류 메시지를 생성합니다. Qubits should not be explicitly measured when result types are requested.

클래식 및 qubit 레지스터 제한 초과 오류

클래식 레지스터 하나와 qubit 레지스터 하나만 허용됩니다. 다음 코드는 오류를 생성합니다.

OPENQASM 3; qubit[2] q0; qubit[2] q1;

이 코드는 오류 메시지를 생성합니다. [line 4] cannot declare a qubit register. Only 1 qubit register is supported.

상자 앞에 프래그마 오류가 없으면 축어적인 오류가 발생합니다.

모든 상자 앞에는 축어 프래그마가 와야 합니다. 다음 코드는 오류를 생성합니다.

box{ rx(0.5) $0; }

이 코드는 오류 메시지를 생성합니다. In verbatim boxes, native gates are required. x is not a device native gate.

축어적 상자: 네이티브 게이트 누락 오류

Verbatim 상자에는 네이티브 게이트와 물리적 게이트가 있어야 합니다. qubits 다음 코드는 네이티브 게이트 오류를 생성합니다.

#pragma braket verbatim box{ x $0; }

이 코드는 오류 메시지를 생성합니다. In verbatim boxes, native gates are required. x is not a device native gate.

버바틱 박스 누락 물리적 오류 qubits

축어적 상자에는 물리적인 것이 있어야 합니다. qubits 다음 코드는 누락된 물리적 qubits 오류를 생성합니다.

qubit[2] q; #pragma braket verbatim box{ rx(0.1) q[0]; }

이 코드는 오류 메시지를 생성합니다. Physical qubits are required in verbatim box.

축어적인 프래그마에 “braket” 오류가 없습니다.

축어 프래그마에 “브라켓”을 포함해야 합니다. 다음 코드는 오류를 생성합니다.

#pragma braket verbatim // Correct #pragma verbatim // wrong

이 코드는 오류 메시지를 생성합니다. You must include “braket” in the verbatim pragma

싱글은 인덱싱할 수 qubits 없습니다. 오류

싱글은 qubits 인덱싱할 수 없습니다. 다음 코드는 오류를 생성합니다.

OPENQASM 3; qubit q; h q[0];

이 코드는 오류를 생성합니다. [line 4] single qubit cannot be indexed.

하지만 다음과 같이 단일 qubit 배열을 인덱싱할 수 있습니다.

OPENQASM 3; qubit[1] q; h q[0]; // This is valid

두 qubitsqubit 게이트의 물리적으로 연결되지 않았습니다. 오류

물리적 qubits 장치를 사용하려면 먼저 장치를 확인하여 물리적 qubits 장치를 사용하는지 확인한 device.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubits 다음 device.properties.paradigm.connectivity.connectivityGraph 또는 를 선택하여 연결 그래프를 확인합니다device.properties.paradigm.connectivity.fullyConnected.

OPENQASM 3; cnot $0, $14;

이 코드는 오류 메시지를 생성합니다. [line 3] has disconnected qubits 0 and 14

GetDevice OpenQASM 결과 오류를 반환하지 않습니다.

Braket SDK를 사용할 때 GetDevice 응답에 OpenQASM 결과가 표시되지 않는 경우 AWS_EXECUTION_ENV 환경 변수를 설정하여 사용자 에이전트를 구성해야 할 수 있습니다. Go 및 Java SDK에서 이 작업을 수행하는 방법은 아래 제공된 코드 예제를 참조하십시오.

사용할 때 사용자 에이전트를 구성하도록 AWS_EXECUTION_ENV 환경 변수를 설정하려면: AWS CLI

% export AWS_EXECUTION_ENV="aws-cli BraketSchemas/1.8.0" # Or for single execution % AWS_EXECUTION_ENV="aws-cli BraketSchemas/1.8.0" aws braket <cmd> [options]

Boto3를 사용할 때 사용자 에이전트를 구성하도록 AWS_EXECUTION_ENV 환경 변수를 설정하려면:

import boto3 import botocore client = boto3.client("braket", config=botocore.client.Config(user_agent_extra="BraketSchemas/1.8.0"))

/(SDK v2) 를 사용할 때 사용자 에이전트를 구성하도록 AWS_EXECUTION_ENV 환경 변수를 설정하려면: JavaScript TypeScript

import Braket from 'aws-sdk/clients/braket'; const client = new Braket({ region: 'us-west-2', credentials: AWS_CREDENTIALS, customUserAgent: 'BraketSchemas/1.8.0' });

/(SDK v3) 를 사용할 때 사용자 에이전트를 구성하도록 AWS_EXECUTION_ENV 환경 변수를 설정하려면: JavaScript TypeScript

import { Braket } from '@aws-sdk/client-braket'; const client = new Braket({ region: 'us-west-2', credentials: AWS_CREDENTIALS, customUserAgent: 'BraketSchemas/1.8.0' });

Go SDK를 사용할 때 사용자 에이전트를 구성하도록 AWS_EXECUTION_ENV 환경 변수를 설정하려면:

os.Setenv("AWS_EXECUTION_ENV", "BraketGo BraketSchemas/1.8.0") mySession := session.Must(session.NewSession()) svc := braket.New(mySession)

Java SDK를 사용할 때 사용자 에이전트를 구성하도록 AWS_EXECUTION_ENV 환경 변수를 설정하려면:

ClientConfiguration config = new ClientConfiguration(); config.setUserAgentSuffix("BraketSchemas/1.8.0"); BraketClient braketClient = BraketClientBuilder.standard().withClientConfiguration(config).build();

로컬 시뮬레이터 지원 경고

QPU 또는 온디맨드 시뮬레이터에서는 사용할 수 없는 OpenQASM의 고급 기능을 LocalSimulator 지원합니다. 프로그램에 다음 예와 같이 에만 해당하는 언어 기능이 포함되어 있는 경우 경고 메시지가 표시됩니다. LocalSimulator

qasm_string = """ qubit[2] q; h q[0]; ctrl @ x q[0], q[1]; """ qasm_program = Program(source=qasm_string)

이 코드는 다음과 같은 경고를 생성합니다. `이 프로그램은 에서만 지원되는 OpenQASM 언어 기능을 사용합니다. LocalSimulator 이러한 기능 중 일부는 QPU 또는 온디맨드 시뮬레이터에서 지원되지 않을 수 있습니다.

지원되는 OpenQASM 기능에 대한 자세한 내용은 여기를 클릭하십시오.