의 양자 시뮬레이터 개요 QDK

Microsoft 퀀텀 개발 키트(QDK)에는 로컬 컴퓨터에서 양자 프로그램을 실행할 수 있는 양자 시뮬레이터 집합이 포함되어 있습니다. 로컬 시뮬레이터를 사용하여 프로그램을 제출하기 전에 프로그램을 반복하여 Azure Quantum 대상에서 실행합니다.

QDK 4개의 시뮬레이터가 있습니다.

  • 스파스 시뮬레이터
  • Clifford 시뮬레이터
  • GPU 시뮬레이터
  • CPU 시뮬레이터

스파스 시뮬레이터

스파스 시뮬레이터는 QDK의 기본 시뮬레이터입니다. 이 시뮬레이터는 특히 많은 중첩 상태를 생성하지 않는 프로그램의 경우 빠른 시뮬레이션을 위해 스파스 매트릭스 대수를 활용하기 위해 큐비트 상태를 스파스 벡터로 나타냅니다. 또는 프로그램의 빠른 시뮬레이션을 원하거나 Q# 시뮬레이션 OpenQASMQiskit중에 프로그램의 양자 상태를 표시하려는 경우 스파스 시뮬레이터를 사용합니다.

스파스 시뮬레이터는 Visual Studio Code(VS Code)용 QDK 확장과 PythonQDK 패키지에서 모두 사용할 수 있습니다. 이 시뮬레이터는 QDK 확장에서 사용할 수 있는 유일한 시뮬레이터이기 때문에, VS Code에서 Q# 및 OpenQASM 프로그램을 실행할 때 컴파일러가 스파스 시뮬레이터를 자동으로 호출합니다. VS Code의 스파스 시뮬레이터를 사용하면 함수 또는 디버거를 사용하여 Q#DumpMachine 시뮬레이션의 여러 지점에서 큐비트 상태 벡터를 표시할 수 있습니다.

VS Code 확장과 Python 패키지는 모두 OpenQASM 및 Q# 프로그램의 스파스 시뮬레이션을 위한 노이즈 모델을 지원합니다. Python 패키지만 노이즈 모델 지원 없이 프로그램에 대한 Qiskit 스파스 시뮬레이션을 지원합니다.

스파스 시뮬레이터에 대한 자세한 내용은 스파스 시뮬레이터를 참조하세요.

Clifford 시뮬레이터

시뮬레이터는 Clifford 최대 수천 개의 큐비트를 사용하는 프로그램에 빠르고 효율적이지만 게이트만 Clifford 포함하는 프로그램만 시뮬레이션할 수 있습니다. Clifford 게이트는 오류 수정 회로의 일반적인 구성 요소입니다. 게이트 집합 Clifford 은 H, S 및 CX 게이트와 이 세 게이트에서 생성할 수 있는 모든 게이트로 구성됩니다. 다음 Clifford 게이트는 양자 회로의 일반적인 구성 요소입니다.

  • $X$, $Y$, $Z$
  • $S$ 및 $S^\dagger$
  • $H$또는 Hadamard
  • $CX$, $CY$, $CZ$
  • SWAP 및 iSWAP

Clifford 시뮬레이터는 OpenQASM, Qiskit, QIR, Q# 프로그램용 QDKPython 패키지에서 사용할 수 있지만, VS Code용 QDK 확장에서는 사용할 수 없습니다.

GPU 시뮬레이터

GPU 시뮬레이터는 귀하의 머신의 GPU을 사용하여 양자 프로그램의 여러 샷을 병렬로 실행하는 상태 완전체 시뮬레이터입니다. 이 시뮬레이터는 모든 유형의 게이트를 포함하지만 실행하는 데 비용이 많이 드는 프로그램을 실행할 수 있습니다. 시뮬레이터는 최대 27개의 큐비트를 모델링할 수 있습니다. 컴퓨터의 GPU 성능에 따라 성능이 결정되지만 약 20개의 큐비트와 많은 샷이 있는 프로그램에는 성능이 최적입니다.

