주 콘텐츠로 건너뛰기

작업 제한

IBM® QPU에 작업을 전송하면, 먼저 작업 유효성 검사 서비스로 전달됩니다. 이 서비스는 작업이 큐를 통과한 후 실패하는 것을 기다리지 않아도 되도록, 해당 작업이 QPU에서 실행 가능한지 확인하려 합니다. 이러한 검사에는 아래에 설명된 제한 사항의 적용이 포함됩니다. 이 제한 사항이 초과되면, 해당 워크로드는 양자 소프트웨어 스택에서 처리할 수 없으며 일반적으로 실패합니다.

참고 사항
  • 특정 기본 옵션은 Circuit 크기를 증가시킵니다. 설명된 제한 사항은 Circuit 크기의 예상 증가 이후에 확인됩니다. 특히 다음 옵션들이 Circuit 크기를 증가시킵니다:
    • 동적 디커플링(Dynamical decoupling) 및 게이트 폴딩 ZNE는 Qubit당 최대 저수준 명령어 수 제한의 명령어에 포함되는 추가 Gate를 도입합니다.
    • 게이트 폴딩 ZNE는 작업당 최대 2-Qubit Gate 수 제한과 관련된 추가 2-Qubit Gate를 도입합니다. 2-Qubit Gate 수는 게이트 폴딩 ZNE에서 요청된 노이즈 계수의 합에 곱해집니다.
  • backend.configuration() 필드인 max_shotsmax_experiments에서 보고되는 제한 사항은 더 이상 유효하지 않으며 적용되지 않습니다. 이 필드들은 가까운 시일 내에 제거될 예정입니다.
  • 이 제한 사항은 Primitive Unified Bloc(PUB) 단위가 아닌 작업 단위입니다.

최대 실행 횟수

Sampler 작업의 경우 최대 1,000만 회 실행이 허용됩니다(Estimator 작업은 더 작은 하위 작업으로 분할될 수 있으므로 이 제한이 적용되지 않습니다). 실행 횟수는 PUB 요소가 브로드캐스트된 후 생성된 Circuit의 수에 샷(shot) 수를 곱한 값입니다.

예를 들어, 하나의 Circuit과 형태가 (4, 1)인 파라미터를 가진 PUB가 있으면 4개의 Circuit이 생성됩니다. 2,000 샷을 요청한 경우, 총 실행 횟수는 4×2,000=8,0004 \times 2,000 = 8,000입니다.

Sampler 작업에서 Pauli-twirling을 활성화하면, 총 샷 수는 num_randomizationsshots_per_randomization 값을 기반으로 합니다. 자세한 내용은 TwirlingOptions를 참조하세요.

Qubit당 최대 저수준 명령어 수

서비스는 Qubit당 최대 2,680만 개의 제어 시스템 명령어를 허용합니다. 이는 사용자 Circuit이 제어 시스템의 명령어 메모리 내에 맞도록 보장합니다. 아래 예시는 Circuit을 트랜스파일(transpile)하고 각 명령어의 수를 계산하는 방법을 보여줍니다.

다음 표는 이 제한을 계산할 때 시스템이 명령어 세트 아키텍처(ISA) Circuit 명령어를 제어 시스템 명령어로 변환하는 방법을 설명합니다.

명령어
rz1
delay1
sx2
x2
cx5
cz5
ecr5
measure10
reset17
init50
참고

이 표는 유효성 검사에 사용되는 휴리스틱을 나타내며, 연산을 구현하는 데 사용되는 정확한 명령어 수를 반영하지 않습니다.

예시

Circuit을 정의하고 트랜스파일한 후, 실행될 Gate의 수를 계산합니다.

from qiskit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService

num_qubits = 50
ghz = QuantumCircuit(num_qubits)
ghz.h(range(num_qubits))
ghz.cx(0, range(1, num_qubits))
op_counts = ghz.count_ops()

# Choose the least busy backend
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

pm = generate_preset_pass_manager(optimization_level=3, backend=backend)
transpiled_ghz = pm.run(ghz)
op_counts = transpiled_ghz.count_ops()

print(f"Post-Transpilation gates: {op_counts}")

전체 내용은 사용자 정의 Backend에 대한 트랜스파일.을 참조하세요.

Circuit당 최대 단일- 및 2-Qubit Gate 수

단일-Qubit Gate의 최대 수는 다음과 같습니다:

  • RZ Gate: 3,000만 개
  • SX Gate: 2,000만 개

Circuit당 최대 2-Qubit Gate 수는 500만 개입니다. 이는 작업이 저수준 소프트웨어 스택의 메모리 제한 내에서 처리될 수 있도록 보장합니다.