Microsoft 퀀텀 개발 키트(QDK)은 OpenQASM 통합을 통해 Azure Quantum 프로그램에 다양한 개발 환경을 제공합니다. 이 문서에서는 다음에서 OpenQASM 코드를 개발하고 실행하는 방법을 알아봅니다.
- QDK의 Visual Studio Code 확장(VS Code)
- QDK Jupyter Notebook Python 패키지입니다.
CodeLends, IntelliSense, 코드 완성 및 중단점 디버깅과 같은 개발자 도구 VS Code 확장에서만 사용할 수 있습니다. 다른 기능은 Python 패키지에서만 사용할 수 있습니다. 예를 들어 Q# 및 OpenQASM 호출 가능 개체를 Python 개체로 전달하고 입력을 QIR로 가져오는 프로그램을 컴파일 OpenQASM 할 수 있습니다.
필수 조건
최신 버전의 설치 VS Code
파일을 직접 작업하려면 확장의 최신 버전을 에 설치해야 합니다. Python과 Jupyter Notebook에서 OpenQASM를 사용하려면, Python 확장과 Jupyter 확장을 VS Code에 설치하세요.
jupyterextra를 사용하여qdkPython 패키지의 최신 버전을 설치합니다:pip install --upgrade "qdk[jupyter]"
OpenQASM VS Code에서 QDK 확장을 사용하여 작업하기
코드를 작성하려면 OpenQASM, VS Code에서, Q# 프로젝트를 열고 OpenQASM 확장자가 있는 .qasm 파일을 만드세요.
QDK는 .qasm 파일을 OpenQASM로 자동으로 인식하고, 코드를 작성할 때 QDK에 대한 기능을 OpenQASM에서 사용할 수 있습니다.
QDK 기능은 OpenQASM의 VS Code 프로그램에 사용할 수 있습니다.
- 코드 완성
- 코드 렌즈(실행, 히스토그램, 추정, 디버그 및 회로)
- 구문 강조 표시 및 기본 구문 기능(예: 중괄호 일치)
- 원본 파일 OpenQASM에서 오류 검사
- 원본 파일에 대한 OpenQASM 중단점 디버깅 및 스크립트 실행
- 라이브 회로 생성을 사용하여 디버깅
- 양자 작업 제출을 위한 Azure Quantum 통합
OpenQASM VS Code 프로그램을 실행하려면, QDK의 로컬 시뮬레이터를 사용하거나 코드를 작업으로 Azure Quantum에 제출하여 실행할 수 있습니다.
로컬 시뮬레이터에서 QDK 코드 실행
OpenQASM의 로컬 스파스 양자 시뮬레이터에서 VS Code 코드를 실행하려면 .qasm 파일을 연 다음, 파일 시작 부분의 코드 렌즈에서 실행 명령을 선택합니다. 프로그램의 출력이 VS Code 터미널에 표시됩니다.
비고
QDK 프로그램을 지원하는 QIR target 프로필을 자동으로 설정하려고 시도합니다. QIR target 프로필이 프로그램에서 작업을 지원하지 않는 경우 코드를 실행할 때 컴파일러 오류가 발생합니다 OpenQASM . target 프로필에 대한 자세한 내용은 target에서 Azure Quantum 프로필의 다양한 형식을 참조하세요.
기본 제공 샘플 프로그램
QDK에는 OpenQASM을 위한 여러 개의 내장된 양자 알고리즘 샘플이 포함되어 있습니다. 샘플 알고리즘을 사용해 보려면 빈 sample 파일에 .qasm를 입력하십시오. 샘플 알고리즘이 포함된 완성 목록이 나타납니다. 샘플을 선택한 다음 생성된 코드를 실행합니다.
로컬에서 디버그 VS Code
QDK에는 OpenQASM용 디버거가 포함됩니다. 디버거는 중단점 스타일 디버깅을 지원하고 프로그램 상태를 렌더링할 수 있습니다.
디버거를 시작하려면 코드 렌즈에서 디버그 명령을 선택합니다.
디버그 모드에서는 디버그에 도움이 되도록 코드에서 중단점을 설정할 수 있습니다. 프로그램 상태가 실행 및 디버그 창에 표시됩니다. 예를 들어 지역 변수 상태 및 큐비트 상태를 볼 수 있습니다.
Azure Quantum 코드를 실행하세요.
OpenQASM Azure Quantum에서 targets 프로그램을 실행하려면 Azure Quantum 작업 영역이 필요합니다. Azure Quantum 작업 영역을 만들려면 Azure Quantum 작업 영역 만들기를 참조하세요.
OpenQASM에서 Azure Quantum로 VS Code 작업을 제출하려면 Azure Quantum 작업 영역에 연결해야 합니다. VS Code에서 작업 영역에 연결하려면 연결 문자열을 사용하여 연결을 참조하세요.
OpenQASM에서 Azure Quantum로 VS Code 작업을 제출하려면 다음 단계를 따르세요:
-
qasm에서 프로그램이 포함된 VS Code 파일을 엽니다. - Microsoft Quantum 아이콘을 선택하여 Microsoft Quantum 패널을 엽니다.
- QUANTUM 작업 영역 드롭다운을 확장하고 작업 영역을 선택합니다.
-
Providers 드롭다운을 펼치고 공급자를 선택한 다음, 작업을 실행할 target를 선택합니다. 예를 들어 Rigetti의 백엔드 시뮬레이터에서 프로그램을 실행하려면 작업을
rigetti.svm.simtarget에 제출합니다. 공급자 및 target 가용성에 대한 자세한 내용은 기존 작업 영역에서 공급자 추가 또는 제거를 참조하세요. - target 이름 옆에 있는 재생 아이콘을 선택합니다.
- 작업을 제출하려면 작업 이름 프롬프트 및 샷 수 프롬프트 값을 입력합니다.
작업의 시간과 상태를 보려면 작업 드롭다운을 확장하고 작업 이름을 마우스로 가리킵니다. 작업 결과를 다운로드하려면 작업 이름 옆에 있는 히스토그램 또는 텍스트 아이콘을 선택합니다.
Python과 Jupyter Notebook에서 OpenQASM 작업하기
QDK Python 패키지를 사용하면 OpenQASM 코드를 직접 실행하고 OpenQASM 회로를 Q# 프로그램에 연산으로 전달할 수 있습니다. OpenQASM 코드를 Python 문자열로 작성한 다음 해당 문자열을 사용하여 Python 환경에서 OpenQASM 코드를 실행, 가져오기 또는 컴파일합니다.
Python에서 OpenQASM을(를) 직접 실행
OpenQASM 코드를 직접 실행하려면 run 모듈의 qdk.openqasm 함수를 사용합니다. 예를 들어 다음 코드는 노이즈가 있는 간단한 OpenQASM 프로그램의 로컬 시뮬레이터에서 10개의 샷을 실행합니다.
from qdk import BitFlipNoise
from qdk.openqasm import run
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
results = run(qasm_code, shots=10, noise=BitFlipNoise(0.1))
print(results)
Q에서 OpenQASM 프로그램 호출#
import_openqasm 함수를 사용하여 OpenQASM 프로그램을 Python 개체로 저장한 다음 나중에 Python 코드에서 해당 개체를 호출할 수 있습니다. 예를 들어 다음 셀은 OpenQASM 회로를 bell라는 Python 개체에 저장합니다.
from qdk import qsharp
from qdk.openqasm import import_openqasm
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
import_openqasm(qasm_code, name="bell")
환경의 일부인 경우 bell Q# 셀에서 직접 실행할 수 있습니다.
%%qsharp
use qs = Qubit[2];
bell(qs)
QDK 패키지 기능을 bell 에서도 사용할 수 있으며, 예를 들어 노이즈 시뮬레이션, 회로 렌더링, 코드 생성 등이 가능합니다.
매개 변수가 있는 OpenQASM 프로그램
다음 셀은 각도 OpenQASM 입력으로 사용하는 theta 회로를 만든 다음 회로를 Python 함수로 호출합니다.
from qdk.openqasm import import_openqasm, ProgramType
qasm_code = """
include "stdgates.inc";
input float theta;
qubit[2] q;
rx(theta) q[0];
rx(-theta) q[1];
bit[2] c;
c = measure q;
"""
import_openqasm(qasm_code, name="parameterized_circuit", program_type=ProgramType.File)
from qdk.code.qasm_import import parameterized_circuit
parameterized_circuit(1.57)
Q에 OpenQASM 프로그램 전달#
QDK Python 패키지를 사용하면 OpenQASM 프로그램을 Q# 프로그램에 직접 전달할 수 있습니다. 예를 들어, 다음 코드는 OpenQASM라는 프로그램을 Entangle로 생성한 후, Q# 프로그램에서 Entangle를 작업으로 사용합니다.
from qdk.openqasm import import_openqasm
from qdk import qsharp
qasm_code = """
include "stdgates.inc";
qubit[2] qs;
h qs[0];
cx qs[0], qs[1];
"""
import_openqasm(qasm_code, name="Entangle")
qsharp.eval("{ use qs = Qubit[2]; Entangle(qs); MResetEachZ(qs) }")
Q#을 가져오고 OpenQASM 및 qsharp.eval 사용하여 Python 환경에서 import_openqasm 프로그램을 가져올 때 이러한 프로그램은 Python 코드에서 호출할 수 있는 Python 개체가 됩니다. 예를 들어, 다음 코드는 TestAntiCorrelation라는 Q# 프로그램을 생성하고, EntangleOpenQASM 프로그램을 TestAntiCorrelation에 전달합니다.
qsharp.eval("""
operation TestAntiCorrelation(entangler : Qubit[] => Unit) : Result[] {
use qs = Qubit[2];
X(qs[1]);
entangler(qs);
MResetEachZ(qs)
}
""")
from qdk.code import Entangle, TestAntiCorrelation
TestAntiCorrelation(Entangle)
OpenQASM 프로그램을 QIR로 컴파일
OpenQASM 코드를 Quantum Intermediate Representation (QIR)으로 컴파일하려면 compile 함수를 사용할 수 있습니다.
예를 들어 다음 셀은 매개 변수가 있는 회로에 대한 코드를 QIR로 컴파일합니다 OpenQASM .
from qdk import TargetProfile
from qdk.openqasm import import_openqasm, ProgramType
from qdk import qsharp
qsharp.init(target_profile=TargetProfile.Base)
qasm_code = """
include "stdgates.inc";
input float theta;
qubit[2] q;
rx(theta) q[0];
rx(-theta) q[1];
bit[2] c;
c = measure q;
"""
import_openqasm(qasm_code, name="parameterized_circuit", program_type=ProgramType.File)
from qdk.code.qasm_import import parameterized_circuit
bound_compilation = qsharp.compile(parameterized_circuit, 1.57)
print(bound_compilation)
비고
입력 변수를 QIR로 가져오는 프로그램을 컴파일 OpenQASM 하려면 Python 패키지를 사용해야 QDK 합니다. OpenQASM에서는 QDK 확장을 사용하여 매개변수화된 VS Code 프로그램을 QIR로 컴파일할 수 없습니다.
OpenQASM 프로그램을 Azure Quantum에 제출
OpenQASM Azure Quantum에서 실행할 target 프로그램을 제출하려면 OpenQASM 코드를 QIR로 컴파일한 다음, QIR을 Azure Quantum에서 실행하도록 제출합니다.
예를 들어 간단한 얽힘 회로를 QIR로 컴파일합니다.
from qdk.openqasm import compile
qasm_code = """
include "stdgates.inc";
bit[2] c;
qubit[2] q;
h q[0];
cx q[0], q[1];
c = measure q;
"""
qir_compilation = compile(qasm_code)
Azure Quantum에서 QIR 작업을 실행하려면 양자 작업 영역에 연결한 다음 작업 영역에서 사용 가능한 targets 중 하나에 작업을 제출하세요. 예를 들어 IonQ 백 엔드 시뮬레이터에서 실행할 얽힘 QIR을 제출합니다.
from qdk.azure import Workspace
workspace = Workspace(resource_id="") # Add the resource ID of your workspace
target = workspace.get_targets('ionq.simulator')
job = target.submit(qir_compilation, shots=100)
print("Job submitted. Waiting for results...")
results = job.get_results()
print(results)
에서 진행 중인 OpenQASM 개발 QDK
OpenQASM QDK 지원은 진행 중입니다.