GPU 시뮬레이터는 입력으로 QIR 또는 Qiskit를 사용하며, VS Code 확장에서는 사용할 수 없고 특정 QDKPython 패키지 API를 통해 사용할 수 있습니다. 또한 모든 유형의 양자 게이트 또는 연산에서 노이즈 모델을 다양하게 지원합니다.

CPU 시뮬레이터

GPU 시뮬레이터와 마찬가지로, CPU 시뮬레이터도 모든 형식의 양자 게이트를 포함하는 프로그램을 실행할 수 있는 전체 상태 시뮬레이터입니다. 그러나 CPU 시뮬레이터는 여러 샷을 병렬로 실행할 수 없으므로 속도가 느립니다. 이 시뮬레이터는 약 25큐비트로 확장되지만 메모리 문제로 인해 더 많은 큐비트로 기하급수적으로 느려집니다. CPU 기기에 GPU가 없거나, 프로그램에 큐비트가 거의 없고 많은 샷을 실행하지 않는 경우 시뮬레이터를 사용하세요.

CPU 시뮬레이터는 QIR 또는 Qiskit를 입력으로 받으며, 특정 QDKPython 패키지 API를 통해서는 사용할 수 있지만 VS Code 확장에서는 사용할 수 없습니다. 또한 모든 유형의 양자 게이트 또는 연산에서 노이즈 모델을 다양하게 지원합니다.

어떤 시뮬레이터를 사용해야 하나요?

사용할 수 있는 가장 좋은 시뮬레이터는 다음과 같은 몇 가지 요인에 따라 달라집니다.

  • 개발 환경(VS Code 또는 Python)
  • 개발 중인 양자 프로그래밍 프레임워크
  • 프로그램의 복잡성 및 샷 수
  • 로컬 컴퓨터의 하드웨어 기능
  • Azure Quantum 대상 또는 프로그램을 실행하려는 기타 양자 하드웨어
  • 빌드하려는 노이즈 모델

다음 표에는 각 시뮬레이터에 QDK 사용할 수 있는 옵션 및 양자 프로그래밍 프레임워크가 요약되어 있습니다.

시뮬레이터 Availability 지원되는 프레임워크
희소 VS Code 확장 및 Python 패키지 Q#, OpenQASM, Qiskit
Clifford Python 패키지 Q#, OpenQASM, , Qiskit, QIR
GPU Python 패키지 Qiskit, QIR
CPU Python 패키지 Qiskit, QIR

VS Code용 확장의 QDK 시뮬레이션

스파스 시뮬레이터는 VS Code 확장에서 사용할 수 있는 QDK 유일한 시뮬레이터입니다. 스파스 시뮬레이터를 사용하려면 VS Code에서 Q# 또는 OpenQASM 파일을 실행하십시오. VS Code에서 Q# 프로그램에 대해 스파스 시뮬레이터에 제한된 노이즈 모델을 추가할 수 있지만, OpenQASM 프로그램에는 추가할 수 없습니다.

패키지의 QDKPython 시뮬레이션

QDK Python 개발 환경은 여러 양자 프레임워크와 4개의 QDK 시뮬레이터를 모두 지원하지만 모든 시뮬레이터가 모든 프레임워크 및 API와 호환되는 것은 아닙니다.

이 표에서는 시뮬레이터를 호출 Python 하는 각 QDK API에 사용할 수 있는 시뮬레이터와 각 API에서 지원하는 프로그래밍 프레임워크를 보여 줍니다.

Python API 희소 Clifford GPU CPU 프로그래밍 프레임워크
qsharp.run Q#
openqasm.run OpenQASM
qiskit.QSharpBackend Qiskit
simulation.NeutralAtomDevice QIR
simulation.NeutralAtomBackend Qiskit
simulation.run_qir QIR