Skip to main content
IBM Quantum Platform

컴파일레이션 루틴

qiskit.compiler


회로 컴파일 함수

transpile

qiskit.compiler.transpile(circuits, backend=None, basis_gates=None, coupling_map=None, initial_layout=None, layout_method=None, routing_method=None, translation_method=None, scheduling_method=None, dt=None, approximation_degree=1.0, seed_transpiler=None, optimization_level=None, callback=None, output_name=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, target=None, hls_config=None, init_method=None, optimization_method=None, ignore_backend_supplied_default_methods=False, num_processes=None, qubits_initially_zero=True)

GitHub

원하는 트랜스파일 대상에 따라 하나 이상의 회로를 트랜스파일합니다.

circuits 가 1을 초과하는 목록인 경우 다중 처리를 사용하여 병렬로 번역이 수행될 수 있습니다 QuantumCircuit 객체일 경우 로컬 환경 및 구성에 따라 다중 처리를 통해 병렬로 수행될 수 있습니다.

번역 대상 제약 조건의 우선 순위 지정은 다음과 같이 작동합니다. target 입력이 제공되면 backend 입력이나 느슨한 제약 조건(basis_gates, coupling_map, 또는 dt)보다 우선적으로 적용됩니다. backend 을 위 목록의 느슨한 제약 조건과 함께 제공하면 느슨한 제약 조건이 해당 백엔드 제약 조건보다 우선합니다. 이 동작은 아래 표에 요약되어 있습니다. 표의 첫 번째 열에는 사용자가 제공한 잠재적인 제약 조건이 요약되어 있으며 각 셀에는 우선 순위가 해당 특정 제약 조건 입력에 할당되었는지 또는 다른 입력(target/backend( V2 ))에 할당되었는지가 표시되어 있습니다.

사용자 제공
대상
백엔드( V2 )
기초_게이트대상기초_게이트
커플링_맵대상커플링_맵
dt대상dt
참고

대상 베이시스가 클리포드+T 게이트로 구성될 경우, 이 함수는 특화된 클리포드+T 트랜스파일러 파이프라인을 구축합니다. 더 자세한 내용은 를 참조하십시오 generate_preset_clifford_t_pass_manager() . 이 흐름에서는 연속 베이스 세트로의 트랜스파일링에만 적용되는 인수는 무시됩니다. 예를 들어, 단일 큐비트 유니터리를 클리포드+T 시퀀스로 합성할 때는 가 "unitary_synthesis_method" 고려되지 않습니다.

