Microsoft 퀀텀 개발 키트 (QDK)에는 (VS Code) 확장 및 패키지에서 Visual Studio Code 액세스할 수 있는 양자 시뮬레이터 집합이 QDKPython 포함되어 있습니다. 이러한 시뮬레이터를 사용하면 양자 프로그램이 실제 양자 하드웨어에서 실행되는 방법을 테스트할 수 있습니다. 이 문서에서는 시뮬레이터를 설치하는 방법과 Jupyter Notebook 및 VS Code 기본 시뮬레이션을 실행하는 방법을 설명합니다.
QDK 4개의 양자 시뮬레이터가 포함됩니다.
- 스파스 시뮬레이터
- 클리포드 시뮬레이터
- GPU 시뮬레이터
- CPU 시뮬레이터
양자 시뮬레이터에 QDK 대한 자세한 내용은 다음 의 양자 시뮬레이터 개요를 QDK참조하세요.
사전 요구 사항
이 문서의 단계를 수행하려면 다음 도구를 설치해야 합니다.
- Python 및 Pip가 포함된 Python 환경(버전 3.10 이상)
- 최신 버전의 Visual Studio Code (VS Code)
- Python의 Jupyter 및 VS Code의 최신 버전
시뮬레이터 설치
4개의 시뮬레이터는 모두 패키지에서 QDKPython 사용할 수 있지만, 확장에서 QDKVS Code 스파스 시뮬레이터만 사용할 수 있습니다.
VS Code 확장에서 스파스 시뮬레이터를 사용하려면 QDK용 VS Code 확장 기능을 설치하세요.
양자 시뮬레이터 PythonJupyter Notebook를 사용하고 추가 패키지와 함께 jupyter 최신 버전의 qdkPython 패키지를 설치합니다.
pip install --upgrade "qdk[jupyter]"
시뮬레이터 사용에 jupyter 추가 기능이 필요하지는 않지만, qdk.widgets 모듈을 설치합니다.
widgets 모듈을 사용하면 시뮬레이션 결과에서 시각화를 Jupyter Notebook 만들 수 있습니다.
QDK용 VS Code 확장을 사용하여 시뮬레이션 실행
QDK용 VS Code 확장은 스파스 시뮬레이터만 제공합니다.
VS Code의 스파스 시뮬레이터에서 프로그램을 실행하려면 .qs에서 Q#(.qasm) 또는 OpenQASM(VS Code) 프로그램을 열고 파일을 실행하세요.
예를 들어 다음 단계에 따라 확장과 함께 QDK 제공되는 Q# 샘플 프로그램 중 하나를 실행합니다.
- 에서 VS Code파일 메뉴를 열고 새 텍스트 파일을 선택합니다.
- 파일에 확장명으로 끝나는 이름을 지정합니다
.qs. - 빈 파일에 샘플을 입력합니다. 포함된 코드 샘플 목록이 열립니다.
- 코드 샘플(예: 벨 쌍 샘플)을 선택합니다.
- 스파스 시뮬레이터에서 프로그램을 실행하려면 Main 작업 위의 코드 렌즈에서 실행 명령을 선택합니다.
터미널은 VS Code 시뮬레이션의 출력을 보여줍니다.
메모
확장에서 QDK Q# 프로그램의 스파스 시뮬레이션에 제한된 노이즈 모델을 추가할 수 있습니다. 자세한 내용은 다음에서 스파스 시뮬레이터VS Code에 Pauli 노이즈 추가를 참조하세요.
패키지를 사용하여 QDKPython 시뮬레이션 실행
이 패키지는 QDKPython 4개의 시뮬레이터를 모두 제공합니다. 시뮬레이터를 호출하는 방법은 시뮬레이터 및 양자 프로그래밍 프레임워크에 따라 달라집니다.
스파스 시뮬레이터 호출
Q#, OpenQASM 및 Qiskit 프로그램에 대한 스파스 시뮬레이터를 호출할 수 있습니다. 다음 표에서는 지원되는 각 양자 프로그래밍 프레임워크에서 10개의 샷에 대해 패키지에서 qdk 스파스 시뮬레이터를 호출하는 방법을 보여 줍니다.
| 프로그래밍 프레임워크 | Python API | 호출 예제 |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, shots=10) |
| 치스키트 주 | qiskit.QSharpBackend |
QSharpBackend().run(my_qiskit_program, shots=10) |
메모
Q# 및 OpenQASM 프로그램에 대한 매개 변수를 noise 사용하여 스파스 시뮬레이터에 노이즈 모델을 추가할 수 있지만 Qiskit 프로그램에 대한 노이즈 모델을 추가할 수는 없습니다.
예를 들어, Jupyter의 VS Code 노트북에서 Bell pair Q# 프로그램을 실행하려면 다음 단계를 따르세요:
에서 VS Code보기 메뉴를 열고 명령 팔레트를 선택합니다.
새 아이템 Jupyter Notebook 만들기를 입력합니다. 새 탭에서 빈 전자 필기장 파일이 열립니다.
첫 번째 셀에서 패키지에서
qsharp모듈을qdk가져옵니다.from qdk import qsharp새 셀에서 매직 명령을 사용하여
%%qsharpQ# 코드를 작성합니다.%%qsharp operation Main() : (Result, Result) { use (q1, q2) = (Qubit(), Qubit()); PrepareBellPair(q1, q2); (MResetZ(q1), MResetZ(q2)) } operation PrepareBellPair(q1 : Qubit, q2 : Qubit) : Unit { H(q1); CNOT(q1, q2); }새 셀을 만듭니다. 스파스 시뮬레이터에서 Q# 프로그램을 실행하려면 모듈에서 함수를
runqsharp호출하고 샷 수를 지정합니다.qsharp.run("Main()", shots=10)
클리포드 시뮬레이터 호출
Q#, OpenQASM, Qiskit 및 QIR 프로그램에 대해 Clifford 시뮬레이터를 호출할 수 있습니다. 다음 표에서는 지원되는 각 양자 프로그래밍 프레임워크에서 10개의 샷에 대해 패키지에서 qdk Clifford 시뮬레이터를 호출하는 방법을 보여줍니다.
| 프로그래밍 프레임워크 | Python API | 호출 예제 |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", type='clifford', shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, type='clifford', shots=10) |
| 치스키트 주 | simulation.NeutralAtomBackend |
simulation.NeutralAtomBackend().run(my_qiskit_program, simulator_type='clifford', shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type='clifford', shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type='clifford', shots=10) |
메모
NeutralAtomDevice 및 NeutralAtomBackend API는 특히 중립 원자 양자 컴퓨터 시뮬레이션용입니다. 자세한 내용은 중립 원자 디바이스 시뮬레이터 개요를 참조하세요.
예를 들어 다음 Python 코드는 간단한 OpenQASM 프로그램을 만들고 Clifford 시뮬레이터에서 프로그램을 실행합니다.
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];
"""
run(qasm_code, type='clifford', shots=10)
GPU 및 CPU 시뮬레이터 호출
Qiskit 및 QIR 프로그램에 대한 GPU 및 CPU 시뮬레이터를 호출할 수 있습니다. 다음 표에서는 지원되는 각 양자 프로그래밍 프레임워크에서 10개의 샷에 대해 패키지에서 qdk GPU 시뮬레이터를 호출하는 방법을 보여 줍니다. CPU 시뮬레이터를 호출하려면 시뮬레이터 형식 매개 변수로 'gpu' 대체 'cpu' 합니다.
| 프로그래밍 프레임워크 | Python API | 호출 예제 |
|---|---|---|
| 치스키트 주 | simulation.NeutralAtomBackend |
simulation.NeutralAtomBackend().run(my_qiskit_program, simulator_type='gpu', shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type='gpu', shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type='gpu', shots=10) |
예를 들어 다음 Python 코드는 간단한 OpenQASM 프로그램을 QIR로 변환하고 GPU 시뮬레이터에서 QIR을 실행합니다.
from qdk.openqasm import compile#, ProgramType
from qdk.simulation import run_qir
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
qir = compile(qasm_code)
run_qir(qir, type='gpu', shots=10)