위상 설정

12466 단어 IBMQQISKITPULSE

개시하다


Qiskit Textbook의 6-1에서 $\pi 펄스, 그리드 $R 소개x (\pi) $가 작용한 것과 같습니다.양자회로를 만들 때도 위상을 바꾸고 싶은 일이 있을 텐데, 이 글에서 펄스에 대한 위상을 조작하는 방법을 소개하고 싶다.
https://qiskit.org/textbook/ch-quantum-hardware/calibrating-qubits-pulse.html#Our-$\pi$-pulse !
먼저 Qiskit Pulse를 이동하기 위해 필요한 기술을 요약합니다.
import numpy as np
from qiskit import QuantumCircuit, transpile, Aer, IBMQ
from qiskit.visualization import *
from qiskit.circuit import Gate
from qiskit.circuit import Parameter
from qiskit import pulse

IBMQ.load_account()

provider = IBMQ.get_provider(hub='ibm-q', group='open', project='main')
backend = provider.get_backend('ibmq_armonk')
backend_defaults = backend.defaults()
backend_config = backend.configuration()

위상 설정 방법

shift_phase()를 사용하여 위상 변경 후의 펄스를 설정할 수 있습니다.
GHz = 1.0e9 # Gigahertz
MHz = 1.0e6 # Megahertz
us = 1.0e-6

qubit=0
frequency=4.97194*GHz
drive_sigma_sec=0.075*us
drive_duration_sec = drive_sigma_sec * 8 
pi_amp=0.14

with pulse.build(backend) as ry_1:
    pulse.set_frequency(frequency, pulse.drive_channel(qubit))
    pulse.shift_phase(np.pi/2, pulse.drive_channel(qubit))
    pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
                                  amp=pi_amp/2,
                                  sigma=pulse.seconds_to_samples(drive_sigma_sec),
                                  name="phase"), pulse.drive_channel(qubit))
    pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
                                  amp=pi_amp/2,
                                  sigma=pulse.seconds_to_samples(drive_sigma_sec),
                                  name="phase"), pulse.drive_channel(qubit))

ry_1.draw(backend=backend)
draw()에서 볼 수 있듯이 먼저 상이 (VZ($-\pi/2$)입니다.
다만 이렇게 되면 위상이 변경되면 정의된 펄스가 모두 위상이 바뀐 상태가 된다.위 Schedule에서는 처음 펄스 위상phase_offset()만 변경하려는 경우 사용할 수 있습니다.
with pulse.build(backend) as ry_2:
    pulse.set_frequency(frequency, pulse.drive_channel(qubit))
    with pulse.phase_offset(np.pi/2, pulse.drive_channel(qubit)):
        pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
                                  amp=pi_amp/2,
                                  sigma=pulse.seconds_to_samples(drive_sigma_sec),
                                  name="phase"), pulse.drive_channel(qubit))
    pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
                                  amp=pi_amp/2,
                                  sigma=pulse.seconds_to_samples(drive_sigma_sec),
                                  name="phase"), pulse.drive_channel(qubit))

ry_2.draw(backend=backend)
draw()를 사용해 보면 최초의 펄스 실행 후 위상 설정이 원래의 상태로 바뀌었다는 것을 알 수 있다.펄스를 나타내는 색깔의 농담 상위도 다른 일.

총결산


본고는 위상 설정의 방법을 소개하였다.만약 펄스에 대해 위상을 설정할 수 있다면 실험의 폭은 넓어질 것이다.

좋은 웹페이지 즐겨찾기