Skip to main content
IBM Quantum Platform

대상

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)

GitHub

베이스: 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_qubitsqubit_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)

GitHub

에 새 인스트럭션을 추가합니다 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)

GitHub

대상에서 CouplingMap 를 가져옵니다.

연결성 제약 조건이 있는 2큐비트 연산과 전역적으로 정의된 연산이 혼합되어 있는 경우에도, 전역적 연결성은 대상에 대한 제약이 None 없음을 의미하므로 이 경우 역시 반환됩니다. 제약 조건이 있는 두 큐비트 연산의 제약 조건을 확인하려면, 인수를 two_q_gate 사용하여 제약 조건이 있는 게이트로만 출력을 제한해야 합니다.

매개변수

  • two_q_gate (str) – 커플링 맵을 생성할 Target 의 2 큐비트 게이트에 대한 선택적 게이트 이름입니다. 지정하면 출력 커플링 맵에 이 게이트가 있는 큐비트 사이의 에지만 있습니다.
  • filter_idle_qubits (bool) – True 로 설정하면 출력 CouplingMap 은 타겟에 정의된 연산이 없는 큐비트를 제거합니다. 이 인수를 사용하면 클래스의 가정과 다를 수 있는 출력 CouplingMap 객체의 인덱스에 구멍이 생겨 클래스의 가정과 다를 수 있습니다. 이 인수의 일반적인 사용 사례는 예상대로 구멍을 처리하는 CouplingMap.connected_components() 와 짝을 이루는 것입니다.

리턴

** CouplingMap 개체**

이 대상에 대해. 대상에 연결 제약 조건이 없는 경우 None 이 반환됩니다.

리턴 유형

CouplingMap

레이즈

  • ValueError - two_q_gate 에 대해 2 큐비트 게이트가 아닌 게이트가 전달된 경우.
  • IndexError - Target 에 없는 인스트럭션이 two_q_gate 에 전달된 경우.

durations

durations()

GitHub

대상에서 InstructionDurations 개체 가져오기

리턴

인스트럭션 기간에 표시된

대상

리턴 유형

InstructionDurations

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)

GitHub

개별 글로벌 구성에서 대상 개체 만들기

클래스가 생성되기 전에는 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(key, default=None)

GitHub

대상에서 항목을 가져옵니다. 찾을 수 없으면 제공된 기본값 또는 없음이 반환됩니다.

get_non_global_operation_names

get_non_global_operation_names(strict_direction=False)

GitHub

대상에 대한 전역이 아닌 작업 이름을 반환합니다

비글로벌 연산은 타깃의 모든 큐비트(단일 큐비트 연산의 경우) 또는 모든 멀티 큐비트 쿼크(멀티 큐비트 연산의 경우)에 적용되지 않는 연산입니다.

매개변수

strict_direction (bool) – True 로 설정하면 비글로벌로 간주되는 다중 큐비트 연산은 엄격한 방향(또는 qarg의 큐비트 순서가 중요함)을 따릅니다. 예를 들어 (0, 1)cx , ecr(1, 0) 정의된 경우 기본적으로 둘 다 비글로벌로 간주되지 않지만 strict_direction 설정된 경우 True cxecr 모두 반환됩니다.

리턴

이 대상에서 전역이 아닌 작업의 작업 이름 목록입니다

리턴 유형

List [str ]

has_angle_bounds

has_angle_bounds()

대상에 각도 바운드가 설정되어 있는지 확인합니다

리턴

회로의 명령어에 각도 바운드가 설정된 경우 True 을 반환합니다

리턴 유형

부울

instruction_properties

instruction_properties(index)

GitHub

특정 명령어 튜플에 대한 명령어 속성 가져오기

이 메서드는 해당 메서드의 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 로 설정하면 됩니다.

리턴

지정된 명령어 튜플에 대한 명령어 속성

리턴 유형

InstructionProperties

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

items()

GitHub

게이트 이름과 해당 속성 맵의 쌍을 반환합니다(스트링, 딕트듀플[, InstructionProperties] )

keys

keys()

GitHub

대상의 키(작업_이름)를 반환합니다

