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 오류

디바이스 기능에서 requiresContiguousQubitIndicestrue로 설정된 디바이스에서 비연속 qubits를 사용하면 오류가 발생합니다.

시뮬레이터 및 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.

상자 앞에 축어적 pragma 없음 오류

모든 상자 앞에 축어적 pragma를 붙여야 합니다. 다음 코드는 오류를 생성합니다.

box{ rx(0.5) $0; }

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

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

축어적 상자에는 네이티브 게이트와 물리적 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.

축어적 pragma에 “브래킷” 누락 오류

축어적 pragma에 “브래킷”을 포함해야 합니다. 다음 코드는 오류를 생성합니다.

#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

두 qubit 게이트의 물리적 qubits가 연결되지 않음 오류

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

OPENQASM 3; cnot $0, $14;

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

로컬 시뮬레이터 지원 경고

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

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

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

지원되는 OpenQASM 기능에 대한 자세한 내용은 로컬 시뮬레이터에서의 OpenQASM에 대한 고급 기능 지원 페이지를 참조하세요.