컴파일레이션 루틴
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), 해당 옵션이 백엔드의 설정을 재정의합니다. -
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()를stage_name인자로"layout"와 함께 사용하면 설치된 플러그인 목록을 확인할 수 있습니다. -
routing_method (str | None) – 라우팅 패스 이름 (‘basic’, ‘lookahead’, ‘stochastic’, ‘sabre’, ‘none’). 이는 해당
routing스테이지에서 사용할 외부 플러그인 이름이 될 수도 있습니다. 인수로list_stage_plugins()를stage_name``"routing"지정하여 설치된 플러그인 목록을 확인할 수 있습니다. -
translation_method (str | None) – 번역 패스 이름 (
"default","translator"또는"synthesis").translation단계에 사용할 외부 플러그인 이름일 수도 있습니다. 를 사용하여 설치된 플러그인 목록을 확인할 수 있습니다list_stage_plugins()를stage_name인자로"translation"와 함께 사용하면 설치된 플러그인 목록을 확인할 수 있습니다. -
scheduling_method (str | None) – 스케줄링 패스 이름. *
'as_soon_as_possible': 큐비트 리소스에서 가능한 한 빨리 탐욕스럽게 지침을 예약하세요. (별칭:'asap') *'as_late_as_possible': 가능한 경우 큐비트를 접지 상태로 유지하는 등 인스트럭션을 늦게 예약합니다. (별칭:'alap')의 경우None, 예약이 수행되지 않습니다.scheduling단계에 사용할 외부 플러그인 이름일 수도 있습니다. 를 사용하여 설치된 플러그인 목록을 확인할 수 있습니다list_stage_plugins()를stage_name인자로"scheduling"와 함께 사용하면 설치된 플러그인 목록을 확인할 수 있습니다. -
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단계에 사용할 플러그인 이름입니다. 기본적으로 외부 플러그인은 사용되지 않습니다. 를 사용하여 설치된 플러그인 목록을 확인할 수 있습니다list_stage_plugins()를 스테이지 이름 인자로"init"와 함께 사용하면 설치된 플러그인 목록을 확인할 수 있습니다. -
optimization_method (str | None) –
optimization단계에 사용할 플러그인 이름입니다. 기본적으로 외부 플러그인은 사용되지 않습니다. 를 사용하여 설치된 플러그인 목록을 확인할 수 있습니다list_stage_plugins()를stage_name인자로"optimization"와 함께 사용하면 설치된 플러그인 목록을 확인할 수 있습니다. -
ignore_backend_supplied_default_methods (bool) –
True로 설정하면 백엔드에서 지정한 모든 기본 메서드가 무시됩니다. 일부 백엔드는 백엔드별 컴파일 기술을 지원하는 사용자 정의 컴파일 대상별 패스/플러그인을 지원하기 위해 대체 기본 메서드를 지정합니다. 이러한 기본값을 사용하지 않으려면 이 옵션을 사용하여 백엔드별 기본값을 비활성화할 수 있습니다. -
num_processes (int | None) – 병렬 실행이 활성화된 경우 이 호출을 트랜스파일하기 위해 실행할 최대 병렬 프로세스 수입니다. 이 인수는 사용자 구성 파일의
num_processes및QISKIT_NUM_PROCS환경 변수를 재정의합니다.None으로 설정하면 시스템 기본값 또는 로컬 사용자 구성이 사용됩니다. -
qubits_initially_zero (bool) – 입력 회로가 영 초기화되었는지 여부를 나타냅니다.
리턴
트랜스파일된 회로입니다.
레이즈
TranspilerError - 트랜스파일러에 잘못된 입력(예: 충돌하는 매개변수) 또는 패스에 오류가 있는 경우
리턴 유형
_CircuitT