qiskit.transpiler.generate_preset_clifford_t_pass_manager
qiskit.transpiler.generate_preset_clifford_t_pass_manager(optimization_level=2, target=None, basis_gates=None, coupling_map=None, initial_layout=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, dt=None, qubits_initially_zero=True, rz_synthesis_config=None)
StagedPassManagerClifford+T 프리셋을 생성합니다.
이 함수는 Clifford+T 컴파일을 위한 사전 설정된 패스 관리자를 생성하는 편리한 방법을 제공합니다. Clifford+T 기저를 사용하는 transpile() 또는 generate_preset_pass_manager() 대신 이 함수를 사용하는 것을 권장합니다. 이 함수는 Clifford+T 컴파일링에 특별히 맞춤화된 인수를 제공하기 때문입니다.
패스 매니저 생성을 위한 대상 제약 조건은 인스턴스를 Target 통해, 또는 느슨한 제약 조건(basis_gates, coupling_map, 또는 dt)을 통해 지정할 수 있습니다.
basis_gates기저 게이트가 지정되지 않은 경우(를 통해서도, 를 target 통해서도 지정되지 않은 경우), 기저 게이트는 기본적으로 Qiskit에 포함된 모든 클리포드+T 게이트로 설정됩니다. 단, 베이스 게이트가 지정되었으나 클리포드+T 기저를 나타내지 않는 경우 오류가 발생한다는 점에 유의하십시오.
예제
간단한 Clifford+T 패스 관리자를 생성하고 사용하는 방법:
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import generate_preset_clifford_t_pass_manager
qc = QuantumCircuit(1)
qc.rz(2.3579, 0)
pm = generate_preset_clifford_t_pass_manager()
qct = pm.run(qc)다양한 옵션을 설정할 수 있습니다. 자세한 내용은 인자 설명서를 참조하십시오:
rz_synthesis_config = {
"rz_synthesis_error": 1e-4,
"rz_cache_error": 1e-5,
}
basis_gates = ["cx", "s", "sdg", "h", "t", "tdg"]
pm = generate_preset_clifford_t_pass_manager(
rz_synthesis_config=rz_synthesis_config,
basis_gates=basis_gates,
optimization_level=3,
)매개변수
-
optimization_level (int) – 를
StagedPassManager생성하기 위한 최적화 수준. 이 설정이 지정되지 않은 경우, 기본적으로 최적화 수준 2가 사용됩니다. 이 값은 0, 1, 2 또는 3일 수 있습니다. 레벨이 높을수록 잠재적으로 더 최적화된 회로가 생성되지만, 그 대가로 트랜스파일링 시간이 더 길어질 수 있습니다. -
Targettarget (Target | None) – 컴파일 대상을 나타내는. 다음 속성들은 설정되지 않은 경우 이 인자에서 추론됩니다:coupling_map및basis_gates. -
'tdg'``Nonebasis_gates (list[str] | None) – 언롤링할 기본 게이트 이름 목록 (예:['cx', 's', 'sx', 't', 'tdg']). 와basis_gates가 모두target인 경우,basis_gates는 및 을't'포함한 모든 표준 클리포드 게이트로 설정됩니다. -
coupling_map (CouplingMap |list | None) –
유향 그래프는 결합 매핑을 나타냈다. 다음과 같은 다양한 형식을 지원합니다:
CouplingMap인스턴스- 목록은 인접 행렬의 형태로 제공되어야 하며, 각 요소는 백엔드에서 지원하는 모든 방향성 2-큐비트 상호작용을 명시해야 합니다. 예:
[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
-
dt (float | None) – 목표 샘플 시간(분해능) (단위: 초). (기본값)인 경우
None,target.dt대상이 지정되면 가 사용됩니다. -
initial_layout (Layout |list[int]) – 물리적 큐비트 상의 가상 큐비트의 초기 위치.
-
approximation_degree (float | None) – 회로 근사화에 사용되는 휴리스틱 다이얼로, 는
1.0(수치적 오차 범위 내에서) 근사화를 하지 않음을,0.0는 최대 근사화를 의미합니다. 가 사용 가능한 경우target, 의None값은 대상의 연산에 대해 보고된 오류율 범위 내에서 근사 처리가 허용됨을 나타냅니다. -
seed_transpiler (int | None) – 트랜스파일러의 확률적 부분에 대한 난수 시드를 설정합니다. 여기에 명시되어 있지 않은 경우,
QISKIT_TRANSPILER_SEED환경 변수를 통해 지정하거나 사용자 설정 파일에서 지정할 수도 있습니다. 우선순위 순서는 다음과 같습니다: 이 인자, 그 다음 환경 변수, 마지막으로 사용자 설정 옵션입니다. 따라서 이 인수를 설정하면 시드를 설정하는 다른 방법들보다 우선 적용됩니다. -
unitary_synthesis_method (str) – 사용할 단일 합성 방법의 이름. 기본적으로
'default'가 사용됩니다.unitary_synthesis_plugin_names().을 사용하면 설치된 플러그인 목록을 확인할 수 있습니다. -
unitary_synthesis_plugin_config (dict | None) – 단일 합성 플러그인에 직접 전달될 선택적 구성 사전입니다. 기본적으로 이 설정은 아무런 영향을 미치지 않습니다. 기본 단일 합성 방식은 사용자 지정 구성을 지원하지 않기 때문입니다. 이는 인수를
unitary_synthesis_method사용하여 단일 합성 플러그인이 지정된 경우에만 필요합니다. 이 옵션은 각 단일 합성 플러그인마다 설정이 다르므로, 이 옵션을 사용하는 방법에 대해서는 해당 플러그인의 설명서를 참조하십시오. -
hls_config (HLSConfig | None) – 변환 단계에
HighLevelSynthesis직접 전달될 선택적 구성 클래스입니다HLSConfig. 이 구성 클래스를 사용하면 다양한 상위 수준 객체에 대해 합성 알고리즘 목록과 해당 매개변수를 지정할 수 있습니다. -
qubits_initially_zero (bool) – 입력 회로가 0으로 초기화되었는지 여부를 나타냅니다.
-
rz_synthesis_config (dict | None) – pass에
SynthesizeRZRotations사용할 수 있는 선택적 구성 클래스입니다. 회로에서 RZ 회전을 어떻게 합성할지 지정합니다.
리턴
지정된 옵션에 대한 사전 설정 패스 관리자입니다.
리턴 유형
인상
- TranspilerError – Clifford+T 이외의 기저가 지정된 경우.
- ValueError – 에
optimization_level대해 유효하지 않은 값이 전달된 경우.