Skip to main content
IBM Quantum Platform

BasisTranslator

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

GitHub

베이스: TransformationPass

주어진 EquivalenceLibrary 에서 번역 집합을 검색하여 게이트를 대상 기준으로 번역합니다.

이 패스는 여러 단계로 운영됩니다:

  • 입력 회로에서 소스 기준을 결정합니다.
  • 제공된 EquivalenceLibrary 의 규칙을 사용하여 장치의 target_basis에서 시작하여 기저 집합에 대한 Dijkstra 검색을 수행하고 소스 기저의 모든 게이트가 생성되면 검색이 중지됩니다.
  • 발견된 경로는 EquivalenceLibrary, 의 규칙 집합으로 게이트 교체 규칙 집합으로 구성됩니다.
  • 구성된 대체 규칙은 대상_basis에 아직 없는 각 연산 노드에 제자리에서 적용됩니다.

target 키워드 인수가 지정되었고, 해당 Target 객체가 (즉, 특정 큐비트 집합에 대해서만 정의된) 비전역 연산을 포함하는 경우( get_non_global_operation_names()에 의해 계산된 바와 같이), 이 단계에서는 출력 변환을 이러한 제약 조건에 맞추도록 시도합니다. 1 큐비트 연산의 경우 이는 간단합니다. 이 패스는 전역 연산 집합과 해당 큐비트에서만 정의된 연산 집합의 합집합을 사용하여 검색을 수행합니다. 다중 큐비트 게이트의 경우 상황이 조금 더 복잡합니다. 초기 동작은 단일 큐비트 경우와 비슷하지만, 단순히 연산을 수행하는 모든 큐비트를 사용하는 것만으로는(순서가 중요하지 않은 경우라도) 충분하지 않습니다. 또한 다중 큐비트 연산을 위한 양자 인수의 부분 집합 위에 정의된 잠재적인 국소 큐비트들도 고려해야 합니다. 즉, 비전역 다중 큐비트 게이트를 검색할 때 사용되는 대상은 전역 연산, 동일한 큐비트를 공유하는 비전역 다중 큐비트 게이트, 그리고 사용된 큐비트의 임의의 부분집합에 정의된 모든 비전역 게이트의 합집합이다.

참고

비글로벌 연산의 경우, 더 큰 멀티 큐비트 게이트의 하위 집합인 큐비트에 비글로벌 게이트가 정의되어 있는 경우 이 패스의 단일 실행이 불완전한 변환을 출력할 수 있습니다. 예를 들어, 큐비트 0에만 u 게이트가 정의되어 있고 큐비트 1에만 x 게이트가 있는 경우, 큐비트 0과 1에서 2큐비트 연산을 변환할 때 출력은 큐비트 1에는 u , 큐비트 0에는 x 이 될 수 있습니다. 일반적으로 이 패스를 한 번 더 실행하면 이러한 문제가 해결됩니다.


변환 오류

입력 게이트를 지정된 기저로 변환할 경로가 없는 경우, 이 패스는 오류를 발생시킵니다. 그러나 일반적인/기본 프리셋 패스 매니저의 경우, 이 패스는 컴파일 파이프라인의 여러 단계에서 여러 번 실행됩니다. 이는 변환되는 입력 게이트들이 회로 내의 중간 변환 과정을 통해 생성된 것이기 때문에, 원래는 transpile() 해당 입력 회로에 존재하지 않았을 가능성이 있음을 의미합니다.

이 오류가 발생하면, 일반적으로 대상 기저가 보편적이지 않거나, 해당 BasisTranslator 패스가 사용하는 인스턴스에 EquivalenceLibrary 추가적인 동치 규칙이 필요함을 의미합니다. 사용 자 정의 등가 규칙을 추가하는 방법에 대한 자세한 내용은 ‘사용자 정의 기준 게이트’를 참조하십시오.

BasisTranslator 인스턴스를 초기화합니다.

매개변수 등가_도서관

BasisTranslator 패스에서 사용할 동등성 라이브러리입니다. (이 라이브러리의 지침은 이 패스로 언롤되지 않습니다.)

유형 등가성_도서관

EquivalenceLibrary

매개변수 대상_기준

언롤링할 대상 기준 이름(예: ['u3', 'cx']).

유형 대상_기본

[liststr]

매개변수 대상

백엔드 컴파일 대상

대상 유형

대상

파라미터 최소_쿼비트

입력 dag의 연산을 변환하기 위한 최소 큐비트 수입니다.

유형 최소_쿼비트

int


속성

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

입력 DAGCircuit을 대상 기준으로 변환합니다.

매개변수

dag (DAGCircuit) – 입력 날짜

레이즈

TranspilerError – 목표 기준에 도달할 수 없는 경우

리턴

번역 회로.

리턴 유형

DAGCircuit

update_status

update_status(state, run_state)

GitHub

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

매개변수

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

리턴

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

리턴 유형

PassManagerState

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