Gambaran umum simulator kuantum di QDK

Microsoft Quantum Development Kit (QDK) mencakup simulator kuantum yang menjalankan program kuantum di komputer lokal Anda. Gunakan simulator lokal ini untuk menguji dan mengembangkan program Anda sebelum Anda mengirimkannya ke Azure Quantum target.

QDK menyediakan empat simulator utama untuk menjalankan program kuantum:

  • Simulator bersifat jarang
  • simulator stabilizer
  • Simulator GPU
  • Simulator CPU

Simulator bersifat jarang

Simulator sparse merepresentasikan status qubit sebagai vektor jarang dan menggunakan aljabar matriks jarang untuk dengan cepat mensimulasikan program yang menghasilkan beberapa amplitudo nonzero. Ini adalah simulator default untuk program dalam Q# dan OpenQASM di ekstensi QDK dan untuk API qsharp.run dan openqasm.runPython. Gunakan simulator sparse ketika Anda menginginkan simulasi cepat dari program Q#, OpenQASM, atau Qiskit, atau ketika Anda ingin menampilkan status kuantum program Anda selama simulasi.

Simulator sparse tersedia dalam ekstensi QDK untuk Visual Studio Code (VS Code) dan paket QDKPython. Simulator ini adalah satu-satunya simulator yang tersedia dalam ekstensi QDK, sehingga ekstensi secara otomatis menggunakannya ketika Anda menjalankan program Q# dan OpenQASM di VS Code. Di VS Code, gunakan Q#DumpMachine fungsi atau debugger untuk menampilkan vektor status qubit di titik yang berbeda dalam simulasi.

Baik ekstensi VS Code maupun paket Python mendukung model kebisingan untuk simulasi sparse program Q# dan OpenQASM. Hanya paket Python yang mendukung simulasi sparse untuk program Qiskit, tetapi tidak mendukung model kebisingan untuk simulasi Qiskit.

Untuk informasi selengkapnya tentang cara menjalankan simulasi dalam QDK ekstensi, lihat Menjalankan simulasi kuantum di QDK ekstensi untuk Visual Studio Code.

simulator stabilizer

Simulator stabilizer dengan cepat dan efisien mensimulasikan program yang didominasi Clifford dengan ribuan qubit. Clifford gates adalah komponen umum dari sirkuit koreksi kesalahan kuantum. Clifford operasi tidak meningkatkan jumlah cabang stabilizer, sehingga simulator dapat menerapkannya secara efisien bahkan di sirkuit yang luas. Operasi umum Clifford meliputi:

  • $X$, $Y$, dan $Z$
  • $S$ dan $S^\dagger$
  • $H$, atau Hadamard
  • $CX$, $CY$, dan $CZ$
  • $SWAP$

Simulator stabilizer juga menggunakan percabangan stabilizer untuk mensimulasikan sirkuit dengan sejumlah terbatas operasi non-Clifford. Simulator mendukung operasi non-Clifford berikut:

  • $T$ dan $T^\dagger$
  • Rotasi sudut arbitrer $R_X$, $R_Y$, $R_Z$, $R_{XX}$, $R_{YY}$, dan $R_{ZZ}$

Setiap operasi non-Clifford dapat meningkatkan jumlah cabang stabilizer. Menambahkan operasi non-Clifford dapat meningkatkan penggunaan memori dan shot time secara eksponensial. Gunakan simulator stabilizer untuk sirkuit lebar dengan sebagian besar operasi Clifford dan sejumlah kecil operasi non-Clifford. Gunakan simulator sparse atau full-state untuk sirkuit yang memiliki banyak operasi non-Clifford .

Simulator stabilizer mendukung eksekusi adaptif, kebisingan Pauli, dan kehilangan qubit. Ini tersedia dalam paket QDKPython untuk Q#, OpenQASM, Qiskit, dan QIR program, tetapi tidak tersedia dalam ekstensi QDK untuk VS Code.

Di Python API dengan pemilih simulator, gunakan "stabilizer" atau "clifford" untuk memilih simulator stabilizer.

