컴파일레이션 루틴
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)
원하는 트랜스파일 대상에 따라 하나 이상의 회로를 트랜스파일합니다.
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) –
매핑에서 타겟에 대한 커플링 맵(사용자 지정)을 지정합니다. 커플링 맵이 대칭인 경우 양쪽 방향을 모두 지정해야 합니다.
여러 형식이 지원됩니다:
CouplingMap인스턴스- 이 목록은 인접 행렬 형태로 제공되어야 하며, 각 요소는 백엔드에서 지원하는 모든 방향성 2-큐비트 상호작용을 나타내야 합니다. 예: g.:
[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
-
initial_layout (Layout |dict |list | None) –
물리적 큐비트에 대한 가상 큐비트의 초기 위치입니다. 이 레이아웃으로 회로가 커플링_맵 제약 조건과 호환되는 경우 이 레이아웃이 사용됩니다. 트랜스파일러가 스왑이나 다른 수단을 통해 큐비트를 허용할 수 있으므로 최종 레이아웃이 동일하다는 보장은 없습니다. 여러 형식이 지원됩니다:
-
Layout인스턴스 -
Dict * 가상에서 실제로:
{qr[0]: 0, qr[1]: 3, qr[2]: 5}-
물리적에서 가상으로:
{0: qr[0], 3: qr[1], 5: qr[2]}
-
-
목록
-
가상에서 실제로:
[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