Skip to main content
IBM Quantum Platform

CollectMultiQBlocks

class qiskit.transpiler.passes.CollectMultiQBlocks(*args, **kwargs)

GitHub

베이스: 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)

GitHub

입력된 키스킷 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)

GitHub

항목 집합의 루트를 찾는 DSU 함수 내 부모가 나 자신인 경우 내가 루트입니다. 그렇지 않으면 재귀적으로 내 부모의 루트를 찾습니다. 그런 다음 부모를 내 루트로 지정하여 향후 재귀를 방지합니다.

name

name()

GitHub

패스 이름.

리턴 유형

str

run

run(dag)

GitHub

Dag에서 CollectMultiQBlocks 패스를 실행합니다.

블록은 토폴로지 정렬 순서대로 "연산" 노드를 포함하므로 블록의 모든 게이트가 동일한 큐비트 세트에서 작동하고 회로에서 인접합니다.

블록은 회로에서 "cx" 게이트의 전임자와 후임자를 검토하여 구축됩니다. u1, u2, u3, CX, ID 게이트가 포함됩니다.

실행 후 property_set['block_list']DAGNode 객체의 튜플 목록으로 설정됩니다

union_set

union_set(set1, set2)

GitHub

두 집합을 합집합으로 만드는 DSU 함수. 각 집합의 근을 구하십시오. 그런 다음 한 집합을 다른 집합의 부모로 지정하여 두 집합을 연결합니다. 실행 시간을 단축하기 위해 작은 집합을 큰 집합에 병합합니다

update_status

update_status(state, run_state)

GitHub

워크플로 상태를 업데이트합니다.

매개변수

  • state (PassManagerState) – 관리자 상태를 전달하여 업데이트합니다.
  • run_state (RunState) – 현재 작업의 완료 상태입니다.

리턴

패스 관리자 상태가 업데이트되었습니다.

리턴 유형

PassManagerState

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.