HighLevelSynthesis
class qiskit.transpiler.passes.HighLevelSynthesis(*args, **kwargs)
베이스: TransformationPass
상위 레벨 오브젝트를 합성하고 사용자 정의 정의를 해제합니다.
이 패스에 대한 입력은 추상적인 수학 객체(예: 타입이 LinearFunction), 주석이 달린 연산(타입이 AnnotatedOperation), 커스텀 게이트 등을 포함합니다.
basis_gates 또는 target 중 하나를 지정하는 가장 일반적인 사용 사례에서는 모든 상위 수준 객체가 합성되므로 출력은 해당 객체가 없는 DAGCircuit 가 됩니다. 보다 정확하게는 출력 DAG의 모든 게이트가 타깃에서 직접 지원되거나 equivalence_library 에 있습니다.
추상적인 수학 객체는 합성 플러그인을 사용하여 합성되며, 상위 수준 합성 구성에 지정된 합성 방법을 적용합니다( HLSConfig).
예를 들어 op_a 와 op_b 이 두 개의 상위 레벨 객체의 이름이고, op_a-객체에는 추가 매개변수가 필요한 두 개의 합성 메서드 default 와 선택적 정수 매개변수 option_1 와 option_2 가 있는 other , op_b-객체에는 단일 합성 메서드 default 가 있고, qc 는 op_a 와 op_b 객체를 포함하는 양자 회로라고 가정해 봅시다. 다음 코드 스니펫입니다:
hls_config = HLSConfig(op_b=[("other", {"option_1": 7, "option_2": 4})])
pm = PassManager([HighLevelSynthesis(hls_config=hls_config)])
transpiled_qc = pm.run(qc)는 op_b-객체에 대해 대체 합성 방법 other 을 실행하고, op_a-객체를 포함한 다른 모든 상위 수준 객체에 대해 default 방법을 사용하는 방법을 보여 줍니다.
주석이 달린 연산(기본 연산과 반전, 제어 및 전력 수정자 목록으로 구성됨)은 재귀적으로 합성되며, 먼저 기본 연산을 합성한 다음 합성 방법을 적용하여 반전, 제어 또는 전력 버전을 생성합니다.)
사용자 정의 게이트는 모든 게이트가 타겟에서 지원되거나 동등성 라이브러리에 포함될 때까지 정의를 재귀적으로 풀어서 합성합니다.
basis_gates 또는 target 이 지정되지 않은 경우, 패스는 definitions 게이트로 내려가지 않고 최상위 추상 수학 객체와 주석이 달린 연산만 합성합니다. 이는 패스의 이전 동작과 일치하며, 플러그인을 사용하여 일부 상위 레벨 오브젝트를 합성하고 다른 게이트는 그대로 두는 것을 허용합니다.
하이 레벨 합성은 사용 가능한 보조 큐비트에 대한 정보와 그 상태가 깨끗한지( 로 정의됨) 또는 더티한지(알 수 없는 상태)에 대한 정보를 각 인자 "num_clean_ancillas" 와 "num_dirty_ancillas" 를 통해 합성 루틴에 전달합니다. qubits_initially_zero 이 True (기본값)인 경우 큐비트는 상태에 있는 것으로 간주합니다. 보조 큐비트를 사용하여 합성된 블록을 회로에 추가할 때는 먼저 깨끗한 보조 큐비트를 사용합니다.
합성 메서드는 보조 큐비트의 상태를 유지한다고 가정합니다. 구체적으로 이는 깨끗한 보조 큐비트는 합성된 블록 이후에도 여전히 상태에 있어야 하며, 더티 보조 큐비트는 더티 큐비트로만 재사용된다는 의미입니다.
HighLevelSynthesis 이니셜라이저.
매개변수
- hls_config – 회로 내 다양한 상위 레벨 객체에 대한 합성 방법과 매개변수를 지정하는 상위 레벨 합성 구성 파일. 명시되지 않은 경우, 기본 합성 방법과 매개변수가 사용됩니다.
- coupling_map – 결합 맵으로 표현된 유향 그래프.
- target – 이 패스에 사용할 백엔드 타겟. 이 옵션이 지정되면 커플링 맵 대신 이 옵션이 사용됩니다.
- 사용_쿼비트_인덱스 - 이 합성 패스가 레이아웃 설정 전 또는 후에 실행되는지, 즉 상위 레벨 오브젝트의 큐비트 인덱스가 타겟 백엔드의 큐비트 인덱스와 일치하는지 여부를 나타내는 플래그입니다.
- 등가성_도서관 - 사용된 등가성 라이브러리(이 라이브러리의 지침은 이 패스로 언롤되지 않습니다).
- basis_gates – 언롤링할 대상 베이스 이름(예: [‘u3’, ‘cx’]). 또한 가
target지정된 경우 무시됩니다. - 최소_큐비트 - 변환할 입력 dag의 연산에 대한 최소 큐비트 수입니다.
- qubits_initially_zero – 큐비트가 처음에 상태인지 여부를 나타냅니다. 이를 통해 고수준 합성에서 깨끗한 보조 큐비트(즉, 0 상태)를 사용하여 연산을 합성할 수 있습니다.
- optimization_metric - 하이 레벨 오브젝트에 대한 기본 합성 메서드에서 사용하는 최적화 기준을 지정합니다(사용 가능한 경우).
속성
is_analysis_pass
패스가 분석 패스인지 확인합니다.
패스가 AnalysisPass, 인 경우 패스가 DAG를 분석하고 해당 분석 결과를 속성 집합에 쓸 수 있음을 의미합니다. 이러한 종류의 패스에서는 DAG에 대한 수정이 허용되지 않습니다.
is_transformation_pass
패스가 변환 패스인지 확인합니다.
패스가 TransformationPass, 인 경우 패스가 DAG를 조작할 수는 있지만 속성 집합을 수정할 수는 없음을 의미합니다(단, 읽을 수는 있음).
메소드
execute
execute(passmanager_ir, state, callback=None)
입력된 키스킷 IR에 대한 최적화 작업을 실행합니다.
매개변수
- passmanager_ir (DAGCircuit) – 최적화할 Qiskit IR.
- state (DAGCircuit) – 패스 관리자 자체에 의한 워크플로 실행과 관련된 상태.
- callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – 최적화 작업이 실행될 때마다 호출되는 콜백 함수입니다.
리턴
최적화된 키스킷 IR 및 워크플로 상태.
리턴 유형
튜플 [ DAGCircuit, PassManagerState ]
name
run
run(dag)
Dag에서 HighLevelSynthesis 패스를 실행합니다.
매개변수
dag (DAGCircuit) – 입력합니다.
리턴
상위 수준 연산이 합성된 출력 dag를 출력합니다.
레이즈
- TranspilerError – 트랜스파일러가 주어진 DAG를 합성할 수 없는 경우
- ( 예를 들어 , 지정된 합성 방법을 사용할 수 없는 경우 )****. –
리턴 유형
update_status
update_status(state, run_state)
워크플로 상태를 업데이트합니다.
매개변수
- state (PassManagerState) – 관리자 상태를 전달하여 업데이트합니다.
- run_state (RunState) – 현재 작업의 완료 상태입니다.
리턴
패스 관리자 상태가 업데이트되었습니다.
리턴 유형