대상
class qiskit.transpiler.Target(description=None, num_qubits=0, dt=None, granularity=1, min_length=1, pulse_alignment=1, acquire_alignment=1, qubit_properties=None, concurrent_measurements=None, **_subclass_kwargs)
베이스: BaseTarget
Target 객체의 의도는 키스킷 컴파일러에 특정 백엔드의 제약 조건을 알려 컴파일러가 입력 회로를 작동하고 장치에 최적화된 것으로 컴파일할 수 있도록 하는 것입니다. 현재 백엔드에 대한 지침과 해당 속성에 대한 설명과 일부 타이밍 정보가 포함되어 있습니다. 그러나 이 정확한 인터페이스는 컴파일러의 요구 사항이 변경됨에 따라 시간이 지남에 따라 진화할 수 있습니다. 이러한 변경 사항은 버전 관리, 하위 클래스 또는 믹스인을 통해 타겟이 노출하는 정보 집합에 추가할 때 이전 버전과 호환되고 제어되는 방식으로 수행됩니다.
간단한 예로, 백엔드에 2개의 큐비트가 있고, 두 큐비트 모두에 대해 양방향으로 UGateCXGate 를 지원한다고 가정해 봅시다. 이를 모델링하려면 다음과 같이 타깃을 생성하면 됩니다:
from qiskit.transpiler import Target, InstructionProperties
from qiskit.circuit.library import UGate, CXGate
from qiskit.circuit import Parameter
gmap = Target()
theta = Parameter('theta')
phi = Parameter('phi')
lam = Parameter('lambda')
u_props = {
(0,): InstructionProperties(duration=5.23e-8, error=0.00038115),
(1,): InstructionProperties(duration=4.52e-8, error=0.00032115),
}
gmap.add_instruction(UGate(theta, phi, lam), u_props)
cx_props = {
(0,1): InstructionProperties(duration=5.23e-7, error=0.00098115),
(1,0): InstructionProperties(duration=4.52e-7, error=0.00132115),
}
gmap.add_instruction(CXGate(), cx_props)Target 의 각 명령은 Target의 해당 개체 인스턴스를 고유하게 식별하는 고유한 문자열 이름으로 인덱싱됩니다 Instruction 객체의 인스턴스를 고유하게 식별하는 고유한 문자열 이름으로 인덱싱됩니다. 이름과 대상의 인스턴스 사이에는 1:1 매핑이 있으며 Instruction 인스턴스 간에 1:1 매핑이 있으며 각 이름은 고유해야 합니다. 기본적으로 이름은 명령어의 name 어트리뷰트이지만 무엇이든 설정할 수 있습니다. 이를 통해 단일 대상에 서로 다른 매개 변수를 가진 동일한 인스트럭션 클래스의 인스턴스를 여러 개 가질 수 있습니다. 예를 들어, 백엔드 대상에 두 개의 인스턴스가 있는 경우 RXGate 의 인스턴스가 두 개 있고 하나는 모든 세타에 대해 파라미터화되어 있고 다른 하나는 pi/6 의 세타에 맞게 조정되어 있는 경우 다음과 같이 추가할 수 있습니다:
import math
from qiskit.transpiler import Target, InstructionProperties
from qiskit.circuit.library import RXGate
from qiskit.circuit import Parameter
target = Target()
theta = Parameter('theta')
rx_props = {
(0,): InstructionProperties(duration=5.23e-8, error=0.00038115),
}
target.add_instruction(RXGate(theta), rx_props)
rx_30_props = {
(0,): InstructionProperties(duration=1.74e-6, error=.00012)
}
target.add_instruction(RXGate(math.pi / 6), rx_30_props, name='rx_30')그런 다음 target 객체에서 rx_30 으로 액세스하면 고정 각도를 가져옵니다 RXGate 을 가져오고 rx 는 매개변수화된 RXGate.
메서드를 add_instruction() 호출할 때 키워드 angle_bounds 인수를 사용하여 대상 게이트의 유효 값에 대한 경계를 선택적으로 지정할 수 있습니다. 경계는 개별 명령어가 아닌 연산에 설정되므로, 해당 연산을 호출할 때 정의된 모든 add_instruction() qargs에 대해 경계가 적용됩니다. 범위는 두 개의 부동 소수점 숫자로 구성된 튜플 목록으로 지정되며, 첫 번째 숫자는 하한을, 두 번째 숫자는 상한을 나타냅니다. 예를 들어, 각도 경계를 지정했다면:
[(0.0, 3.14), (-3.14, 3.14), (0.0, 1.0)]첫 번째 파라미터는 0에서 3.14 사이의 각도, 두 번째 파라미터는 -3.14 에서 3.14 사이의 각도, 세 번째 파라미터는 0에서 1 사이의 각도를 허용하는 3개의 파라미터 게이트에 대한 각도 바운드를 나타냅니다. 모든 바운드도 포괄적으로 설정됩니다. 바인드는 매개변수에 제약 조건이 없음을 나타내는 2-튜플 대신 None 으로 지정할 수도 있습니다. 예를 들어,
[(0.0, 3.14), None, None]는 3개의 매개변수 게이트에 대한 바운드 각도를 나타내며, 첫 번째 매개변수만 0.0 ~ 3.14 사이의 각도로 제한되고 다른 매개변수는 모든 값을 허용합니다.
gate_has_angle_bounds()다음 명령어를 사용하여 대상 내의 연산 중 각도 제한이 설정된 것이 있는지 확인할 수 있으며, has_angle_bounds() 또한 대상 내의 특정 이름에 각도 제한이 설정되어 있는지 확인할 수도 있습니다. supported_angle_bound()특정 매개변수 값 집합이 각도 범위에 부합하는지 여부는 다음을 통해 확인할 수 있습니다. 사전 설정된 패스 관리자에서 이 WrapAngles 패스는 각도 범위를 강제 적용하는 데 사용되며, 이 기능이 작동하려면 해당 패스에서 WrapAngleRegistry 사용하는 함수를 제공해야 합니다. 이에 대한 자세한 내용은 “게이트의 각도 범위 ”에서 확인할 수 있습니다.
이 클래스는 인스트럭션의 이름을 키로 사용하여 매핑 프로토콜을 통해 쿼리할 수 있습니다. 메서드를 통해 인스트럭션의 속성을 수정할 수 있습니다 update_instruction_properties() 메서드를 통해 프로퍼티를 수정할 수 있습니다. 매핑 프로토콜을 통한 수정 또는 객체의 속성 변경은 InstructionProperties 객체의 속성을 변경하는 것은 지원되지 않으며 그렇게 하면 객체의 내부 상태가 무효화됩니다.
이 클래스는 큐비트 인덱스가 0에서 시작하고 연속된 집합이라고 가정하며, 서브매핑을 원한다면 비트를 새로운 Target 객체로 재색인해야 합니다.
이 클래스는 게이트, 쿼리 및 프로퍼티의 추가만 지원합니다. 이 중 하나를 제거해야 하는 경우 가장 좋은 방법은 기존 객체를 반복하여 새 하위 집합을 만드는 것입니다(또는 이 작업을 수행하는 방법 중 하나를 사용하세요). 개체는 내부적으로 다른 보기를 캐시하며 제거 시 무효화될 가능성이 있습니다.
서브클래스로 분류
기술적으로 서브클래싱하는 것은 가능하지만 Target를 서브클래스화할 수는 있지만, 대부분의 내장 정보는 Rust에 있으며 내장된 트랜스파일러 패스에서 Rust로부터 쿼리된다는 점에 유의하세요. Python -공간 오버라이드는 Rust에 표시되지 않으며, 키스킷에 내장된 트랜스파일러 패스의 동작을 변경하는 데 의존해서는 안 됩니다. Target 는 주로 특수한 서브클래스가 아닌 특수한 생성자가 있는 QPU를 표현하는 것으로 간주됩니다 Target 를 생성하는 일반적인 API는 사용자 정의 이니셜라이저가 있는 서브클래스가 아니라 Target를 반환하는 함수여야 하며, 커스텀 이니셜라이저가 있는 서브클래스는 아닙니다.
서브클래싱을 사용하여 객체에 추가적인 TargetPython -space 속성을 추가할 수 있습니다. 예를 들어, 이를 통해 사용자 정의 백엔드 전용 트랜스파일러 단계에서 해당 속성을 해석할 수 있습니다 Target . 이 객체는 stage-plugin 생성자에 전달됩니다.
서브클래스를 서브클래스화해서는 안 된다 Target 를 사용하여 키스킷의 내장된 패스의 동작을 수정하려고 시도해서는 안 되며, Python -공간 서브클래싱은 Rust로 작성된 패스에서 볼 수 없습니다.
또한, 핵심이 Target 의 핵심은 Rust로 작성되었으므로 __new__() 를 이니셜라이저로 사용하므로 올바른 인수가 기본 구현에 전달되도록 해야 합니다. 메서드의 서명을 재정의하는 경우 __init__() 메서드의 서명을 재정의하는 경우, 동일한 서명을 가진 __new__() 의 오버라이드도 포함해야 하며, 이는 올바른 방식으로 super().__new__() 을 호출합니다.
새 Target 객체를 생성합니다.
매개변수 설명
대상을 설명하는 선택적 문자열입니다.
유형 설명
str
파라미터 번호_쿼비트
백엔드 대상에 있는 큐비트 수를 지정하는 선택적 int입니다. 이것은 구조에 대한 엄격한 제한이 아닙니다 add_instruction() 을 호출하면 주어진 프로퍼티의 구체적인 qargs 을 수용하도록 num_qubits 세트가 업데이트됩니다.
이것은 명시적으로 None 으로 설정하여 Target 로 설정하여 큐비트 수에 제한을 두지 않는 시뮬레이터 또는 기타 추상 머신을 나타낼 수 있습니다. 이 경우 대상에 추가된 모든 인스트럭션은 글로벌( properties=None 또는 properties={None: None})이어야 합니다.
유형 숫자_쿼비트
int
매개변수 dt
입력 신호의 시스템 시간 분해능(초 단위)
유형 DT
플로트(스위치일 경우)
매개변수 세분성
최소 펄스 게이트 분해능을 dt 단위로 나타내는 정수 값입니다. 사용자 정의 펄스 게이트는 이 세분성 값의 배수만큼 지속 시간을 가져야 합니다.
유형 세분성
int
파라미터 최소_길이
최소 펄스 게이트 길이를 dt 단위로 나타내는 정수 값입니다. 사용자 정의 펄스 게이트는 이 길이보다 길어야 합니다.
유형 최소_길이
int
파라미터 펄스_얼라인먼트
게이트 명령 시작 시간의 시간 분해능을 나타내는 정수 값입니다. 게이트 인스트럭션은 정렬 값의 배수인 시간에 시작해야 합니다.
유형 펄스_얼라인먼트
int
파라미터 획득_얼라인먼트
측정 명령 시작 시간의 시간 분해능을 나타내는 정수 값입니다. 측정 명령은 정렬 값의 배수인 시간부터 시작해야 합니다.
유형 획득_정렬
int
파라미터 쿼비트_프로퍼티
대상 장치의 각 큐비트 특성을 정의하는 QubitProperties 대상 디바이스의 각 큐비트 특성을 정의하는 객체 목록입니다. 지정한 경우 이 목록의 길이는 대상의 큐비트 수와 일치해야 하며, 목록의 인덱스는 프로퍼티가 정의된 큐비트 수와 일치해야 합니다. 일부 큐비트에 사용할 수 있는 프로퍼티가 없는 경우 해당 항목을 None
유형 쿼비트_프로퍼티
목록
파라미터 동시_측정
함께 측정해야 하는 큐비트 세트의 목록입니다. [[0, 1], [2, 3, 4]] 와 같이 중첩된 목록으로 제공해야 합니다.
유형 동시_측정
목록
레이즈 ValueError
num_qubits 와 qubit_properties 이 모두 정의되어 있고 num_qubits 의 값이 qubit_properties 의 길이와 다른 경우.
속성
acquire_alignment
concurrent_measurements
description
dt
Dt를 반환합니다.
granularity
instructions
대상에 대한 튜플 목록(Instruction, (qargs)) 대상의 튜플 목록 가져오기
전역으로 정의된 가변 너비 연산의 경우 튜플은 (class, None) 형식이 되며, 여기서 class는 전역으로 정의된 실제 연산 클래스입니다.
min_length
num_qubits
operation_names
대상에서 작업 이름을 가져옵니다.
operations
대상에서 작업 개체를 가져옵니다.
physical_qubits
물리적 큐비트의 정렬된 목록을 반환합니다.
pulse_alignment
qargs
타겟의 qarg 집합입니다.
qubit_properties
메소드
add_instruction
add_instruction(instruction, properties=None, name=None, *, angle_bounds=None)
에 새 인스트럭션을 추가합니다 Target
Target 객체는 엄격하게 추가적이므로 Target 객체를 수정하는 기본 방법입니다. 일반적으로 이 기능을 사용하여 Target 을 완전히 채운 후 BackendV2. 예를 들어,
from qiskit.circuit.library import CXGate
from qiskit.transpiler import Target, InstructionProperties
target = Target()
cx_properties = {
(0, 1): None,
(1, 0): None,
(0, 2): None,
(2, 0): None,
(0, 3): None,
(2, 3): None,
(3, 0): None,
(3, 2): None
}
target.add_instruction(CXGate(), cx_properties)속성이 없는 대상에 CXGate 속성(기간, 오류 등)이 없는 대상에 커플링 에지 목록을 추가합니다: (0, 1), (1, 0), (0, 2), (2, 0), (0, 3), (2, 3), (3, 0), (3, 2). 인스트럭션에 사용할 수 있는 속성이 있는 경우 속성 사전에서 None 값을 InstructionProperties 객체로 대체할 수 있습니다. 이 패턴은 타겟이 지원하는 각 Instruction 대상마다 이 패턴이 반복됩니다.
매개변수
- instruction (Union[qiskit.circuit.Instruction, Type[qiskit.circuit.Instruction]]) – 맵에 추가할 연산 객체. 매개변수가 지정된 경우, 해당 매개변수의 값은 무엇이든 설정할 수 있습니다.
MCXGate선택적으로 가변 너비 명령어(예: 또는 와ForLoop같은 제어 흐름 연산)의 경우 클래스를 지정할 수 있습니다. 클래스가 지정된 경우, 해당name인수를 반드시 지정해야 합니다. 클래스가 사용될 때, 게이트는 전역 변수로 간주되며 어떤 속성도 설정되어 있지 않은 것으로 처리됩니다. - properties (dict) – 백엔드에서 해당 명령어 구현을 위한 객체에 대한
InstructionProperties객체에 대한 항목의 사전입니다. 프로퍼티는 모든 명령어 구현에 대해 선택 사항이며, 백엔드에 사용할 수 없는 경우InstructionProperties백엔드에 사용할 수 없는 경우 값은 None이 될 수 있습니다. 인스트럭션에 제약이 없는 경우(노이즈 없는/이상적 시뮬레이션에서처럼){None, None}로 설정하면 모든 큐비트(또는 다중 큐비트 게이트의 경우 사용 가능한 모든 큐비트 퍼뮤테이션)에서 실행됨을 나타냅니다. 첫 번째None는 모든 큐비트에 적용됨을 나타내고 두 번째None는 명령에 대한InstructionProperties가 없음을 나타냅니다. 기본적으로 속성이 설정되어 있지 않으면{None: None}을 전달하는 것과 같습니다. - name (str) – 인스트럭션을 식별하는 데 사용할 선택적 이름입니다. 지정하지 않으면
namegate속성이 사용됩니다.Target의 모든 게이트에는 고유한 이름이 필요합니다. 백엔드는 각각에 고유한 이름을 제공하여 단일 게이트의 다양한 매개변수화를 구분할 수 있습니다(예: “rx30”, “rx60”, `”rx90”`` 클래스 설명서의 예시와 유사)Target클래스). - angle_bounds (list) – 주어진 게이트에 대한 파라미터의 경계입니다. 이는 해당 위치의 매개변수에 허용되는 플로트 값의 하한과 상한을 (포괄적으로) 나타내는 튜플 목록(낮음, 높음)으로 지정됩니다. 매개변수에 바인딩된 각도가 없는 경우
None을 사용하여 해당 각도를 표현할 수 있습니다. 예를 들어 3 파라미터 게이트에 두 번째 파라미터에만 바운드가 있는 경우[None, [0, 3.14], None]으로 표현할 수 있는데, 이는 첫 번째와 세 번째 파라미터는 모든 값을 허용하지만 두 번째 파라미터는 0에서 3.14 사이의 값만 허용한다는 의미입니다.
레이즈
- AttributeError - 게이트가 이미 맵에 있는 경우
- TranspilerError – 연산 클래스가 전달되었으나
instruction이름이 지정되지 않았거나properties가 설정된 경우.
build_coupling_map
build_coupling_map(two_q_gate=None, filter_idle_qubits=False)
대상에서 CouplingMap 를 가져옵니다.
연결성 제약 조건이 있는 2큐비트 연산과 전역적으로 정의된 연산이 혼합되어 있는 경우에도, 전역적 연결성은 대상에 대한 제약이 None 없음을 의미하므로 이 경우 역시 반환됩니다. 제약 조건이 있는 두 큐비트 연산의 제약 조건을 확인하려면, 인수를 two_q_gate 사용하여 제약 조건이 있는 게이트로만 출력을 제한해야 합니다.
매개변수
- two_q_gate (str) – 커플링 맵을 생성할
Target의 2 큐비트 게이트에 대한 선택적 게이트 이름입니다. 지정하면 출력 커플링 맵에 이 게이트가 있는 큐비트 사이의 에지만 있습니다. - filter_idle_qubits (bool) –
True로 설정하면 출력CouplingMap은 타겟에 정의된 연산이 없는 큐비트를 제거합니다. 이 인수를 사용하면 클래스의 가정과 다를 수 있는 출력CouplingMap객체의 인덱스에 구멍이 생겨 클래스의 가정과 다를 수 있습니다. 이 인수의 일반적인 사용 사례는 예상대로 구멍을 처리하는CouplingMap.connected_components()와 짝을 이루는 것입니다.
리턴
** CouplingMap 개체**
이 대상에 대해. 대상에 연결 제약 조건이 없는 경우 None 이 반환됩니다.
리턴 유형
레이즈
- ValueError -
two_q_gate에 대해 2 큐비트 게이트가 아닌 게이트가 전달된 경우. - IndexError -
Target에 없는 인스트럭션이two_q_gate에 전달된 경우.
durations
from_configuration
classmethod from_configuration(basis_gates, num_qubits=None, coupling_map=None, instruction_durations=None, concurrent_measurements=None, dt=None, timing_constraints=None, custom_name_mapping=None)
개별 글로벌 구성에서 대상 개체 만들기
클래스가 생성되기 전에는 Target 클래스가 생성되기 전에는 백엔드의 제약 조건이 서로 다른 객체들의 모음으로 표현되었고, 이 모음은 Target. 이 함수는 이러한 개별 객체를 하나의 Target.
이 생성자는 basis_gates, num_qubits, coupling_map 의 입력을 사용하여 백엔드의 기본 모델을 구축하고 instruction_durations, backend_properties, inst_map 입력은 해당 모델을 기반으로 (순서대로) 쿼리하여 각 명령어와 큐비트의 속성을 조회합니다. 입력 내용이 일치하지 않는 경우 instruction_durations, backend_properties 또는 inst_map 에 있는 추가 또는 상충되는 정보는 무시됩니다.
매개변수
- basis_gates (list[str]) – 백엔드의 기본 게이트 이름 목록. 대상 객체를 생성하려면, 이러한 이름이 의
get_standard_gate_name_mapping()출력 결과에 포함되어 있거나 지정된custom_name_mapping인수에 포함되어 있어야 합니다. - num_qubits (int | None) – 백엔드에서 지원되는 큐비트 수입니다.
- coupling_map (CouplingMap | None) – 백엔드의 연결 제약 조건을 나타내는 커플링 맵입니다. 지정하면
basis_gates의 모든 게이트가 모든 큐비트(또는 큐비트 쌍)에서 지원됩니다. - instruction_durations (InstructionDurations | None) – 지침에 대한 선택적 지침 기간. 지정하면 대상의 지침에 대한
duration필드 설정에 우선권을 갖습니다InstructionProperties객체에 우선적으로 설정됩니다. - concurrent_measurements (list) – 함께 측정해야 하는 큐비트 세트의 목록입니다.
[[0, 1], [2, 3, 4]]와 같이 중첩된 목록으로 제공해야 합니다. - dt (float | None) – 입력 신호의 시스템 시간 분해능(초 단위)
- timing_constraints (TimingConstraints | None) – 다음에 포함할 선택적 시간 제약 조건
Target - custom_name_mapping (dict[str, Any] | None) – 사용자 정의 게이트/연산 이름을 해당 게이트/연산을 나타내는 객체로
Operationbasis_gates매핑하는 선택적 사전입니다. 기본적으로 대부분의 표준 게이트 이름은 표준 게이트 객체에 매핑되어 있으므로qiskit.circuit.library, 입력에서basis_gates해당 집합에 포함되지 않은 이름으로 게이트를 정의하는 경우에만 이를 명시해야 합니다.
리턴
입력 구성에서 빌드된 대상
리턴 유형
레이즈
- TranspilerError – 입력 베이스 게이트에 2개 이상의 큐비트가 포함되어 있고
coupling_map가 - 지정. -
- KeyError - 지정된
basis_gate에 대해 매핑을 사용할 수 없는 경우.
gate_has_angle_bounds
gate_has_angle_bounds(name)
특정 게이트 게이트에 각도 바운드가 설정되어 있는지 확인하기
매개변수
name (str) – 각도 바운드가 설정되어 있는지 확인할 인스트럭션 이름입니다
리턴
게이트가 타깃에 있고 각도 바운드가 정의된 경우 True 을 반환합니다. 게이트에 각도 바운드가 정의되어 있지 않거나 타겟에 없는 경우 False 을 반환합니다.
리턴 유형
get
get_non_global_operation_names
get_non_global_operation_names(strict_direction=False)
대상에 대한 전역이 아닌 작업 이름을 반환합니다
비글로벌 연산은 타깃의 모든 큐비트(단일 큐비트 연산의 경우) 또는 모든 멀티 큐비트 쿼크(멀티 큐비트 연산의 경우)에 적용되지 않는 연산입니다.
매개변수
strict_direction (bool) – True 로 설정하면 비글로벌로 간주되는 다중 큐비트 연산은 엄격한 방향(또는 qarg의 큐비트 순서가 중요함)을 따릅니다. 예를 들어 (0, 1) 에 cx , ecr 에 (1, 0) 정의된 경우 기본적으로 둘 다 비글로벌로 간주되지 않지만 strict_direction 설정된 경우 True cx 및 ecr 모두 반환됩니다.
리턴
이 대상에서 전역이 아닌 작업의 작업 이름 목록입니다
리턴 유형
List [str ]
has_angle_bounds
instruction_properties
instruction_properties(index)
특정 명령어 튜플에 대한 명령어 속성 가져오기
이 메서드는 해당 메서드의 instructions 속성과 함께 사용됩니다 Target 객체의 속성과 함께 사용됩니다. 이 메서드를 사용하면 해당 목록의 인덱스를 사용하여 instructions 의 요소에 대한 명령 속성을 빠르게 가져올 수 있습니다. 그러나 직접 작업하지 않는 경우 instructions 를 직접 사용하지 않는다면 이름과 큐비트를 통해 타깃에 직접 액세스하여 명령 속성을 가져오는 것이 더 효율적일 수 있습니다. 예를 들어 다음과 같은 경우 instructions 반환된 경우
[(XGate(), (0,)), (XGate(), (1,))]를 사용하여 쿼비트 1에서 XGate 의 속성을 얻을 수 있습니다:
props = target.instruction_properties(1)하지만 이름을 통해 직접 액세스하는 것이 더 효율적입니다:
props = target['x'][(1,)](대상에서 XGate의 정식 이름이 'x' 이라고 가정합니다.) 이는 대상의 인스트럭션 튜플 수에 따라 확장성이 악화되므로 특히 큰 대상에 해당됩니다.
매개변수
index (int) – 속성의 명령어 튜플의 인덱스입니다 instructions 어트리뷰트의 인덱스입니다. 예를 들어 세 번째 요소의 프로퍼티가 instructions 의 세 번째 요소의 속성을 원한다면 2 로 설정하면 됩니다.
리턴
지정된 명령어 튜플에 대한 명령어 속성
리턴 유형
instruction_supported
instruction_supported(operation_name=None, qargs=Ellipsis, operation_class=None, parameters=None, check_angle_bounds=True)
명령어(연산 + 큐비트)가 대상에서 지원되는지 여부를 반환합니다
매개변수
-
operation_name (str) – 인스트럭션의 작업 이름입니다. 이 값 또는
operation_class중 하나를 지정해야 하며, 둘 다 지정하면operation_class이 우선권을 가지며 이 인수는 무시됩니다. -
qargs (tuple) – 인스트럭션에 대한 큐비트 인덱스의 튜플입니다. 이 값을 지정하지 않으면 지정된 연산이 큐비트에서 지원되는 경우 이 메서드는
True을 반환합니다. 일반적인 애플리케이션에는 항상 이 설정이 있습니다(그렇지 않으면 대상에 연산이 포함되어 있는지 확인하는 것과 동일합니다). 일반적으로 타겟이 모든 큐비트에서parameters연산을 지원하는지 보다 일반적으로 확인하려는 경우 이 인수를 설정하지 않습니다. -
operation_class (Type[qiskit.circuit.Instruction]) – 이름 대신 클래스를 기준으로 대상이 특정 연산을 지원하는지 확인하는 연산 클래스입니다. 이 조회 작업은 단순한 단일 조회 대신 대상의 모든 연산을 순차적으로 처리해야 하므로 더 많은 비용이 듭니다. 이 옵션이 지정되면 해당
operation_name인수를 무시합니다. 이 작업의 일반적인 사용 사례는 백엔드에서 특정 작업 변형이 지원되는지 확인하는 것입니다. 예를 들어, 고정된 각도를 가진 특정 큐비트에서 a가RXGate지원되는지 확인하고 싶다면, 이러한 고정 각도 변형은 일반적으로 대상 내의 객체name속성("rx")과는 다른 이름을 가집니다. 이를 통해 해당 상황에서 해당 클래스의 인스턴스가 있는지 확인할 수 있습니다. -
parameters (list) –
지정된 큐비트에서 타겟이 지원하는지 확인할 수 있는 매개변수 목록입니다. 명령어가 오퍼레이션의 목록에 지정된 매개변수 값을 지원하고 qargs가 지정된 경우
True을 반환하지만, 지정된 명령어에서 매개변수가 지원되지 않으면False을 반환합니다. 이 인수를 지정하지 않으면 이 메서드는 인스트럭션이 인스트럭션 매개변수와 관계없이 지원되는 경우True을 반환합니다. 목록에 어떤Parameter객체와 함께 지정하면 해당 항목은 모든 값을 지원하는 것으로 간주되지만 매개 변수 이름은 확인되지 않습니다(예: 대상의 연산이"theta"로 매개 변수화된 것으로 나열되고"phi"이 함수에 전달되어True을 반환하는 경우). 예를 들어, 다음과 같이 호출하는 경우parameters = [Parameter("theta")] target.instruction_supported("rx", (0,), parameters=parameters)가 지원되는 경우
True를 반환합니다RXGate가 모든 매개 변수를 허용하는 쿼비트 0에서 지원되는 경우. 고정 숫자 값 매개변수를 확인해야 하는 경우 이 인수는 일반적으로operation_class인수와 쌍을 이룹니다. 예를 들어,target.instruction_supported("rx", (0,), RXGate, parameters=[pi / 4])는 큐비트 0에 RXGate( pi/4 )가 존재하면
True를 반환합니다. -
check_angle_bounds (bool) – True(기본값)로 설정하면
parameters값은 대상에 설정된 모든 각도 바운드에 대해 유효성을 검사합니다.parameters의 값 중 하나가 다음과 같이 설정된 경우ParameterExpression인 경우 각도 바운드는 회로에서 파라미터화되지 않은 연산에만 영향을 미치므로 이 플래그는 아무런 영향을 미치지 않습니다.
리턴
인스트럭션이 지원되는 경우 True , 지원되지 않는 경우 False 을 반환합니다.
리턴 유형
items
keys
operation_from_name
operation_from_name(instruction)
주어진 이름에 대한 연산 클래스 객체 가져오기
매개변수
instruction (str) – 인스턴스를 가져오는 명령어 이름입니다 Instruction 인스턴스를 가져올
리턴
이름에 해당하는 인스트럭션 인스턴스입니다. 또한 연산이 있는 전역 정의 변수의 클래스가 될 수도 있습니다.
리턴 유형
operation_names_for_qargs
operation_names_for_qargs(qargs, /)
지정된 qargs 튜플에 대한 연산 이름 가져오기
매개변수
qargs (tuple) – 해당 게이트에 적용되는 큐비트의 qargs 튜플을 가져옵니다. 예를 들어 (0,) 은 쿼비트 0에 적용되는 모든 명령어 집합을 반환합니다. None 로 설정하면 대상에 전역으로 정의된 모든 작업의 이름을 반환합니다.
리턴
지정된 qargs 에 적용되는 작업 이름 집합입니다.
리턴 유형
레이즈
KeyError - qargs 이 타겟에 없는 경우
operations_for_qargs
operations_for_qargs(qargs, /)
지정된 qargs 튜플에 대한 연산 클래스 객체를 가져옵니다
매개변수
qargs (tuple) – 해당 게이트에 적용되는 큐비트를 얻기 위한 큐비트의 튜플입니다. 예를 들어 (0,) 은 쿼비트 0에 적용되는 모든 명령어 집합을 반환합니다. None 로 설정하면 대상에 전역적으로 정의된 모든 작업을 반환합니다.
리턴
지정된 쿼리에 적용되는 Instruction 인스턴스 목록입니다. 가변 너비 연산이 전역적으로 정의된 경우 클래스가 될 수도 있습니다.
리턴 유형
레이즈
KeyError - qargs가 대상에 없는 경우
qargs_for_operation_name
qargs_for_operation_name(operation)
주어진 작업 이름에 대한 쿼리값 가져오기
매개변수
operation (str) – Qargs를 가져올 작업 이름
리턴
게이트 인스턴스가 적용되는 쿼리 집합입니다.
리턴 유형
seconds_to_dt
seconds_to_dt(duration)
주어진 지속 시간(초)을 dt 단위로 변환합니다
매개변수
duration (float) – 지속 시간(초 단위)(예: 대상의 명령어에 대한 InstructionProperties 필드에 입력할 수 있습니다.
리턴 유형
리턴
기간: 지속 시간: dt 단위의 지속 시간입니다
supported_angle_bound
supported_angle_bound(name, angles)
특정 게이트의 파라미터가 각도 바운드를 준수하는지 확인합니다
매개변수
- name (str) – 의 각도 바운드를 확인할 인스트럭션 이름입니다
- angles (list) – 정의된 각도 범위를 준수하는지 확인하기 위한
name의 플로트 매개변수 값 목록입니다.
리턴
지정된 매개변수 값이 각도 바운드와 호환되는 경우 True 을 반환합니다. False 매개변수 중 하나라도 정의된 범위를 벗어나면 반환됩니다.
리턴 유형
레이즈
- TranspilerError – 만약
name가 대상에 포함되지 않거나 그렇지 않은 경우 - 각도 바운드가 정의되어 있습니다. -
timing_constraints
timing_constraints()
대상에서 TimingConstraints 개체 가져오기
리턴
에 표시된 타이밍 제약 조건은 Target
리턴 유형
TimingConstraints
update_instruction_properties
update_instruction_properties(instruction, qargs, properties)
Target에 이미 있는 명령어 qarg 쌍에 대한 속성 개체를 업데이트합니다.
쉽게 액세스할 수 있도록 사용자는 인스트럭션의 이름을 키로 하여 매핑 프로토콜( __getitem__)을 통해 인스트럭션의 해당 qarg와 해당 인스트럭션 속성 간의 매핑을 얻을 수 있습니다. 이 방법은 Target 에서 인스트럭션의 속성을 수정/업데이트할 수 있는 유일한 방법입니다. 수정에 매핑 프로토콜을 사용하는 것은 지원되지 않습니다.
매개변수
- instruction (str) – 업데이트할 인스트럭션 이름
- qargs (tuple) – 속성을 업데이트할 qargs
- properties (InstructionProperties) – 이 인스트럭션에 설정할 속성
레이즈
KeyError - instruction 또는 qarg 이 대상에 없는 경우
values
매개변수