Skip to main content
IBM Quantum Platform

StagedPassManager

class qiskit.transpiler.StagedPassManager(stages=None, **kwargs)

GitHub

베이스: PassManager

개별 단계로 구축된 패스 관리자 파이프라인입니다.

이 클래스를 사용하면 고정 단계로 컴파일 파이프라인을 구축할 수 있습니다. 각 StagedPassManager 은 고정된 순서로 실행되는 단계 목록을 정의하며, 각 단계는 독립 실행형 PassManager 인스턴스로 정의됩니다. 정의된 각 단계에 대한 pre_post_ 단계도 있습니다. 이를 통해 여러 단계를 쉽게 구성하고 교체할 수 있으며, 후크 포인트를 추가하여 파이프라인을 프로그래밍 방식으로 수정할 수도 있습니다. 단계별 패스 관리자를 사용하는 경우 개별 패스는 수정할 수 없으며 단계만 수정할 수 있습니다.

기본적으로 StagedPassManager 인스턴스는 추상적인 가상 회로에서 지정된 백엔드에서 실행할 수 있도록 최적화되어 있는 일반적인 전체 컴파일 파이프라인을 정의합니다. 기본 사전 정의 단계는 다음과 같습니다:

  1. init - 백엔드에 회로를 임베드하기 전에 실행할 초기 패스입니다.
  2. layout - 회로의 가상 큐비트를 백엔드의 물리적 큐비트에 매핑합니다.
  3. routing - 백엔드의 커플링 맵에서 선택한 레이아웃으로 회로를 실행할 수 있을 때까지 필요에 따라 게이트를 삽입하여 큐비트 상태를 이동합니다.
  4. translation - 회로의 게이트를 대상 백엔드의 기본 게이트 세트로 변환합니다.
  5. optimization - 회로를 최적화하여 실행 비용을 줄입니다. 이러한 패스는 일반적으로 수렴 기준이 충족될 때까지 반복적으로 실행됩니다. 예를 들어, 수렴 기준은 연속적인 반복에서 회로 깊이가 감소하지 않는 것일 수 있습니다.
  6. scheduling - 회로에서 작업을 예약하는 하드웨어 인식 패스입니다.
참고

이전 버전과의 호환성을 위해 이러한 기본 단계의 상대적 위치는 앞으로 안정적으로 유지됩니다. 그러나 현재 스테이지 사이에 새로운 스테이지가 기본 스테이지 목록에 추가될 수 있습니다. 예를 들어, 향후 릴리스에서는 기본 단계 목록의 기존 init 단계 바로 뒤에 logical_optimization 과 같은 새 단계를 추가할 수 있습니다. 이렇게 하면 스테이지의 상대적 위치가 유지되므로 릴리스 간에 동작이 변경되지 않으므로 기존 StagedPassManager 사용자의 호환성을 유지할 수 있습니다.

이 단계들은 순서대로 실행되며, 로 설정된 None 단계는 건너뜁니다. 한 스테이지가 여러 번(즉, 서로 다른 상대적 위치에서) 제공되는 경우, 프리 패스와 포스트 패스를 포함한 관련 패스는 선언마다 한 번씩 실행됩니다. 여기서 특정 PassManager 입력이 1단계 이상에 걸쳐 사용되는 경우(예를 들어 레이아웃과 라우팅을 모두 포함하는 입력의 Pass 경우), 해당 입력이 적용되는 단계 중 순서상 가장 앞선 단계로 설정해야 합니다.

새 StagedPassManager 객체를 초기화합니다

매개변수

  • stages (Iterable[str]) – 이 인스턴스에 사용할 단계의 선택적 목록입니다. 이 항목이 지정되지 않은 경우 기본 단계 목록이 ['init', 'layout', 'routing', 'translation', 'optimization', 'scheduling'] 사용됩니다. 생성된 후, 최종 목록은 불변 상태가 되며 튜플로 저장됩니다. 한 스테이지가 여러 번(즉, 서로 다른 상대적 위치에서) 제공되는 경우, 프리 패스와 포스트 패스를 포함한 관련 패스는 선언마다 한 번씩 실행됩니다.
  • kwargs - 초기 PassManager 에 정의된 모든 단계의 초기 값. stages. 인수가 정의되지 않은 경우 스테이지의 기본값은 비어 있거나 정의되지 않은 스테이지를 나타내는 None 로 설정됩니다.

레이즈

  • AttributeError - 입력 키워드 인수의 스테이지가 정의되지 않은 경우.
  • ValueError - 잘못된 스테이지 이름을 지정한 경우.

속성

expanded_stages

pre_post_ 단계를 포함한 패스 관리자 단계가 확장되었습니다.

invalid_stage_regex

기본값: re.compile('\s|\+|\-|\*|\/|\\|\%|\{->0<-}|\@|\!|\~|\^|\&|\:|\[|\]|\\{|\\}|\(|\)')

stages

패스 관리자 단계


메소드

append

append(passes)

GitHub

패스 일정에 패스 세트를 추가합니다.

매개변수

