Builder 구문
개시하다
Qiskit에 펄스 처리 모듈이 있습니다.그 모듈은 최근에 컴파일러 디자인 모델을 가져왔다.나는 이 보도에서 그 새로운 프로그램의 작법을 소개하고 싶다.
먼저 Qiskit Pulse를 이동하기 위해 필요한 기술을 요약합니다.import numpy as np
from qiskit import QuantumCircuit, transpile, Aer, IBMQ
from qiskit.visualization import *
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()
이전의 서법
우선 나는 이전의 작법을 보고 싶다.대상은 양자 비트다.펄스를 정의하려면 Schedule 클래스를 생성해야 합니다.from qiskit import pulse
from qiskit.pulse import DriveChannel
from qiskit.pulse import Play
from qiskit.pulse import Schedule
qubit=0
# 1 パルスの定義
drive_pulse = pulse.Gaussian(duration=300,
sigma=80,
amp=1.0,
name='sample gaussian')
# 2 チャネルの指定
drive_chan = pulse.DriveChannel(qubit)
# 3 測定パルスの定義
inst_sched_map = backend_defaults.instruction_schedule_map
measure = inst_sched_map.get('measure', qubits=backend_config.meas_map[0])
# 4 スケジュールを作成
schedule = pulse.Schedule(name='Sample')
schedule += Play(drive_pulse, drive_chan)
schedule += measure << schedule.duration
import numpy as np
from qiskit import QuantumCircuit, transpile, Aer, IBMQ
from qiskit.visualization import *
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()
from qiskit import pulse
from qiskit.pulse import DriveChannel
from qiskit.pulse import Play
from qiskit.pulse import Schedule
qubit=0
# 1 パルスの定義
drive_pulse = pulse.Gaussian(duration=300,
sigma=80,
amp=1.0,
name='sample gaussian')
# 2 チャネルの指定
drive_chan = pulse.DriveChannel(qubit)
# 3 測定パルスの定義
inst_sched_map = backend_defaults.instruction_schedule_map
measure = inst_sched_map.get('measure', qubits=backend_config.meas_map[0])
# 4 スケジュールを作成
schedule = pulse.Schedule(name='Sample')
schedule += Play(drive_pulse, drive_chan)
schedule += measure << schedule.duration
실험에 사용할 펄스를 정의합니다.여기에 고스틴 펄스의 구동 펄스를 정의했다.
펄스를 적용할 채널을 지정합니다.이 예에서 드라이버 채널을 정의했는데 이것은 양자 비트의 ID에 따라 인덱스된 것이다.
스스로 정의할 수 있지만, 백엔드의 기본 명령 시간표에서 교정된 펄스를 얻을 수 있습니다.
Schedule 클래스 생성을 정의하고 Play를 사용하여 드라이버 채널에서 드라이버 펄스를 이동합니다.이후 시간표의 시작 시간을 일정 시간
<<
만 이동하고 플레이가 정의한 펄스만 이동하여 measure의 실행을 정의합니다.새 형식(Builder 구문)
기존의 문법에 따라 위에서 말한
<<
펄스의 순서 정의 등 직접 처리 프로그램 문법으로 펄스의 흐름을 기술한다.이렇게 하면 프로그램 표현(데이터)은 프로그래밍 문법(코드)에서 분리할 수 없다.새로운 작법은 파이톤의 with 문법을 이용하여 그 과제를 해결하는 것이다.
from qiskit import pulse
GHz = 1.0e9 # Gigahertz
mem_slot=0
freq_GHz=4.95
freq=freq_GHz*GHz
# 1 Builder構文の定義
with pulse.build(backend) as sample_sched:
# 2 フローの定義
with pulse.align_sequential():
# 3 周波数の定義
pulse.set_frequency(freq, pulse.drive_channel(qubit))
pulse.play(pulse.Gaussian(duration=320,
amp=1.0,
sigma=80,
name='sample gaussian'),
pulse.drive_channel(qubit))
# 4 測定パルスの定義
pulse.measure(qubits=[qubit], registers=[pulse.MemorySlot(mem_slot)])
Builder 구문 정의
Pythhon의 with 구문을 사용하여 Builder를 정의합니다.펄스 프로그래밍을 시작하려면 먼저 구축기 문법을
build()
으로 초기화해야 한다.https://qiskit.org/documentation/stubs/qiskit.pulse.builder.build.html#qiskit.pulse.builder.build
정의 흐름
이 성명은
align_sequential()
순서로 펄스를 집행하는 시간표를 이용한다.만약 이런 상황align_sequential()
이 없다면 후속적인 고스틴 펄스와 measure 펄스가 동시에 실행될 것이다.기타 제공align_left()
,align_right()
, 자유 조합을 통해 풍부하고 다채로운 펄스 흐름을 설정할 수 있다.또한 아래와 같은 값default_alignment
의 값sequential
도 같은 설정이다.with pulse.build(backend=backend, default_alignment='sequential', name='sample') as sample_sched:
사용
set_frequency()
주파수를 정의합니다.이전의 쓰기 방법은 백엔드의 기본 명령 시간표에서 교정된 측정 펄스를 얻어서 이 예처럼 쓸 수도 있었다.측량 활동의 구축 문법 중의 양자 비트.펄스 레벨에서 측정은 펄스와 지시 시스템 측정 단원에서 데이터를 얻어 처리하는 획득 지령 두 가지로 구성된다.
measure()
는 자동화 과정을 위해 제공되지만 필요에 따라 acquire()
와 play()
를 사용하여 완전히 제어할 수 있다.편리한 기능 소개
펄스 스케줄링 가시화
draw()
는 자신이 정의한 펄스 흐름을 시각화하는 데 사용할 수 있다.sample_sched.draw(backend=backend)
draw()
backend를 주는데 어떤 backend를 쓸지 몰라서 필요해요.만약 아무것도 지정하지 않았다면dt
내부 데이터의 값을 이용하여 펄스를 나타낸다.펄스 설정 디스플레이
instructions
를 사용하면 상술한 관점과 다른 관점으로 자신이 정의한 절차를 확인할 수 있다.자신이 지정한 내용을 한눈에 볼 수 있어 편리하다.sample_sched.instructions
총결산
이 글은 Builder의 글 구조를 소개했다.또 각양각색의 새로운 기능을 제공하였으니 소개하고 싶습니다.
Reference
이 문제에 관하여(Builder 구문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kumezawa/items/2027f30c047a970b7f56
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Builder 구문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kumezawa/items/2027f30c047a970b7f56텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)