Skip to main content
IBM Quantum Platform

VF2Layout

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

GitHub

베이스: AnalysisPass

하위 그래프 동형 문제로서, VF2++ 에서 풀 수 있는 커플링 그래프에 회로의 레이아웃을 선택하는 패스입니다.

'완벽한 레이아웃'이 있고 더 이상의 스왑 매핑이나 라우팅이 필요하지 않은 솔루션을 찾은 경우입니다. 솔루션이 발견되면 레이아웃은 property_set['layout'] 으로 설정된 프로퍼티에 설정됩니다. 그러나 해결책을 찾지 못하면 property_set['layout'] 이 설정되지 않습니다. 중지 사유는 모든 경우에 property_set['VF2Layout_stop_reason'] 에 설정되며 VF2LayoutStopReason 에 열거된 값 중 하나이며 다음 값을 갖습니다:

  • "solution found": 완벽한 레이아웃을 찾은 경우.
  • "nonexistent solution": 완벽한 레이아웃을 찾지 못한 경우.
  • ">2q gates in basis": VF2Layout 기준으로 작동하지 않는 경우

기본적으로 이 패스는 제공된 target ( target 제공되지 않은 경우 properties )의 오류율을 기반으로 휴리스틱 채점 맵을 구성합니다. 그러나 이 패스를 실행하기 전에 분석 패스를 실행하고 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 키로 설정되어 있는 경우 채점에 사용됩니다 VF2Layout 가 실행될 때 사용됩니다.

VF2Layout 패스 인스턴스 초기화

매개변수

  • coupling_map (CouplingMap) – 커플링 맵을 나타내는 방향성 그래프.
  • strict_direction (bool) – True이면 커플링 맵의 방향을 고려합니다. 기본값은 False입니다.
  • seed (int | None) – 주어진 시드( pRNG )를 사용하여 결합 그래프에서 물리적 큐비트의 라벨링을 노드 인덱스로 셔플합니다. None OS 엔트로피를 사용하는 시드(따라서 비결정론적임). 사용하면 -1 셔플링이 비활성화됩니다.
  • call_limit (None | int |tuple[int | None,int | None]) – 내부 동형사상 탐색( VF2 )이 매핑을 확장하려고 시도하는 최대 횟수. 만약 그렇다면 None, 한계가 없다. 2-튜플인 경우, 한계는 첫 번째 항목으로 시작하며 첫 번째 일치 항목이 발견된 후 두 번째 항목으로 전환되지만, 수행된 단계 수는 재설정되지 않습니다. 이를 통해 매핑을 찾는 데 오랜 시간이 걸릴 수 있지만, 발견 시 작은 확장 예산으로도 신속하게 종료할 수 있습니다.
  • time_limit (float) – 실행할 총 시간 VF2Layout제한(초). 이것은 완전히 엄격하지 않습니다; 실행은 시간 제한이 초과된 후 발견된 첫 번째 동형사상(있는 경우)에서 종료됩니다. 이 옵션을 설정하면 패스의 결정론이 깨집니다.
  • max_trials (int) – 이 값이 설정된 경우, 이만큼의 _완전한_ 레이아웃이 발견된 후 알고리즘이 종료됩니다. 점수는 실시간으로 계산되므로, 대부분의 후보 레이아웃은 완성되기 전에 검색 과정에서 제거됩니다. 따라서 이 옵션은 거의 의미가 없습니다. 초기 한도를 개선하는 데 소요되는 시간의 하한을 설정하려면, 2-튜플 call_limit 형식의 두 번째 항목에 낮은 값을 지정하십시오.
  • target (Target) – VF2Layout 을 실행할 백엔드 장치를 나타내는 대상입니다. 지정하면 coupling_map 에 설정된 값을 대체합니다 Target 에 연결 제약 조건이 포함된 경우 target 값이 제약 조건이 없는 이상적인 백엔드를 모델링하는 경우 coupling_map 값이 사용됩니다.

레이즈

TypeError - 런타임에 coupling_map 또는 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에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.