passes (Task |list[Task]) – 일정에 추가할 트랜스파일러 처리 단계 세트.

레이즈

TranspilerError – ‘패스’ 중 하나가 올바른 패스가 아닌 경우.

리턴 유형

없음

draw

draw(filename=None, style=None, raw=False)

GitHub

스테이지 패스 관리자를 그립니다.

경고

이 함수는 사용자가 제어할 수 있는 문자열(예: 경로 이름)이 포함된 파일에 대해 시스템의 Graphviz 도구를 호출합니다. 이 함수는 신뢰할 수 있는 입력에 대해서만 호출하는 것이 좋습니다.

매개변수

  • filename (str) – 이미지를 저장할 파일 경로.
  • style (dict) – 키(keys)는 패스 클래스이며, 값(values)은 해당 패스를 생성할 때 사용할 색상입니다. DEFAULT_STYLE에서 그 예를 확인할 수 있습니다. 패스가 여러 범주에 속할 경우, 정렬된 딕셔너리를 사용하여 우선순위에 따른 색상 지정을 보장할 수 있습니다. 제공된 딕셔너리에 포함되지 않은 값은 기본 딕셔너리의 값으로 채워집니다.
  • raw (bool) – 이 경우 True, 이미지 대신 원본 Dot 출력 파일을 저장하세요.

remove

remove(index)

GitHub

스케줄러에서 특정 패스를 제거합니다.

매개변수

passes()index (int) –. 내의 위치를 기준으로 제거할 인덱스를 전달하십시오.

레이즈

PassManagerError – 인덱스를 찾을 수 없는 경우.

리턴 유형

없음

replace

replace(index, passes)

GitHub

스케줄러에서 특정 패스를 교체합니다.

매개변수

  • index (int) – Pass()의 위치에 따라 대체할 패스 인덱스입니다.
  • passes (BasePass | list[BasePass]) – 패스 매니저 일정에 추가될 패스입니다.

리턴 유형

없음

run

run(circuits, output_name=None, callback=None, num_processes=None, *, property_set=None)

GitHub

지정된 circuits 에서 모든 패스를 실행합니다.

매개변수

  • circuits (_CircuitsT) – 등록된 모든 패스를 통해 변환할 수 있는 회로입니다.

  • output_name (str | None) – 출력 회로 이름입니다. None 인 경우 입력 회로 이름과 동일하게 설정됩니다.

  • callback (Callable | None) –

    각 패스 실행 후 호출되는 콜백 함수입니다. 이 함수는 5개의 키워드 인수를 사용하여 호출됩니다:

    pass_ (Pass): the pass being run
    dag (DAGCircuit): the dag output of the pass
    time (float): the time to execute the pass
    property_set (PropertySet): the property set
    count (int): the index for the pass execution
    참고

    여기서 키워드 인수는 일반 함수에서 사용하는 키워드 인수와 다르다는 점에 주의하십시오 BasePassManager. 이 패스 관리자는 이러한 인수를 위에서 설명한 형식으로 변환합니다.

    정확한 인자 패스는 패스 관리자의 내부를 노출하며 패스 관리자 내부가 변경됨에 따라 변경될 수 있습니다. 여러 릴리스에 걸쳐 콜백 함수를 재사용하려는 경우 전달되는 인수가 동일한지 확인해야 합니다.

    콜백 기능을 사용하려면 kwargs dict를 받아 변수에 액세스하는 함수를 정의합니다. 예를 들어,

    def callback_func(**kwargs):
        pass_ = kwargs['pass_']
        dag = kwargs['dag']
        time = kwargs['time']
        property_set = kwargs['property_set']
        count = kwargs['count']
        ...
    참고

    다중 프로세싱으로 트랜스파일링을 실행할 때 콜백 함수는 상위 프로세스와 독립적으로 각 하위 프로세스의 컨텍스트 내에서 호출됩니다.

  • num_processes (int | None) – 병렬 실행이 활성화된 경우 시작할 수 있는 병렬 프로세스의 최대 개수. 이 인수는 사용자 설정 파일과 환경 변수에서 QISKIT_NUM_PROCS 해당 설정을 num_processes 재정의합니다. 시스템 None 기본값으로 설정된 경우 시스템 기본값 또는 로컬 사용자 구성이 사용됩니다.

  • property_set (dict[str, object] | None) – 주어진 경우, 패스 관리자 파이프라인의 초기값으로 사용할 PropertySet 로 사용할 초기 값입니다. 이 기능은 분석을 공유해도 안전하다고 판단되는 경우 한 실행에서 다른 실행으로 분석을 지속하는 데 사용할 수 있습니다. 일부 분석은 입력 회로와 특정 Target에만 해당되므로 이 인수를 사용할 때는 많은 주의를 기울여야 합니다.

리턴

변환된 회로입니다.

리턴 유형

_CircuitsT

to_flow_controller

to_flow_controller()

GitHub

이 관리자를 하나의 FlowControllerLinear로 선형화하여 다른 패스 관리자 안에 중첩할 수 있도록 합니다.

리턴

선형화된 패스 관리자.

리턴 유형

FlowControllerLinear

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