Skip to main content
IBM Quantum Platform

LookaheadSwap

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

GitHub

베이스: TransformationPass

스왑 삽입을 통해 입력 회로를 백엔드 토폴로지에 매핑합니다.

2018 키스킷 개발자 챌린지에 제출된 스벤 얀두라의 스왑 매퍼를 트랜스파일러 아키텍처에 통합하도록 수정한 구현.

스와퍼 패스의 역할은 대상 디바이스의 토폴로지(하드웨어에서 사용 가능한 2큐비트 게이트 세트)와 호환되도록 시작 회로를 수정하는 것입니다 이를 위해 패스는 SWAP 게이트를 삽입하여 다가오는 각 게이트의 가상 큐비트를 결합된 물리적 큐비트 세트에 재배치합니다. 그러나 스왑 게이트는 특히 손실이 크기 때문에 가능한 한 최소한의 추가 스왑을 도입하면서 이 리매핑을 달성하는 것이 목표입니다.

이 알고리즘은 다음과 같이 좁혀진 베스트 퍼스트/빔 검색을 통해 사용 가능한 스왑 게이트 조합을 검색합니다:

  • 가상 큐비트를 물리적 큐비트에 배치하는 것부터 시작하세요.
  • 입력 회로에서 현재 레이아웃으로 수행할 수 있는 게이트를 찾아 매핑된 것으로 표시합니다.
  • 가능한 모든 스왑 게이트에 대해 해당 적용으로 인해 발생할 레이아웃을 계산하고 다가오는 게이트에 대한 결과 레이아웃의 거리에 따라 순위를 매깁니다(_calc_layout_distance 참조)
  • 4개의 (검색_폭) 최상위 스왑이 적용될 경우 생성될 레이아웃에 대해 위의 과정을 반복합니다.
  • 이 과정을 초기 레이아웃에서 4(검색_폭^검색_깊이) 스왑된 깊이까지 반복하여 총 256(검색_폭^검색_깊이) 개의 예상 레이아웃을 만듭니다.
  • 수행 가능한 2큐비트 수를 최대화하는 레이아웃을 선택합니다. 생성된 SWAP을 포함하여 매핑된 게이트를 출력 회로에 추가합니다.
  • 초기 회로의 모든 게이트가 매핑될 때까지 위 과정을 반복합니다.

알고리즘에 대한 자세한 내용은 스벤의 블로그 게시물을 참조하세요: https://medium.com/qiskit/improving-a-quantum-compiler-48410d7a7084

LookaheadSwap 이니셜라이저.

매개변수

  • coupling_map (Union[CouplingMap, Target]) – CouplingMap 대상 백엔드의
  • search_depth (int) – 최상의 스왑 옵션 순위를 매길 때 룩헤드 트리 깊이를 설정합니다.
  • search_width (int) – 최상의 스왑 옵션 순위를 매길 때 룩헤드 트리 너비를 설정합니다.
  • fake_run (bool) – 참이면 라우팅을 수행하는 시늉만 할 뿐, 즉 스왑이 실제로 추가되지 않습니다.

속성

is_analysis_pass

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

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

is_transformation_pass

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

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


메소드

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

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

매개변수

dag (DAGCircuit) – 매핑할 방향성 비순환 그래프를 지정합니다

리턴

의 커플링_맵과 호환되도록 매핑된 dag입니다

속성_set.

리턴 유형

DAGCircuit

레이즈

  • TranspilerError – 커플링 맵이나 레이아웃이
  • DAG와 호환 가능 **, 또는 커플링 맵=None인 경우 ** –

update_status

update_status(state, run_state)

GitHub

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

매개변수

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

리턴

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

리턴 유형

PassManagerState

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