Skip to main content
IBM Quantum Platform

VF2PostLayout

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

GitHub

베이스: AnalysisPass

회로를 커플링 그래프로 변환한 후 기존 레이아웃을 개선하기 위한 패스로, 하위 그래프 동형 문제로서 VF2++ 에서 해결합니다.

트랜스파일러 패스와는 달리 VF2Layout 트랜스파일러 패스와 달리 이 트랜스파일러 패스는 트랜스파일 파이프라인 초기에 회로의 초기 레이아웃을 찾도록 설계되었으며, 트랜스파일이 완료된 후 더 나은 레이아웃을 찾도록 설계되었습니다. 트랜스파일러의 초기 레이아웃 단계에서는 트랜스파일링 이후만큼 많은 정보를 얻을 수 없습니다. 이 패스는 레이아웃 패스와 유사한 파이프라인에서 짝을 이루도록 설계되었습니다. 이 패스는 회로에서 유휴 와이어를 제거하고 VF2 을 사용하여 회로가 더 충실하게 실행될 수 있도록 커플링 그래프에서 하위 그래프를 찾은 다음 새 큐비트를 사용하도록 회로 레이아웃을 업데이트합니다. 이 패스에 사용된 알고리즘은 arXiv:2209.15512.

해결책을 찾으면 회로에 더 낮은 오류 레이아웃을 사용할 수 있다는 의미입니다. 솔루션이 발견되면 레이아웃은 property_set['post_layout'] 으로 설정된 프로퍼티에 설정됩니다. 그러나 해결책을 찾지 못하거나 더 나은 해결책을 찾지 못하면 property_set['post_layout'] 이 설정되지 않습니다. 중지 사유는 모든 경우에 property_set['VF2PostLayout_stop_reason'] 에 설정되며 VF2PostLayoutStopReason 에 열거된 값 중 하나이며 다음 값을 갖습니다:

  • "solution found": 해결책을 찾은 경우.
  • "no better solution found": 회로의 초기 레이아웃이 최상의 솔루션인 경우.
  • "nonexistent solution": 해결책을 찾지 못한 경우.
  • ">2q gates in basis": VF2PostLayout 이 회로의 기초로 작동하지 않는 경우.

기본적으로 이 패스는 제공된 target 의 오류율을 기반으로 휴리스틱 채점 맵을 구성합니다. 그러나 분석 패스는 이 패스 이전에 실행하고 ErrorMap 인스턴스로 설정된 속성 세트에서 vf2_avg_error_map 을 설정할 수 있습니다. 값이 NaN 인 경우 이상적인 에지로 처리됩니다. 예를 들어 오류 맵이 다음과 같이 생성되는 경우입니다:

from qiskit.transpiler.passes.layout.vf2_utils import ErrorMap

error_map = ErrorMap(3)
error_map.add_error((0, 0), 0.0024)
error_map.add_error((0, 1), 0.01)
error_map.add_error((1, 1), 0.0032)

는 2큐비트 타겟의 오류 맵을 나타내며, 평균 1q 오류율은 0큐비트에서 0.0024 , 1큐비트에서 0.0032 입니다. 그러면 (0, 1)에서 작동하는 게이트의 평균 2q 오류율은 0.01 이고 (1, 0)은 대상에서 지원되지 않습니다. 실행 시 속성 세트에서 vf2_avg_error_map 키로 설정되어 있는 경우 채점에 사용됩니다 VF2PostLayout 가 실행될 때 사용됩니다.

VF2PostLayout 패스 인스턴스 초기화

매개변수

  • target (Target) – VF2PostLayout 을 실행할 백엔드 장치를 나타내는 대상입니다.
  • seed (int) – PRNG의 시드를 설정합니다. -1 노드 셔플링이 없음을 의미합니다.
  • call_limit (int) – VF2 을 실행할 때마다 시도할 상태 방문 횟수입니다.
  • time_limit (float) – 실행할 총 시간 제한(초) VF2PostLayout
  • strict_direction (bool) – 패스가 커플링 그래프에서 엄격한 방향을 따르도록 구성되었는지 여부입니다. 이 값을 false로 설정하면 패스는 커플링 그래프의 모든 에지를 약한 에지로 처리하고 인터랙션 그래프는 방향이 지정되지 않게 됩니다. 레이아웃을 평가하기 위해 각 큐비트와 2q 링크에 대한 평균 오류율이 사용됩니다. 이렇게 하면 기본 번역 전에 패스를 실행하여 1q 및 2q 작업과 함께 사용할 수 있습니다. 그러나 strict_direction=True 패스가 입력값을 기대하는 경우 DAGCircuit 객체가 run() 가 대상 명령어 집합에 있을 것으로 예상합니다.
  • max_trials (int) – 레이아웃을 찾기 위해 VF2 을 실행할 수 있는 최대 시도 횟수입니다. 기본값인 0 값은 '무제한'을 의미합니다.

레이즈

TypeError - 런타임에 target 이 제공되지 않는 경우.


속성

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 ]

name

name()

GitHub

패스 이름.

리턴 유형

str

run

run(dag)

GitHub

레이아웃 메서드를 실행합니다

update_status

update_status(state, run_state)

GitHub

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

매개변수

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

리턴

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

리턴 유형

PassManagerState

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