사전 설정된 패스매니저
qiskit.transpiler.preset_passmanagers
이 모듈에는 트랜스파일러용 프리셋 패스 관리자를 생성하는 함수들이 포함되어 있습니다. 사전 설정된 패스 관리자는 의 StagedPassManager 인스턴스로, Qiskit 컴파일러의 일부로서 함수 transpile() 내부의 다양한 최적화 단계에서 회로 변환을 실행하는 데 사용되지만, 독립적으로도 사용할 수 있습니다. 이 기능의 구성은 두 부분으로 나뉩니다. 첫 번째에는 ( 저수준 프리셋 패스 매니저 생성 )에서 transpile() 사용되는 전체 패스 매니저를 생성하는 데 쓰이는 함수들이 포함되어 있으며, 두 번째에는 프리셋 패스 매니저를 구성하는 스테이지를 (전체 또는 일부) 구축하는 데 사용되는 함수들이 포함되어 있습니다 ( 스테이지 생성 함수 ).
저수준 프리셋 패스 관리자 생성
연속 기저 집합
level_0_pass_manager
qiskit.transpiler.preset_passmanagers.level_0_pass_manager(pass_manager_config)
레벨 0 패스 관리자: 백엔드에 매핑하는 것 외에는 명시적인 최적화가 없습니다.
이 패스 관리자는 사용자가 제공한 초기 레이아웃을 적용합니다. 아무것도 지정되지 않으면, i 번째 가상 큐비트를 i 번째 물리적 큐비트에 매핑하는 간단한 레이아웃이 사용됩니다. 사용되지 않는 물리적 큐비트는 앤실라 공간으로 할당됩니다.
그런 다음 패스 관리자는 회로를 원하는 기준으로 언롤링하고 커플링 맵에 맞게 회로를 변환합니다.
매개변수
pass_manager_config (PassManagerConfig) – 패스 관리자의 구성.
리턴
레벨 0 패스 관리자입니다.
레이즈
TranspilerError - 패스매니저 구성이 유효하지 않은 경우.
리턴 유형
level_1_pass_manager
qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)
레벨 1 패스 매니저: 간단한 인접 게이트 접힘을 통한 조명 최적화.
이 패스 관리자는 사용자가 제공한 초기 레이아웃을 적용합니다. 아무것도 지정되지 않았고 사소한 레이아웃(i 번째 가상 -> i 번째 물리적)이 커플링 맵에 맞는 회로를 만드는 경우, 이 레이아웃이 사용됩니다. 그렇지 않으면 회로는 가장 조밀하게 연결된 커플링 하위 그래프에 매핑되고 스왑이 삽입되어 매핑됩니다. 사용되지 않는 물리적 큐비트는 앤실라 공간으로 할당됩니다. 그런 다음 패스 관리자는 회로를 원하는 기준으로 언롤링하고 커플링 맵에 맞게 회로를 변환합니다. 마지막으로 인접 게이트 붕괴 및 중복 리셋 제거의 형태로 최적화가 수행됩니다.
매개변수
pass_manager_config (PassManagerConfig) – 패스 관리자의 구성.
리턴
레벨 1 패스 관리자.
레이즈
TranspilerError - 패스매니저 구성이 유효하지 않은 경우.
리턴 유형
level_2_pass_manager
qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)
레벨 2 패스 관리자: 초기 레이아웃 선택 및 정류성 규칙을 사용한 게이트 취소를 통한 중간 최적화.
이 패스 관리자는 사용자가 제공한 초기 레이아웃을 적용합니다. 아무것도 주어지지 않으면 완벽한 레이아웃(즉, 모든 2쿼비트 상호작용을 만족하는 레이아웃)을 찾습니다. 이러한 레이아웃을 찾을 수 없는 경우, 큐비트는 가장 조밀하게 연결된 하위 집합에 배치되며, 이는 또한 최고의 게이트 충실도를 나타냅니다.
그런 다음 패스 관리자가 커플링 제약 조건에 맞게 회로를 변환합니다. 그런 다음 기본으로 펼쳐지고 뒤집힌 CX 방향이 고정됩니다. 마지막으로 정류 게이트 제거 및 중복 리셋 제거 형태의 최적화가 수행됩니다.
매개변수
pass_manager_config (PassManagerConfig) – 패스 관리자의 구성.
리턴
레벨 2 패스 관리자입니다.
레이즈
TranspilerError - 패스매니저 구성이 유효하지 않은 경우.
리턴 유형
level_3_pass_manager
qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)
레벨 3 패스 매니저: 노이즈 적응형 큐비트 매핑과 공진성 규칙 및 단일 합성을 사용한 게이트 제거를 통한 강력한 최적화.
이 패스 관리자는 사용자가 제공한 초기 레이아웃을 적용합니다. 아무것도 주어지지 않으면 완벽한 레이아웃(즉, 모든 2쿼비트 상호작용을 만족하는 레이아웃)을 찾습니다. 이러한 레이아웃을 찾을 수 없고 디바이스 캘리브레이션 정보를 사용할 수 있는 경우, 회로는 최상의 판독값을 가진 큐비트와 가장 높은 충실도를 가진 CX 게이트에 매핑됩니다.
그런 다음 패스 관리자가 커플링 제약 조건에 맞게 회로를 변환합니다. 그런 다음 기본으로 펼쳐지고 뒤집힌 CX 방향이 고정됩니다. 마지막으로 정류 게이트 제거, 2큐비트 단일 블록 재합성, 중복 리셋 제거, 최종 레이아웃 개선 등의 형태로 최적화가 수행됩니다.
매개변수
pass_manager_config (PassManagerConfig) – 패스 관리자의 구성.
리턴
레벨 3 패스 관리자입니다.
레이즈
TranspilerError - 패스매니저 구성이 유효하지 않은 경우.
리턴 유형
Clifford+T 기저 집합
clifford_t_pass_manager
qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)
Clifford+T 기저로 변환하기 위한 단계별 패스 관리자를 생성합니다.
이 함수는 대상 기저가 클리포드+T 게이트로 구성될 때 호출됩니다 generate_preset_pass_manager() . 다음 단계들로 구성된 전용 트랜스파일레이션 파이프라인을 생성합니다:
- 초기화: 큰 게이트를 1-큐비트 및 2-큐비트 게이트로 분해하고 논리적 최적화를 수행합니다.
- 레이아웃: 연속 기저 집합에 사용되는 기본 레이아웃 전략을 적용합니다.
- 라우팅: 연속 기저 집합에 사용되는 기본 라우팅 전략을 적용합니다.
- RZ 변환: 회로를 클리포드+RZ 기저로 변환하십시오.
- RZ 최적화: 클리포드+RZ 기저 내에서 회로를 최적화합니다.
- T 변환: 회로를 클리포드+T 기저로 변환하십시오.
- T 최적화: 클리포드+T 기저 내에서 회로를 최적화합니다.
- 스케줄링: 연속 베이스셋에 사용되는 기본 스케줄링 전략을 적용합니다.
최상의 결과를 얻으려면, 지정된 Clifford+T 기저에 와 를 모두 포함하고, 가능한 한 많은 클리포드 게이트를 포함하는 것을 고려해 보십시오. 예를 들어,
basis_gates = get_clifford_gate_names() + ["t", "tdg"]이러한 단계들은 아직 실험 단계에 있으며 변경될 수 있습니다. 특히, 이 플러그인들은 (연속 베이스 세트 단계와 달리) 아직 트랜스파일러 단계 플러그인으로 노출되지 않고 있습니다.
매개변수
- pass_manager_config (PassManagerCliffordTConfig) – 패스 관리자 구성.
- optimization_level (int) – 최적화 수준. 별도로 지정하지 않으면 기본적으로 최적화 수준 2가 사용됩니다. 이 값은 0, 1, 2 또는 3일 수 있습니다. 수준이 높을수록 더 최적화된 회로를 생성할 가능성이 있지만, 그 대가로 트랜스파일링 시간이 더 오래 걸립니다.
리턴
단계별 패스 관리자.
레이즈
TranspilerError - 패스매니저 구성이 유효하지 않은 경우.
리턴 유형
스테이지 생성기 함수
generate_control_flow_options_check
qiskit.transpiler.preset_passmanagers.generate_control_flow_options_check(layout_method=None, routing_method=None, translation_method=None, optimization_method=None, scheduling_method=None, basis_gates=(), target=None)
제어 흐름이 포함된 DAG에서 실행할 때 잘못된 옵션과 대신 사용할 수 있는 옵션을 설명하는 오류 메시지와 함께 실패하는 전달 관리자를 생성합니다.
리턴
각 제어 흐름 연산에 대해 contains_x 속성을 채우고 주어진 옵션 중 제어 흐름을 지원하지 않는 옵션이 있지만 제어 흐름이 있는 회로가 주어지면 오류를 발생시키는 전달 관리자입니다.
리턴 유형
generate_error_on_control_flow
qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)
주어진 회로에 제어 흐름이 있는 경우 항상 오류를 발생시키는 패스 관리자를 가져옵니다.
generate_unroll_3q
qiskit.transpiler.preset_passmanagers.generate_unroll_3q(target, basis_gates=None, approximation_degree=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True, optimization_metric=OptimizationMetric.COUNT_2Q)
3q 의 언롤 생성
PassManager
매개변수
- target (Target | None) – 백엔드를 나타내는 객체
Target - basis_gates (list[str] | None) – 백엔드 대상에서 기본 게이트를 나타내는 str 게이트 이름 목록입니다.
- approximation_degree (float | None) – 회로 근사화에 사용되는 휴리스틱 다이얼로, 는
1.0(수치적 오차 범위 내에서) 근사화를 하지 않음을,0.0는 최대 근사화를 의미합니다. 가 사용 가능한 경우target, 의None값은 대상의 연산에 대해 보고된 오류율 범위 내에서 근사 처리가 허용됨을 나타냅니다. - unitary_synthesis_method (str) – 사용할 단일 합성법.
unitary_synthesis_plugin_names().을 사용하면 설치된 플러그인 목록을 확인할 수 있습니다. - unitary_synthesis_plugin_config (dict | None) – 선택적 사전 플러그인 구성은 해당 플러그인마다 다르므로, 사용 방법에 대해서는 지정된 플러그인의 설명서를 참조하십시오.
- hls_config (HLSConfig | None) – pass에
HighLevelSynthesis사용할 수 있는 선택적 구성 클래스입니다. 다양한 고수준 객체를 합성하는 방법을 명시합니다. - qubits_initially_zero (bool) – 입력 회로가 영 초기화되었는지 여부를 나타냅니다.
- optimization_metric (OptimizationMetric) – 언롤링을 최적화할 때 사용되는 메트릭을 정의하는 객체
OptimizationMetric.
리턴
언롤 3q 이상 패스 관리자
리턴 유형
generate_embed_passmanager
qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)
레이아웃 임베딩 생성 PassManager
이는 회로에 초기 레이아웃을 확장하고 적용하는 데 사용할 수 있는 객체를 PassManager 생성하는 데 사용됩니다
매개변수
coupling_map (Union[CouplingMap, Target]) – 회로를 삽입할 백엔드에 대한 매핑 정보.
리턴
레이아웃 속성을 가정하는 임베딩 패스 관리자
세트가 이전 단계에 설정되었습니다
리턴 유형
generate_routing_passmanager
qiskit.transpiler.preset_passmanagers.generate_routing_passmanager(routing_pass, target, coupling_map=None, vf2_call_limit=None, seed_transpiler=-1, check_trivial=False, use_barrier_before_measurement=True, vf2_max_trials=None)
경로 생성 PassManager
매개변수
- routing_pass (TransformationPass) – 라우팅을 수행할 패스
- target (Target) – 백엔드를 나타내는 객체
Target - coupling_map (CouplingMap) – 다음 경로로 라우팅하기 위한 백엔드의 매핑
- vf2_call_limit (int) – vf2 포스트 레이아웃 패스에 대한 내부 호출 제한입니다.
None또는0인 경우 vf2 게시물 레이아웃이 실행되지 않습니다. - seed_transpiler (int) – 트랜스파일러의 확률적 부분에 대한 난수 시드를 설정합니다. 현재 이 기능은 에만 사용되며
VF2PostLayout, 의 기본값(무작위 배정 없음)을-1사용하는 것이 강력히 권장됩니다. 값이None지정된 경우, 시스템 엔트로피를 시드 값으로 사용합니다. - check_trivial (bool) – 이 값을 true로 설정하면, 라우팅 후 패스
VF2PostLayout실행 여부가 ‘사소한 레이아웃’을 시도했으나 완벽하지 않은 것으로 판명되었는지 여부에 따라 결정됩니다. 이는 생성된 패스 매니저가 첫 번째 레이아웃 시도로 실행되고TrivialLayout, 완벽한 레이아웃인 경우 이를 사용하는 경우에만 필요합니다(프리셋 패스 매니저 레벨 1의 경우와 같습니다). - use_barrier_before_measurement (bool) – true인 경우(기본값), 트랜스파일러 패스는
BarrierBeforeFinalMeasurements인자에routing_pass지정된 패스보다 먼저 실행됩니다. - vf2_max_trials (int) – vf2 포스트 레이아웃 패스를 평가할 때 VF2 을 실행할 수 있는 최대 시도 횟수입니다.
None또는0인 경우 vf2 게시물 레이아웃이 실행되지 않습니다.
리턴
라우팅 패스 관리자
리턴 유형
generate_pre_op_passmanager
qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)
최적화 전 루프 생성 PassManager
이 패스 관리자는 커플링 맵의 방향성이 준수되는지 확인합니다.
qiskit.transpiler.preset_passmanagers.common.generate_pre_op_passmanager() 함수는 키스킷 2.0 에서 더 이상 사용되지 않습니다. 키스킷 3.0 에서 제거됩니다. 번역 플러그인은 이제 ISA 방향성을 준수해야 하므로 일반적으로 교체할 필요가 없습니다.
매개변수
- target (Target) – 백엔드를 나타내는 객체
Target - coupling_map (CouplingMap) – 사용할 결합 매핑
- remove_reset_in_zero (bool) –
True경우 생성된 제로 패스에 재설정 제거를 포함하는 경우 PassManager
리턴
패스 관리자
리턴 유형
generate_translation_passmanager
qiskit.transpiler.preset_passmanagers.generate_translation_passmanager(target, basis_gates=None, method='translator', approximation_degree=None, coupling_map=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True)
기준 변환 생성 PassManager
매개변수
- target (Target | None) – 백엔드를 나타내는 객체
Target - basis_gates (list[str] | None) – 백엔드 대상에서 기본 게이트를 나타내는 str 게이트 이름 목록
- method (str) – 사용할 기본 번역 방법
- approximation_degree (float | None) – 회로 근사화에 사용되는 휴리스틱 다이얼로, 는
1.0(수치적 오차 범위 내에서) 근사화를 하지 않음을,0.0는 최대 근사화를 의미합니다. 가 사용 가능한 경우target, 의None값은 대상의 연산에 대해 보고된 오류율 범위 내에서 근사 처리가 허용됨을 나타냅니다. - coupling_map (CouplingMap | None) – 물리적 회로에서 회로 합성이 수행될 경우 백엔드의 커플링 맵. pulse_optimize가 True/None이고 natural_direction이 True/None인 경우, coupling_map의 방향성이 고려됩니다.
- unitary_synthesis_method (str) – 사용할 단일 합성법.
unitary_synthesis_plugin_names().을 사용하면 설치된 플러그인 목록을 확인할 수 있습니다. - unitary_synthesis_plugin_config (dict | None) – 선택적 사전 플러그인 구성은 해당 플러그인마다 다르므로, 사용 방법에 대해서는 지정된 플러그인의 설명서를 참조하십시오.
- hls_config (HLSConfig | None) – pass에
HighLevelSynthesis사용할 수 있는 선택적 구성 클래스입니다. 다양한 고수준 객체를 합성하는 방법을 명시합니다. - qubits_initially_zero (bool) – 입력 회로가 영 초기화되었는지 여부를 나타냅니다.
리턴
기본 번역 패스 관리자
리턴 유형
레이즈
TranspilerError - method kwarg가 유효한 값이 아닌 경우
generate_scheduling
qiskit.transpiler.preset_passmanagers.generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None)
게시물 최적화 일정 생성 PassManager
매개변수
- instruction_durations (dict) – 교육 기간 사전
- scheduling_method (str) – 사용할 예약 방법은
'asap'/'as_soon_as_possible'또는'alap'/ 입니다'as_late_as_possible' - timing_constraints (TimingConstraints) – 하드웨어 시간 정렬 제한.
- target (Target) – 백엔드를 나타내는 객체
Target
리턴
스케줄링 패스 관리자
리턴 유형
레이즈
TranspilerError - scheduling_method kwarg가 유효한 값이 아닌 경우