

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 펄스를 사용하여 네이티브 게이트에 액세스
<a name="braket-native-gate-pulse"></a>

연구원은 특정 QPU에서 지원하는 *네이티브* 게이트가 어떻게 펄스로 구현되는지 정확히 알아야 하는 경우가 많습니다. 펄스 시퀀스는 하드웨어 공급자에 의해 주의 깊게 보정되지만, 이러한 시퀀스에 대한 액세스를 통해 연구원은 더 나은 게이트를 설계하거나 특정 게이트의 펄스를 확장하여 제로 노이즈 외삽과 같은 오류 완화를 위한 프로토콜을 탐구할 기회를 얻습니다.

Amazon Braket은 Rigetti의 네이티브 게이트에 대한 프로그래밍 방식 액세스를 지원합니다.

```
import math
from braket.aws import AwsDevice
from braket.circuits import Circuit, GateCalibrations, QubitSet
from braket.circuits.gates import Rx

device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3")

calibrations = device.gate_calibrations
print(f"Downloaded {len(calibrations)} calibrations.")
```

**참고**  
하드웨어 공급자는 종종 하루에 두 번 이상 QPU를 주기적으로 보정합니다. Braket SDK를 사용하면 최신 게이트 보정을 얻을 수 있습니다.

```
device.refresh_gate_calibrations()
```

RX 또는 XY 게이트와 같은 지정된 네이티브 게이트를 검색하려면 `Gate` 객체와 관심 대상 큐비트를 전달해야 합니다. 예를 들어 qubit 0에 적용된 RX(π/2)의 펄스 구현을 검사할 수 있습니다.

```
rx_pi_2_q0 = (Rx(math.pi/2), QubitSet(0))

pulse_sequence_rx_pi_2_q0 = calibrations.pulse_sequences[rx_pi_2_q0]
```

`filter` 함수를 사용하여 필터링된 보정 세트를 생성할 수 있습니다. 게이트 목록 또는 `QubitSet` 목록을 전달합니다. 다음 코드는 RX(π/2) 및 qubit 0에 대한 모든 보정을 포함하는 두 세트를 생성합니다.

```
rx_calibrations = calibrations.filter(gates=[Rx(math.pi/2)])
q0_calibrations = calibrations.filter(qubits=QubitSet([0]))
```

이제 사용자 지정 보정 세트를 연결하여 네이티브 게이트의 작업을 제공하거나 수정할 수 있습니다. 예를 들어 다음 회로를 고려합니다.

```
bell_circuit = (
    Circuit()
    .rx(0, math.pi/2)
    .rx(1, math.pi/2)
    .iswap(0, 1)
    .rx(1, -math.pi/2)
)
```

`PulseSequence` 객체의 딕셔너리를 `gate_definitions` 키워드 인수에 전달하여 `qubit 0`의 `rx` 게이트에 대한 사용자 지정 게이트 보정으로 실행할 수 있습니다. `GateCalibrations` 객체의 속성 `pulse_sequences`에서 딕셔너리를 구성할 수 있습니다. 지정되지 않은 모든 게이트는 양자 하드웨어 공급자의 펄스 보정으로 대체됩니다.

```
nb_shots = 50
custom_calibration = GateCalibrations({rx_pi_2_q0: pulse_sequence_rx_pi_2_q0})
task = device.run(bell_circuit, gate_definitions=custom_calibration.pulse_sequences, shots=nb_shots)
```