Kuantum Simülatörlerine Genel Bakış QDK

Microsoft Quantum Development Kit (QDK) yerel makinenizde kuantum programları çalıştıran kuantum simülatörlerini içerir. Programlarınızı Azure Quantum hedeflerine göndermeden önce test etmek ve geliştirmek için bu yerel simülatörleri kullanın.

QDK, kuantum programlarını çalıştırmak için dört birincil simülatör sağlar:

  • Seyrek simülatör
  • Dengeleyici simülatörü
  • Simülatör GPU
  • Simülatör CPU

Seyrek simülatör

Seyrek simülatör kubit durumlarını seyrek vektörler olarak temsil eder ve birkaç sıfır dışı genlik oluşturan programları hızlı bir şekilde simüle etmek için seyrek matris cebirini kullanır. openqasm.run uzantısındaki OpenQASM ve Q# programları ile Python ve QDKqsharp.run API'leri için varsayılan simülatördür. , Q#veya programlarının OpenQASMhızlı simülasyonlarını istediğinizde veya Qiskit simülasyon sırasında programınızın kuantum durumunu görüntülemek istediğinizde seyrek simülatörünü kullanın.

Sparse simülatör, hem VS CodeQDK (Visual Studio Code) uzantısında hem de QDKPython paketinde kullanılabilir. Bu simülatör, QDK uzantısında kullanılabilen tek simülatördür; bu nedenle, OpenQASM ve Q# programlarını VS Code içinde çalıştırdığınızda uzantı bunu otomatik olarak kullanır. VS Code içinde, simülasyondaki farklı noktalarda kubit durumu vektörlerini görüntülemek için Q#DumpMachine işlevini veya hata ayıklayıcısını kullanın.

Hem VS Code uzantı hem de Python paket, OpenQASM ve Q# programlarının seyrek simülasyonları için gürültü modellerini destekler. Yalnızca Python paketi, Qiskit programlarının seyrek simülasyonunu destekler, ancak Qiskit simülasyonları için gürültü modellerini desteklemez.

QDK uzantısında simülasyonların nasıl çalıştırılacağı hakkında daha fazla bilgi için bkz. Visual Studio Code için QDK uzantısında kuantum simülasyonları çalıştırma.

Dengeleyici simülatörü

Dengeleyici simülatörü, binlerce kubit içeren Clifford baskın programları hızlı ve verimli bir şekilde simüle eder. Clifford kapılar, kuantum hata düzeltme devrelerinin yaygın bileşenleridir. Clifford işlemler stabilizatör dallarının sayısını artırmaz, bu nedenle simülatör bunları geniş devrelerde bile verimli bir şekilde uygulayabilir. Yaygın Clifford işlemler şunlardır:

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

Stabilizatör simülatörü, sınırlı sayıda Clifford olmayan işlem içeren devreleri simüle etmek için stabilizatör dallanmasını da kullanır. Simülatör aşağıdaki Clifford olmayan işlemleri destekler:

  • $T$ ve $T^\dagger$
  • Keyfi açılı $R_X$, $R_Y$, $R_Z$, $R_{XX}$, $R_{YY}$ ve $R_{ZZ}$ döndürmeleri

Clifford olmayan her işlem stabilizatör dallarının sayısını artırabilir. Clifford olmayan işlemler eklemek, bellek kullanımını ve çekim süresini üstel olarak artırabilir. Çoğunlukla Clifford operasyonları ve mütevazı sayıda Clifford olmayan işlem içeren geniş devreler için stabilizatör simülatörünü kullanın. Çok sayıda non-Clifford işlemi olan devreler için seyrek veya tam durum simülatörü kullanın.

Dengeleyici simülatörü uyarlamalı yürütmeyi, Pauli gürültüyü ve kubit kaybını destekler. OpenQASM, Qiskit, QIR ve Q# programları için QDKPython paketinde kullanılabilir, ancak VS Code için QDK uzantısında kullanılamaz.

Python bulunan simülatör seçicili API'lerde, dengeleyici simülatörünü seçmek için "stabilizer" veya "clifford" kullanın.

Simülatör GPU

