Skip to main content
IBM Quantum Platform

TranslateParameterizedGates

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

GitHub

베이스: TransformationPass

매개변수화된 게이트를 지원되는 베이시스 집합으로 변환합니다.

supported_gates 목록에 없는 파라미터화된 명령어가 발견되면 해당 명령어가 한 단계 분해되고 파라미터화된 하위 블록이 재귀적으로 분해됩니다. 매개변수화된 모든 게이트가 supported_gates 에 있거나 게이트에 정의가 없고 베이스로의 변환이 시도되면 재귀가 중지됩니다(예: 지정된 게이트 목록에 없는 UGate 의 경우).

예제

다음은 중첩 회로를 곱하는 것입니다:

from qiskit.circuit import QuantumCircuit, ParameterVector
from qiskit.transpiler.passes import TranslateParameterizedGates

x = ParameterVector("x", 4)
block1 = QuantumCircuit(1)
block1.rx(x[0], 0)

sub_block = QuantumCircuit(2)
sub_block.cx(0, 1)
sub_block.rz(x[2], 0)

block2 = QuantumCircuit(2)
block2.ry(x[1], 0)
block2.append(sub_block.to_gate(), [0, 1])

block3 = QuantumCircuit(3)
block3.ccx(0, 1, 2)

circuit = QuantumCircuit(3)
circuit.append(block1.to_gate(), [1])
circuit.append(block2.to_gate(), [0, 1])
circuit.append(block3.to_gate(), [0, 1, 2])
circuit.cry(x[3], 0, 2)

supported_gates = ["rx", "ry", "rz", "cp", "crx", "cry", "crz"]
unrolled = TranslateParameterizedGates(supported_gates)(circuit)

로 분해됩니다:

     ┌──────────┐     ┌──────────┐┌─────────────┐
q_0:Ry(x[1]) ├──■──┤ Rz(x[2]) ├┤0            ├─────■──────
     ├──────────┤┌─┴─┐└──────────┘│             │     │
q_1:Rx(x[0]) ├┤ X ├────────────┤1 circuit-92 ├─────┼──────
     └──────────┘└───┘            │             │┌────┴─────┐
q_2: ─────────────────────────────┤2            ├┤ Ry(x[3])
                                  └─────────────┘└──────────┘

매개변수

  • supported_gates – 지원되는 베이스 게이트 목록으로, 문자열로 지정됩니다. 이 경우 None, a를 target 반드시 지정해야 합니다.
  • 등가_도서관 - 게이트를 번역할 등가 라이브러리입니다. 모든 키스킷 표준 게이트의 동등성 라이브러리를 기본값으로 사용합니다.
  • 대상 - A Target 지원되는 작업을 포함합니다. None, supported_gates 을 설정해야 합니다. 이 인수는 둘 다 설정된 경우 supported_gates 보다 우선합니다.

레이즈

ValueError - supported_gatestarget 중 어느 것도 통과하지 못한 경우.


속성

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

트랜스파일러 패스를 실행합니다.

매개변수

dag (DAGCircuit) – 파라미터화된 게이트가 풀려야 하는 DAG 회로입니다.

리턴

파라미터화된 게이트가 풀린 DAG입니다.

레이즈

QiskitError – 회로를 펼 수 없는 경우.

리턴 유형

DAGCircuit

update_status

update_status(state, run_state)

GitHub

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

매개변수

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

리턴

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

리턴 유형

PassManagerState

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