Microsoft Quantum Development Kit(QDK)包含一組量子模擬器,讓你能在本地機器上執行量子程式。 在提交程式到 Azure Quantum 目標前,先用本地模擬器進行反覆測試。
該系統 QDK 擁有四個模擬器:
- 稀疏模擬器
- Clifford模擬器
- GPU模擬器
- CPU模擬器
稀疏模擬器
默認模擬器是QDK的稀疏模擬器。 此模擬器將量子位元狀態表示為稀疏向量,利用稀疏矩陣代數,以達到快速模擬的目的,特別適用於不會產生許多疊加態的程式。 當你想要快速模擬 Q#、 OpenQASM、 或 Qiskit 程式,或想在模擬中顯示程式的量子狀態時,可以使用稀疏模擬器。
稀疏模擬器可於適用於 Visual Studio Code(VS Code)的 QDK 擴充功能,以及 PythonQDK 套件中使用。 這個模擬器是擴充中唯一可用的模擬器 QDK ,所以當你執行 Q#OpenQASM VS Code 程式時,編譯器會自動呼叫稀疏模擬器。 在 VS Code 裡的稀疏模擬器中,你可以使用 Q#DumpMachine 函式或除錯器在模擬中不同點顯示量子位元狀態向量。
VS Code 擴充功能和 Python 套件都支援 Q# 和 OpenQASM 程式稀疏模擬的噪音模型。 只有 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# 程式的 PythonQDK 套件中使用,但在 VS Code 的 QDK 擴充功能中無法使用。
GPU模擬器
模擬器 GPU 是全狀態模擬器,利用你的機器 GPU 並行執行多檔量子程式。 此模擬器可執行包含任意類型閘的程式,但運行成本較高。 模擬器最多可模擬27個量子位元。 你的機器的 GPU 算力會決定效能,但對於約有 20 個量子位元且執行次數很多的程式而言,效能最佳。
GPU 模擬器接受 QIR 或 Qiskit 作為輸入,可透過特定的 QDKPython 套件 API 使用,但不適用於 VS Code 擴充功能。 對於任何類型的量子閘或操作,也有豐富的雜訊模型支援。
CPU模擬器
與模擬器 GPU 類似, CPU 模擬器也是一個全狀態模擬器,能執行包含任何類型量子閘的程式。 不過模擬器 CPU 速度較慢,因為它無法同時執行多發射擊。 這個模擬器可擴展到約 25 個量子位元,但由於記憶體問題,量子位元越多速度會呈指數減速。 當您的機器沒有CPU,或當您的程式量子位元很少且您沒有執行大量次數時,使用CPU模擬器。
CPU 模擬器接受 QIR 或 Qiskit 作為輸入,可透過特定的 QDKPython 套件 API 使用,但不適用於 VS Code 擴充功能。 對於任何類型的量子閘或操作,也有豐富的雜訊模型支援。
我應該用哪個模擬器?
最佳模擬器取決於多項因素,例如:
- 你的開發環境(VS Code 或 Python)
- 你正在開發的量子程式設計框架
- 你的程式複雜度和鏡頭數量
- 你本機機器的硬體能力
- Azure Quantum 目標或其他你想用來執行程式的量子硬體
- 你想建立的噪音模型
下表總結了 QDK 每個模擬器可以使用的選項與量子程式設計框架:
| 模擬器 | 可用性 | 支援的架構 |
|---|---|---|
| 稀疏 | 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 。 要使用 Sparse 模擬器,請在 VS Code 中執行你的 Q# or OpenQASM 檔案。 你可以在 VS Code 中為 Q# 程式加入稀疏模擬器的有限噪音模型,但不能為 OpenQASM 程式加入。
QDK Python 套件中的模擬
QDK Python 開發環境支援多個量子框架及四個 QDK 模擬器,但並非所有模擬器都相容於所有框架與 API。
下表顯示每個呼叫 Python 模擬器的 QDK API 可使用的模擬器,以及各 API 支援的程式設計架構:
| Python 應用程式介面 | 稀疏 | Clifford | GPU | CPU | 程式設計框架 |
|---|---|---|---|---|---|
qsharp.run |
✅ | ✅ | Q# | ||
openqasm.run |
✅ | ✅ | OpenQASM | ||
qiskit.QSharpBackend |
✅ | Qiskit | |||
simulation.NeutralAtomDevice |
✅ | ✅ | ✅ | QIR | |
simulation.NeutralAtomBackend |
✅ | ✅ | ✅ | Qiskit | |
simulation.run_qir |
✅ | ✅ | ✅ | QIR |