Simülatör GPU, makinenizin GPU'unu kullanarak kuantum programınızın birçok çekimini paralel olarak çalıştıran tam durumlu bir simülatördür. Simülatör tüm kapı türlerini destekler ancak önemli bilgi işlem kaynakları gerektirir. Simülatör en fazla 27 kubit modelleyebilir. Makinenizin GPU gücü performansı belirler, ancak en iyi performans yaklaşık 20 kubit içeren ve çok sayıda ölçüm alan programlarda elde edilir.

Simülatör, belirli QiskitQIR paket API'leri aracılığıyla QDK veya GPU değerlerini giriş olarak kabul eder. VS Code uzantısı GPU simülatörünü desteklemiyor. Ayrıca her tür kuantum kapısı veya işlemde gürültü modelleri için zengin destek sağlanır.

Simülatör CPU

GPU Simülatör gibi, CPU simülatör de herhangi bir kuantum geçidi türüne sahip programlar çalıştıran tam durumlu bir simülatördür. Ancak paralel olarak birden fazla çekim çalıştıramadığından daha yavaştır. Bu simülatör yaklaşık 25 kubite kadar ölçeklendirilir, ancak bellek sorunları nedeniyle daha fazla kubitle üstel olarak yavaşlar. CPU Makinenizde bir GPUolmadığında veya programınızın kubit sayısı az olduğunda ve çok fazla çekim gerektirmediğinde simülatörü kullanın.

Simülatör QIR veya Qiskit girişini kabul eder. Bunu belirli QDKPython paket API'leri aracılığıyla kullanabilirsiniz, ancak VS Code uzantısı aracılığıyla değil. Ayrıca her tür kuantum kapısı veya işlemde gürültü modelleri için zengin destek sağlanır.

Hangi simülatörü kullanmalıyım?

Bir simülatör seçerken şu faktörleri göz önünde bulundurun:

  • Geliştirme ortamınız (VS Code veya Python)
  • Kullandığınız kuantum programlama çerçevesi
  • Programınızın karmaşıklığı ve çekim sayısı
  • Yerel makinenizin donanım özellikleri
  • programlarınızı çalıştırmak istediğiniz Azure Quantum hedefleri veya diğer kuantum donanımı
  • Oluşturmak istediğiniz gürültü modelleri

Aşağıdaki tabloda her QDK simülatörün kullanılabilirliği ve desteklenen kuantum programlama çerçeveleri özetlenmektedir:

Simülatör Availability Desteklenen çerçeveler
Seyrek VS Code uzantı ve Python paket Q#, OpenQASM, Qiskit
Stabilizer Python Paket Q#, OpenQASM, Qiskit, QIR
GPU Python Paket Qiskit, QIR
CPU Python Paket Qiskit, QIR

VS Code için QDK uzantıdaki simülasyonlar

QDK uzantısı VS Code yalnızca seyrek simülatörü destekler. Seyrek simülatörünü kullanmak için VS Code içinde OpenQASM veya Q# dosyanızı çalıştırın. Q# içindeki OpenQASM programlarının seyrek simülasyonlarına Pauli gürültü modelleri ekleyebilirsiniz, ancak VS Code programlarına ekleyemezsiniz.

Paketteki QDKPython simülasyonlar

QDK Python paketi birden çok kuantum programlama çerçevesini ve dört QDK simülatörünün tümünü destekler. Uyumluluk, çerçeveye ve API'ye göre değişir.

Aşağıdaki tabloda, her Python API'nin desteklediği simülatörler ve programlama çerçeveleri listelenmektedir:

Python API (Uygulama Programlama Arayüzü) Seyrek Stabilizer GPU CPU Programlama çerçevesi
qsharp.run Supported Supported Desteklenmiyor Desteklenmiyor Q#
openqasm.run Supported Supported Desteklenmiyor Desteklenmiyor OpenQASM
qiskit.QSharpBackend Supported Desteklenmiyor Desteklenmiyor Desteklenmiyor Qiskit
simulation.NeutralAtomDevice Desteklenmiyor Supported Supported Supported QIR
qiskit.NeutralAtomBackend Desteklenmiyor Supported Supported Supported Qiskit
simulation.run_qir Desteklenmiyor Supported Supported Supported QIR