매개변수

  • circuits (_CircuitT) – 트랜스파일할 회로

  • backend (Backend | None) – 이 옵션이 설정된 경우, 트랜스파일러는 입력 회로를 이 대상 장치용으로 컴파일합니다. 다른 옵션이 명시적으로 설정된 경우(예: coupling_map), 해당 옵션이 백엔드의 설정을 덮어씁니다. 여기에는 Target 인스턴스를 위치 매개변수로 전달할 수도 있으며, 이 경우 해당 인스턴스는 마치 키워드 target 매개변수로 전달된 것처럼 처리됩니다. 이는.의 동작과 유사합니다 generate_preset_pass_manager().

  • basis_gates (list[str] | None) – 언롤할 기본 게이트 이름 목록 (예 g.:['u1', 'u2', 'u3', 'cx']). 인 경우 None, 언롤하지 않습니다.

  • coupling_map (CouplingMap |list[list[int]] | None) –

    매핑에서 타겟에 대한 커플링 맵(사용자 지정)을 지정합니다. 커플링 맵이 대칭인 경우 양쪽 방향을 모두 지정해야 합니다.

    여러 형식이 지원됩니다:

    1. CouplingMap 인스턴스
    2. 이 목록은 인접 행렬 형태로 제공되어야 하며, 각 요소는 백엔드에서 지원하는 모든 방향성 2-큐비트 상호작용을 나타내야 합니다. 예: g.: [[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
  • initial_layout (Layout |dict |list | None) –

    물리적 큐비트에 대한 가상 큐비트의 초기 위치입니다. 이 레이아웃으로 회로가 커플링_맵 제약 조건과 호환되는 경우 이 레이아웃이 사용됩니다. 트랜스파일러가 스왑이나 다른 수단을 통해 큐비트를 허용할 수 있으므로 최종 레이아웃이 동일하다는 보장은 없습니다. 여러 형식이 지원됩니다:

    1. Layout 인스턴스

    2. Dict * 가상에서 실제로:

      {qr[0]: 0,
       qr[1]: 3,
       qr[2]: 5}
      • 물리적에서 가상으로:

        {0: qr[0],
         3: qr[1],
         5: qr[2]}
    3. 목록

      • 가상에서 실제로:

        [0, 3, 5]  # virtual qubits are ordered (in addition to named)
      • 물리적에서 가상으로:

        [qr[0], None, None, qr[1], None, qr[2]]
  • layout_method (str | None) – 레이아웃 선택 단계의 이름 (‘trivial’, ‘dense’, ‘sabre’). 이는 해당 layout 스테이지에서 사용할 외부 플러그인 이름이 될 수도 있습니다. 인수로 를 list_stage_plugins()"layout" stage_name 지정하여 설치된 플러그인 목록을 확인할 수 있습니다.

  • routing_method (str | None) – 라우팅 패스의 이름 (‘basic’, ‘lookahead’, ‘stochastic’, ‘sabre’, ‘none’). 이는 해당 routing 스테이지에서 사용할 외부 플러그인 이름이 될 수도 있습니다. 인수로 를 list_stage_plugins()"routing" stage_name 지정하여 설치된 플러그인 목록을 확인할 수 있습니다.

  • translation_method (str | None) – 번역 패스의 이름 ("default", "translator" 또는 "synthesis"). 이는 해당 translation 스테이지에서 사용할 외부 플러그인 이름이 될 수도 있습니다. 인수로 를 list_stage_plugins()"translation" stage_name 지정하여 설치된 플러그인 목록을 확인할 수 있습니다.

  • scheduling_method (str | None) – 스케줄링 패스의 이름. * 'as_soon_as_possible': 큐비트 리소스에서 가능한 한 빨리, 탐욕적인 방식으로 명령어를 스케줄링합니다. (별칭: 'asap') * 'as_late_as_possible': 스케줄링 지침을 늦게 적용한다. 즉, 가능한 경우 큐비트를 기저 상태에 유지한다. (별칭: 'alap') 인 경우 None, 스케줄링이 수행되지 않습니다. 이는 해당 scheduling 스테이지에서 사용할 외부 플러그인 이름이 될 수도 있습니다. 인수로 를 list_stage_plugins()"scheduling" stage_name 지정하여 설치된 플러그인 목록을 확인할 수 있습니다.

  • dt (float | None) – 백엔드 샘플 시간(해상도)을 초 단위로 표시합니다. None (기본값)인 경우, backend.dt 가 사용됩니다.

  • approximation_degree (float | None) – 회로 근사화에 사용되는 휴리스틱 다이얼로, 는 (수치적 허용 오차 범위 내에서) 근사화를 하지 않음을 1.0 , 는 최대 근사화를 의미합니다 0.0 . 가 사용 target 가능한 경우, 의 값은 대상의 연산에 대해 보고된 오류율 범위 내에서 근사 처리가 허용됨을 나타냅니다 None .

  • seed_transpiler (int | None) – 트랜스파일러의 확률적 부분에서 사용되는 PRNG의 시드를 설정합니다. 이 매개변수는 환경 QISKIT_TRANSPILER_SEED 변수 및 사용자 설정 파일의 transpiler_seed 설정보다 우선합니다.

  • optimization_level (int | None) –

    회로에서 얼마나 많은 최적화를 수행할지 결정합니다. 레벨이 높을수록 더 최적화된 회로를 생성하지만, 트랜스퓔레이션 시간이 길어집니다.

    • 0: 최적화 없음
    • 1: 조명 최적화
    • 2: 강력한 최적화
    • 3: 더욱 강력한 최적화

    None 이면 레벨 2가 기본값으로 선택됩니다.

  • callback (Callable[[BasePass, DAGCircuit, float, PropertySet, int], Any] | None) –

    각 패스 실행 후 호출되는 콜백 함수입니다. 이 함수는 5개의 키워드 인수를 사용하여 호출됩니다. | pass_: 실행 중인 패스. | dag: 패스의 dag 출력. | time: 패스를 실행할 시간. | property_set: 프로퍼티 세트. | count: 패스 실행을 위한 인덱스. 전달된 정확한 인수는 패스 매니저의 내부를 노출하며, 패스 매니저 내부가 변경됨에 따라 변경될 수 있습니다. 여러 릴리스에 걸쳐 콜백 함수를 재사용하려는 경우 전달되는 인수가 동일한지 확인해야 합니다. 콜백 기능을 사용하려면 kwargs dict를 받아 변수에 액세스하는 함수를 정의하세요. 예를 들어,

    def callback_func(**kwargs):
        pass_ = kwargs['pass_']
        dag = kwargs['dag']
        time = kwargs['time']
        property_set = kwargs['property_set']
        count = kwargs['count']
        ...
    transpile(circ, callback=callback_func)
  • output_name (str |list[str] | None) – 출력 회로를 식별하는 문자열이 포함된 목록. 목록의 길이는 circuits 매개변수의 길이와 정확히 일치해야 합니다.

  • unitary_synthesis_method (str) – 사용할 단일 합성 방법의 이름. 기본적으로 'default' 가 사용됩니다. .을 사용하면 설치된 플러그인 목록을 확인할 수 있습니다 unitary_synthesis_plugin_names().

  • unitary_synthesis_plugin_config (dict | None) – 유니터리 합성 플러그인에 직접 전달될 선택적 구성 사전입니다. 기본적으로 이 설정은 아무런 영향을 미치지 않습니다. 기본 단일 합성 방식은 사용자 지정 구성을 지원하지 않기 때문입니다. 이는 unitary_synthesis_method 인수를 사용하여 단일 합성 플러그인이 지정된 경우에만 필요할 것입니다. 이 옵션은 각 단일 합성 플러그인마다 설정이 다르므로, 이 옵션을 사용하는 방법은 해당 플러그인의 설명서를 참조하십시오.

  • target (Target | None) – 백엔드 트랜스파일러 대상입니다. 일반적으로 이는 인수의 backend 일부로 지정되지만, 객체를 Target 직접 생성한 경우에는 여기에서 수동으로 지정할 수 있습니다. backend이렇게 하면.에서 지정된 대상이 재정의됩니다.

  • hls_config (HLSConfig | None) – 변환 단계에 HighLevelSynthesis 직접 전달될 선택적 구성 클래스입니다 HLSConfig . 이 구성 클래스를 사용하면 다양한 상위 수준 객체에 대한 합성 알고리즘 목록과 해당 매개변수를 지정할 수 있습니다.

  • init_method (str | None) – 해당 init 스테이지에서 사용할 플러그인 이름. 기본적으로 외부 플러그인은 사용되지 않습니다. 단계 이름 인수로 "init" 를 list_stage_plugins() 사용하여 설치된 플러그인 목록을 확인할 수 있습니다.

  • optimization_method (str | None) – 해당 optimization 스테이지에서 사용할 플러그인 이름. 기본적으로 외부 플러그인은 사용되지 않습니다. 인수로 를 list_stage_plugins()"optimization" stage_name 지정하여 설치된 플러그인 목록을 확인할 수 있습니다.

  • ignore_backend_supplied_default_methods (bool) – 이 값으로 설정하면 백엔드에서 지정한 모든 True 기본 메서드가 무시됩니다. 일부 백엔드는 백엔드 고유의 컴파일 기법을 지원하는, 컴파일 대상별 맞춤형 패스/플러그인을 지원하기 위해 대체 기본 메서드를 지정하기도 합니다. 이러한 기본값을 사용하지 않으려면, 이 옵션을 사용하여 해당 백엔드별 기본값을 비활성화할 수 있습니다.

  • num_processes (int | None) – 병렬 실행이 활성화된 경우, 이 transpile 호출에 대해 실행할 병렬 프로세스의 최대 개수입니다. 이 설정은 사용자 설정 파일과 환경 QISKIT_NUM_PROCS 변수의 num_processes 설정을 재정의합니다. 이 옵션이 설정된 경우 시스템 None 기본값 또는 로컬 사용자 설정이 사용됩니다.

  • qubits_initially_zero (bool) – 입력 회로가 0으로 초기화되었는지 여부를 나타냅니다.

리턴

트랜스파일된 회로입니다.

레이즈

  • TranspilerError - 트랜스파일러에 잘못된 입력(예: 충돌하는 매개변수) 또는 패스에 오류가 있는 경우
  • TypeError – 가 위치 backend 인자로 전달되었는데 Target , 가 키워드 인자로도 지정된 target 경우.

리턴 유형

_CircuitT

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