Skip to main content
IBM Quantum Platform

StarPreRouting

class qiskit.transpiler.passes.StarPreRouting

GitHub

베이스: TransformationPass

스타에서 선형 사전 라우팅으로 실행

이 패스는 모든 2q 게이트 스타 연결 하위 회로를 스왑을 사용한 선형 연결과 동등한 것으로 다시 작성하는 논리적 최적화 패스입니다.

예를 들어,

from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import StarPreRouting

qc = QuantumCircuit(10)
qc.h(0)
qc.cx(0, range(1, 5))
qc.h(9)
qc.cx(9, range(8, 4, -1))
qc.measure_all()
StarPreRouting()(qc).draw("mpl")
이전 코드에서 출력한 회로도입니다.

이 패스는 섹션 IV에 설명된 유사한 패스에서 영감을 얻었습니다: C. 캠벨 외., "Superstaq: 양자 프로그램의 심층 최적화", 2023 IEEE 국제 양자 컴퓨팅 및 엔지니어링 컨퍼런스(QCE), 미국 워싱턴주 벨뷰, 2023, 1020-1032페이지, 도이: 10.1109/QCE57702.2023.00116.


속성

is_analysis_pass

패스가 분석 패스인지 확인합니다.

패스가 AnalysisPass, 인 경우 패스가 DAG를 분석하고 해당 분석 결과를 속성 집합에 쓸 수 있음을 의미합니다. 이러한 종류의 패스에서는 DAG에 대한 수정이 허용되지 않습니다.

is_transformation_pass

패스가 변환 패스인지 확인합니다.

패스가 TransformationPass, 인 경우 패스가 DAG를 조작할 수는 있지만 속성 집합을 수정할 수는 없음을 의미합니다(단, 읽을 수는 있음).


메소드

collect_all_matching_blocks

collect_all_matching_blocks(dag, min_block_size=2)

GitHub

주어진 필터링 함수 filter_fn과 일치하는 모든 블록을 수집합니다. 수집되지 않은 노드가 더 이상 남지 않을 때까지 필터_fn과 일치하지 않는 가장 큰 블록을 찾은 다음, 필터_fn과 일치하는 가장 큰 블록을 찾는 식으로 반복적으로 찾습니다. 직관적으로, 일치하지 않는 노드의 큰 블록을 찾으면 나중에 일치하는 노드의 큰 블록을 찾는 데 도움이 됩니다. min_block_size 옵션은 수집할 블록의 최소 게이트 수를 지정합니다.

기본적으로 블록은 입력에서 회로의 출력 방향으로 수집됩니다. collect_from_back 옵션을 사용하면 이 방향을 변경할 수 있습니다. 즉, 출력에서 회로의 입력 쪽으로 블록을 수집하는 것입니다.

일치하는 블록 목록만 반환합니다.

collect_matching_block

collect_matching_block(dag, filter_fn)

GitHub

주어진 필터링 함수와 일치하는 가장 큰 입력 노드 블록(즉, _in_degree 이 0인 노드)을 반복적으로 수집합니다. 예를 들어 스왑 게이트 블록, 선형 게이트 블록(CX 및 SWAP), 클리포드 게이트 블록, 단일 큐비트 게이트 블록, 2큐비트 게이트 블록 등을 수집하는 것이 이에 해당합니다. 여기서 '반복적으로'란 한 노드가 수집되면 그 직계 후임 노드의 _in_degree 가 1씩 감소하여 더 많은 노드가 입력되어 현재 블록에 수집될 수 있도록 허용한다는 의미입니다. 수집된 노드 블록을 반환합니다.

determine_star_blocks_processing

determine_star_blocks_processing(dag, min_block_size)

GitHub

스타 블록과 이러한 스타 블록 내 노드의 처리 순서를 dag로 반환합니다 :param dag: 스타 블록을 결정해야 하는 dag. :type dag: DAGCircuit 또는 DAGDependency :param min_block_size: 스타 블록의 최소 2-큐비트 게이트 수. :type min_block_size: int

리턴

주어진 dag에 있는 스타 블록의 목록 Union[ [ListDAGOpNode], [ListDAGDepNode] ]: 처리 순서를 지정하는 연산 목록

리턴 유형

[ListStarBlock]

매개변수

execute

execute(passmanager_ir, state, callback=None)

GitHub

입력된 키스킷 IR에 대한 최적화 작업을 실행합니다.

매개변수

  • passmanager_ir (DAGCircuit) – 최적화할 Qiskit IR.
  • state (DAGCircuit) – 패스 관리자 자체에 의한 워크플로 실행과 관련된 상태.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – 최적화 작업이 실행될 때마다 호출되는 콜백 함수입니다.

리턴

최적화된 키스킷 IR 및 워크플로 상태.

리턴 유형

튜플 [ DAGCircuit, PassManagerState ]

name

name()

GitHub

패스 이름.

리턴 유형

str

run

run(dag)

GitHub

DAGCircuit에서 패스를 실행합니다. 이는 패스 개발자가 구현합니다.

매개변수

dag - 패스가 실행되는 날짜입니다.

레이즈

NotImplementedError - 패스를 구현하지 않은 경우.

star_preroute

star_preroute(dag, blocks, processing_order)

GitHub

Dag의 스타 블록과 이러한 스타 블록 내 노드의 처리 순서를 반환합니다 :param dag: 스타 프리라우팅을 수행해야 하는 dag. :type dag: DAGCircuit 또는 DAGDependency :param blocks: 주어진 dag에 있는 스타 블록의 목록 :type blocks: [ListStarBlock] :매개변수 처리_순서: :유형 처리_순서를 지정하는 연산 목록: Union[ [ListDAGOpNode], [ListDAGDepNode] ] :매개변수 처리 순서:

리턴

사전 라우팅된 회로를 지정하는 dag: 사전 라우팅 후 최종 큐비트 매핑을 나타냅니다

리턴 유형

new_dag

update_status

update_status(state, run_state)

GitHub

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

매개변수

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

리턴

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

리턴 유형

PassManagerState

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