Simulator GPU

Simulator GPU adalah simulator status penuh yang menggunakan komputer GPU Anda untuk menjalankan banyak bidikan program kuantum Anda secara paralel. Simulator mendukung semua jenis gerbang tetapi membutuhkan sumber daya komputasi yang signifikan. Simulator dapat memodelkan hingga 27 qubit. Kekuatan komputer GPU Anda menentukan performa, tetapi performa optimal untuk program yang memiliki sekitar 20 qubit dan banyak bidikan.

Simulator QDK menerima Python atau Qiskit sebagai input melalui API paket QIRGPU tertentu. VS Code Ekstensi tidak mendukung GPU simulator. Ada juga dukungan yang kaya untuk model kebisingan pada semua jenis gerbang atau operasi kuantum.

Simulator CPU

Seperti simulator GPU, simulator CPU adalah simulator status penuh yang menjalankan program dengan semua jenis gerbang kuantum. Tetapi lebih lambat karena tidak dapat menjalankan beberapa pengambilan secara paralel. Simulator ini membesar hingga sekitar 25 qubit, tetapi melambat dengan laju eksponensial ketika menambah lebih banyak qubit karena keterbatasan memori. CPU Gunakan simulator ketika komputer Anda tidak memiliki GPU, atau ketika program Anda memiliki beberapa qubit dan tidak memerlukan banyak shots.

Simulator CPU menerima input QIR atau Qiskit. Anda dapat menggunakannya melalui API paket tertentu QDKPython , tetapi tidak melalui VS Code ekstensi. Ada juga dukungan yang kaya untuk model kebisingan pada semua jenis gerbang atau operasi kuantum.

Simulator apa yang harus saya gunakan?

Pertimbangkan faktor-faktor ini ketika Anda memilih simulator:

  • Lingkungan pengembangan Anda (VS Code atau Python)
  • Kerangka kerja pemrograman kuantum yang Anda gunakan
  • Kompleksitas program Anda dan jumlah pengambilan gambar
  • Kemampuan perangkat keras komputer lokal Anda
  • Target Azure Quantum atau perangkat keras kuantum lain yang ingin Anda jalankan program Anda
  • Model kebisingan yang ingin Anda buat

Tabel berikut merangkum ketersediaan setiap QDK simulator dan kerangka kerja pemrograman kuantum yang didukung:

Simulator Availability Kerangka kerja yang didukung
Jarang VS Code ekstensi dan Python paket Q#, OpenQASM, Qiskit
Stabilizer Python Paket Q#,OpenQASM,Qiskit,QIR
GPU Python Paket Qiskit, QIR
CPU Python Paket Qiskit, QIR

Simulasi dalam QDK ekstensi untuk VS Code

QDK Ekstensi untuk VS Code hanya mendukung simulator sparse. Untuk menggunakan simulator sparse, jalankan file OpenQASM atau Q# Anda di VS Code. Anda dapat menambahkan Pauli model kebisingan ke simulasi sparse untuk program Q# di VS Code, tetapi tidak ke program OpenQASM.

Simulasi dalam QDKPython paket

Paket ini QDKPython mendukung beberapa kerangka kerja pemrograman kuantum dan keempat QDK simulator. Kompatibilitas bervariasi menurut kerangka kerja dan API.

Tabel berikut mencantumkan simulator dan kerangka kerja pemrograman yang didukung oleh setiap Python API:

Python Antarmuka Pemrograman Aplikasi (API) Jarang Stabilizer GPU CPU Kerangka kerja pemrograman
qsharp.run Supported Supported Tidak didukung Tidak didukung Q#
openqasm.run Supported Supported Tidak didukung Tidak didukung OpenQASM
qiskit.QSharpBackend Supported Tidak didukung Tidak didukung Tidak didukung Qiskit
simulation.NeutralAtomDevice Tidak didukung Supported Supported Supported QIR
qiskit.NeutralAtomBackend Tidak didukung Supported Supported Supported Qiskit
simulation.run_qir Tidak didukung Supported Supported Supported QIR