StagedPassManager
class qiskit.transpiler.StagedPassManager(stages=None, **kwargs)
베이스: PassManager
개별 단계로 구축된 패스 관리자 파이프라인입니다.
이 클래스를 사용하면 고정 단계로 컴파일 파이프라인을 구축할 수 있습니다. 각 StagedPassManager 은 고정된 순서로 실행되는 단계 목록을 정의하며, 각 단계는 독립 실행형 PassManager 인스턴스로 정의됩니다. 정의된 각 단계에 대한 pre_ 및 post_ 단계도 있습니다. 이를 통해 여러 단계를 쉽게 구성하고 교체할 수 있으며, 후크 포인트를 추가하여 파이프라인을 프로그래밍 방식으로 수정할 수도 있습니다. 단계별 패스 관리자를 사용하는 경우 개별 패스는 수정할 수 없으며 단계만 수정할 수 있습니다.
기본적으로 StagedPassManager 인스턴스는 추상적인 가상 회로에서 지정된 백엔드에서 실행할 수 있도록 최적화되어 있는 일반적인 전체 컴파일 파이프라인을 정의합니다. 기본 사전 정의 단계는 다음과 같습니다:
init- 백엔드에 회로를 임베드하기 전에 실행할 초기 패스입니다.layout- 회로의 가상 큐비트를 백엔드의 물리적 큐비트에 매핑합니다.routing- 백엔드의 커플링 맵에서 선택한 레이아웃으로 회로를 실행할 수 있을 때까지 필요에 따라 게이트를 삽입하여 큐비트 상태를 이동합니다.translation- 회로의 게이트를 대상 백엔드의 기본 게이트 세트로 변환합니다.optimization- 회로를 최적화하여 실행 비용을 줄입니다. 이러한 패스는 일반적으로 수렴 기준이 충족될 때까지 반복적으로 실행됩니다. 예를 들어, 수렴 기준은 연속적인 반복에서 회로 깊이가 감소하지 않는 것일 수 있습니다.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)
패스 일정에 패스 세트를 추가합니다.
매개변수
passes (Task |list[Task]) – 스케줄에 추가할 트랜스파일러 패스 집합.
레이즈
TranspilerError – ‘패스’ 중 하나가 올바른 패스가 아닌 경우.
리턴 유형
없음
draw
draw(filename=None, style=None, raw=False)
스테이지 패스 관리자를 그립니다.
이 함수는 사용자가 제어할 수 있는 문자열(예: 경로 이름)이 포함된 파일에 대해 시스템의 Graphviz 도구를 호출합니다. 이 함수는 신뢰할 수 있는 입력에 대해서만 호출하는 것이 좋습니다.
매개변수
remove
remove(index)
스케줄러에서 특정 패스를 제거합니다.
매개변수
index (int) – 에서 해당 위치에 따라 제거할 인덱스를 전달합니다 passes().
레이즈
PassManagerError – 인덱스를 찾을 수 없는 경우.
리턴 유형
없음
replace
replace(index, passes)
스케줄러에서 특정 패스를 교체합니다.
매개변수
- index (int) – passes() 내의 위치를 기준으로, 대체할 인덱스를 전달합니다.
- passes (BasePass | list[BasePass]) – 패스 매니저 일정에 추가될 패스 세트.
리턴 유형
없음
run
run(circuits, output_name=None, callback=None, num_processes=None, *, property_set=None)
지정된 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()
이 관리자를 하나의 FlowControllerLinear로 선형화하여 다른 패스 관리자 안에 중첩할 수 있도록 합니다.
리턴
선형화된 패스 관리자.
리턴 유형