기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
OpenQASM 문제 해결
이 섹션에서는 OpenQASM 3.0을 사용할 때 오류가 발생할 때 유용할 수 있는 문제 해결 지침을 제공합니다.
이 섹션:
- 명령문 포함 오류
- 비연속 오류 qubits
- 물리적 qubits 오류와 가상 qubits 오류 혼용
- 동일한 프로그램에서 결과 유형 요청 및 측정 qubits 오류
- 클래식 및 qubit 레지스터 제한 초과 오류
- 상자 앞에 프래그마 오류가 없으면 축어적인 오류가 발생합니다.
- 축어적 상자: 네이티브 게이트 누락 오류
- 버바틱 박스 누락 물리적 오류 qubits
- 축어적인 프래그마에 “braket” 오류가 없습니다.
- 싱글은 인덱싱할 수 qubits 없습니다. 오류
- 두 qubitsqubit 게이트의 물리적으로 연결되지 않았습니다. 오류
- GetDevice OpenQASM 결과 오류를 반환하지 않습니다.
- 로컬 시뮬레이터 지원 경고
명령문 포함 오류
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 기능에 대한 자세한 내용은 여기를 클릭하십시오.