UnitarySynthesis
class qiskit.transpiler.passes.UnitarySynthesis(*args, **kwargs)
베이스: TransformationPass
기본 게이트에 따라 게이트를 합성합니다.
일부 베이시스 게이트에 대해 유니너리를 합성합니다.
이 패스는 일부 게이트 충실도(를 통해 target)를 주어지면 유니터리를 근사할 수 있다. 휴리스틱 다이얼을 설정하여 더 많은 approximation_degree근사값을 강제할 수 있습니다.
이 패스는 기본 합성 플러그인을 사용할 때 멀티스레드 방식으로 작동하며, 기본적으로 CPU 개수와 동일한 수의 스레드로 구성된 스레드 풀을 생성할 수 있습니다. 환경 변수를 RAYON_NUM_THREADS 사용하여 스레드 수를 조정할 수 있습니다. 예를 들어, 를 설정하면 RAYON_NUM_THREADS=4 스레드 풀이 4개의 스레드로 제한됩니다.
매개변수
- basis_gates – 대상 게이트 이름 목록. 이 항목이 지정되지 않은 경우, 해당
target인수를 반드시 사용해야 합니다. 이 항목과 항목이target모두 지정된 경우, 의target값이 사용되며 이 항목은 무시됩니다. - approximation_degree – 회로 근사화에 사용되는 휴리스틱 다이얼 ( 1.0=no 근사법, 0.0=maximal 근사법). 근사화를 통해 합성 회로의 비용을 절감할 수 있지만, 그 대가로 원래의 단일 회로에서 벗어나게 됩니다. 만약
None그렇다면, 근사화는 게이트 충실도를 바탕으로 수행된다. - coupling_map – 물리적 회로에서 합성이 수행될 경우 대상의 결합 맵. 의
True경우None``pulse_optimize/이고,natural_direction의True경우 /일 때, coupling`None`_map의 방향성이 고려됩니다. - pulse_optimize – 합성 과정에서 펄스를 최적화할지 여부. 값이 인 경우
None시도를 하되, 성공하지 못하면 대체 방식으로 전환합니다. 펄스 최적화 합성이 성공하지 못할 경우, 값은True오류를 발생시킵니다. - natural_direction – 2-큐비트 게이트의 방향성을 고려하여 합성을 적용할지 여부.
None다음True중 하나인 경우에만pulse_optimize적용됩니다. 자연스러운 방향은 먼저 결합 매핑이 단방향인지 여부를 확인함으로써 결정됩니다. 결합 맵이 없거나 결합 맵이 양방향인 경우, 대상 속성 중 지속 시간이 더 짧은 게이트 방향이 사용됩니다.TranspilerErrorTrue로 설정된 상태에서 자연스러운 방향을 파악할 수 없는 경우, 예외를 발생시킵니다. None으로 설정된 경우, 자연스러운 방향을 결정할 수 없어도 예외가 발생하지 않습니다. - synth_gates – 합성할 게이트 목록.
['unitary']None이고pulse_optimize가 False이거나 None인 경우, 기본값으로 를 사용합니다. 만약None이고pulse_optimize == True라면, 기본값은['unitary', 'swap'] - method – 사용할 단일 합성 방법 플러그인.
- 최소_큐비트 - 합성할 유니티의 최소 큐비트 수입니다. 이 값을 설정하고 유니티가 지정된 큐비트 수보다 작으면 합성이 되지 않습니다.
- plugin_config - 지정된 단일 합성 플러그인에 직접 전달되는 선택적 추가 구성 인수(
dict)입니다. 기본적으로 기본 플러그인에는 추가 인수가 없으므로 이 옵션은 아무런 영향을 미치지 않습니다. 사용 방법은 단일 합성 플러그인 설명서를 참조하세요. - 대상 - 패스를 컴파일할 대상 디바이스의 선택적
Target- 패스를 컴파일하는 대상 디바이스에 대한 선택 사항입니다. 이 값을 지정하면basis_gates및coupling_map에 설정된 값을 대체합니다. - fallback_on_default – 기본이 아닌 합성
method방법이 지정되었으나 해당 연산을 합성할 수 없거나 합성된 회로가 대상 사양을 충족하지 못하는 경우, 기본 합성 방법을 사용할지 여부를 지정합니다.
레이즈
TranspilerError – 가 method 지정되었으나 설치된 플러그인 목록에서 찾을 수 없는 경우. 설치된 플러그인 목록은 다음 명령어를 사용하여 조회할 수 있습니다. unitary_synthesis_plugin_names()
속성
is_analysis_pass
패스가 분석 패스인지 확인합니다.
패스가 AnalysisPass, 인 경우 패스가 DAG를 분석하고 해당 분석 결과를 속성 집합에 쓸 수 있음을 의미합니다. 이러한 종류의 패스에서는 DAG에 대한 수정이 허용되지 않습니다.
is_transformation_pass
패스가 변환 패스인지 확인합니다.
패스가 TransformationPass, 인 경우 패스가 DAG를 조작할 수는 있지만 속성 집합을 수정할 수는 없음을 의미합니다(단, 읽을 수는 있음).
메소드
execute
execute(passmanager_ir, state, callback=None)
입력된 키스킷 IR에 대한 최적화 작업을 실행합니다.
매개변수
- passmanager_ir (DAGCircuit) – 최적화할 Qiskit IR.
- state (DAGCircuit) – 패스 관리자 자체에 의한 워크플로 실행과 관련된 상태.
- callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – 최적화 작업이 실행될 때마다 호출되는 콜백 함수입니다.
리턴
최적화된 키스킷 IR 및 워크플로 상태.
리턴 유형
튜플 [ DAGCircuit, PassManagerState ]
name
run
run(dag)
dag 에서 UnitarySynthesis 패스를 실행합니다.
매개변수
dag (DAGCircuit) – 입력합니다.
리턴
대상 기준으로 합성된 UnitaryGates 으로 출력 dag를 출력합니다.
리턴 유형
update_status
update_status(state, run_state)
워크플로 상태를 업데이트합니다.
매개변수
- state (PassManagerState) – 관리자 상태를 전달하여 업데이트합니다.
- run_state (RunState) – 현재 작업의 완료 상태입니다.
리턴
패스 관리자 상태가 업데이트되었습니다.
리턴 유형