operation_from_name

operation_from_name(instruction)

주어진 이름에 대한 연산 클래스 객체 가져오기

매개변수

instruction (str) – 인스턴스를 가져오는 명령어 이름입니다 Instruction 인스턴스를 가져올

리턴

이름에 해당하는 인스트럭션 인스턴스입니다. 또한 연산이 있는 전역 정의 변수의 클래스가 될 수도 있습니다.

리턴 유형

qiskit.circuit.Instruction

operation_names_for_qargs

operation_names_for_qargs(qargs, /)

지정된 qargs 튜플에 대한 연산 이름 가져오기

매개변수

qargs (tuple) – 해당 게이트에 적용되는 큐비트의 qargs 튜플을 가져옵니다. 예를 들어 (0,) 은 쿼비트 0에 적용되는 모든 명령어 집합을 반환합니다. None 로 설정하면 대상에 전역으로 정의된 모든 작업의 이름을 반환합니다.

리턴

지정된 qargs 에 적용되는 작업 이름 집합입니다.

리턴 유형

set

레이즈

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)

GitHub

주어진 작업 이름에 대한 쿼리값 가져오기

매개변수

operation (str) – Qargs를 가져올 작업 이름

리턴

게이트 인스턴스가 적용되는 쿼리 집합입니다.

리턴 유형

set

seconds_to_dt

seconds_to_dt(duration)

GitHub

주어진 지속 시간(초)을 dt 단위로 변환합니다

매개변수

duration (float) – 지속 시간(초 단위)(예: 대상의 명령어에 대한 InstructionProperties 필드에 입력할 수 있습니다.

리턴 유형

int

리턴

기간: 지속 시간: dt 단위의 지속 시간입니다

supported_angle_bound

supported_angle_bound(name, angles)

특정 게이트의 파라미터가 각도 바운드를 준수하는지 확인합니다

매개변수

  • name (str) – 의 각도 바운드를 확인할 인스트럭션 이름입니다
  • angles (list) – 정의된 각도 범위를 준수하는지 확인하기 위한 name 의 플로트 매개변수 값 목록입니다.

리턴

지정된 매개변수 값이 각도 바운드와 호환되는 경우 True 을 반환합니다. False 매개변수 중 하나라도 정의된 범위를 벗어나면 반환됩니다.

리턴 유형

부울

레이즈

  • TranspilerError – 만약 name 가 대상에 포함되지 않거나 그렇지 않은 경우
  • 각도 바운드가 정의되어 있습니다. -

timing_constraints

timing_constraints()

GitHub

대상에서 TimingConstraints 개체 가져오기

리턴

에 표시된 타이밍 제약 조건은 Target

리턴 유형

TimingConstraints

update_instruction_properties

update_instruction_properties(instruction, qargs, properties)

GitHub

Target에 이미 있는 명령어 qarg 쌍에 대한 속성 개체를 업데이트합니다.

쉽게 액세스할 수 있도록 사용자는 인스트럭션의 이름을 키로 하여 매핑 프로토콜( __getitem__)을 통해 인스트럭션의 해당 qarg와 해당 인스트럭션 속성 간의 매핑을 얻을 수 있습니다. 이 방법은 Target 에서 인스트럭션의 속성을 수정/업데이트할 수 있는 유일한 방법입니다. 수정에 매핑 프로토콜을 사용하는 것은 지원되지 않습니다.

매개변수

  • instruction (str) – 업데이트할 인스트럭션 이름
  • qargs (tuple) – 속성을 업데이트할 qargs
  • properties (InstructionProperties) – 이 인스트럭션에 설정할 속성

레이즈

KeyError - instruction 또는 qarg 이 대상에 없는 경우

values

values()

GitHub

Target의 모든 인스트럭션의 프로퍼티 맵(qargs -> InstructionProperties )을 반환합니다

매개변수

  • description (str | None)
  • num_qubits (int | None)
  • dt (float | None)
  • granularity (int)
  • min_length (int)
  • pulse_alignment (int)
  • acquire_alignment (int)
  • qubit_properties (list | None)
  • concurrent_measurements (list | None)
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.