CollectMultiQBlocks
class qiskit.transpiler.passes.CollectMultiQBlocks(*args, **kwargs)
베이스: AnalysisPass
큐비트 그룹에서 작동하는 중단 없는 게이트 시퀀스를 수집합니다. max_block_size 는 단일 게이트 그룹에서 동작할 수 있는 최대 큐비트 수를 지정합니다
DAG를 가로지르며 큐비트 그룹에 연속적으로 작동하는 게이트 블록을 찾습니다. 블록을 property_set 에 형식의 블록 목록으로 작성합니다:
[[g0, g1, g2], [g4, g5]]블록은 유효한 토폴로지 순서로 보고됩니다. 또한 각 블록 내의 게이트도 위상 순서대로 보고됩니다. 일부 게이트는 어떤 블록에도 존재하지 않을 수 있습니다(예: 피연산자 수가 max_block_size 보다 큰 경우)
기본적으로 블록은 입력에서 DAG의 출력 방향으로 수집됩니다. collect_from_back 옵션을 사용하면 이 방향을 변경할 수 있습니다. 즉, 출력에서 입력 쪽으로 블록을 수집할 수 있습니다. 블록은 여전히 유효한 토폴로지 순서로 보고된다는 점에 유의하세요.
게이트가 처리될 때 블록을 유지하기 위해 DSU(Disjoint Set Union) 데이터 구조가 사용됩니다. 이 데이터 구조는 각 큐비트가 항상 세트를 가리키며, 세트는 현재 블록에 해당합니다. 이는 시간이 지남에 따라 변경되며 데이터 구조를 통해 이러한 변경을 신속하게 수행할 수 있습니다.
속성
is_analysis_pass
패스가 분석 패스인지 확인합니다.
패스가 AnalysisPass, 인 경우 패스가 DAG를 분석하고 해당 분석 결과를 속성 집합에 쓸 수 있음을 의미합니다. 이러한 종류의 패스에서는 DAG에 대한 수정이 허용되지 않습니다.
is_transformation_pass
패스가 변환 패스인지 확인합니다.
패스가 TransformationPass, 인 경우 패스가 DAG를 조작할 수는 있지만 속성 집합을 수정할 수는 없음을 의미합니다(단, 읽을 수는 있음).
메소드
execute
execute(passmanager_ir, state, callback=None)
입력된 키스킷 IR에 대한 최적화 작업을 실행합니다.
매개변수
- passmanager_ir (IR) – 최적화할 Qiskit IR.
- state (PassManagerState) – 패스 관리자 자체의 워크플로 실행과 관련된 상태입니다.
- callback (Callable[[Task, IR_OUT, PropertySet, float, int], None] | None) – 최적화 작업이 실행될 때마다 호출되는 콜백 함수입니다.
리턴
최적화된 키스킷 IR 및 워크플로 상태.
리턴 유형
튜플 [ IR_OUT, PassManagerState ]
find_set
find_set(index)
항목 집합의 루트를 찾는 DSU 함수 내 부모가 나 자신인 경우 내가 루트입니다. 그렇지 않으면 재귀적으로 내 부모의 루트를 찾습니다. 그런 다음 부모를 내 루트로 지정하여 향후 재귀를 방지합니다.
name
run
run(dag)
Dag에서 CollectMultiQBlocks 패스를 실행합니다.
블록은 토폴로지 정렬 순서대로 "연산" 노드를 포함하므로 블록의 모든 게이트가 동일한 큐비트 세트에서 작동하고 회로에서 인접합니다.
블록은 회로에서 "cx" 게이트의 전임자와 후임자를 검토하여 구축됩니다. u1, u2, u3, CX, ID 게이트가 포함됩니다.
실행 후 property_set['block_list'] 은 DAGNode 객체의 튜플 목록으로 설정됩니다
union_set
union_set(set1, set2)
두 집합을 합집합으로 만드는 DSU 함수. 각 집합의 근을 구하십시오. 그런 다음 한 집합을 다른 집합의 부모로 지정하여 두 집합을 연결합니다. 실행 시간을 단축하기 위해 작은 집합을 큰 집합에 병합합니다
update_status
update_status(state, run_state)
워크플로 상태를 업데이트합니다.
매개변수
- state (PassManagerState) – 관리자 상태를 전달하여 업데이트합니다.
- run_state (RunState) – 현재 작업의 완료 상태입니다.
리턴
패스 관리자 상태가 업데이트되었습니다.
리턴 유형