Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Seyrek simülatör, kuantum durumu vektörlerinin seyrek gösterimini kullanır. Seyrek kuantum durumu, genlik katsayılarının çoğunun sıfır olduğu bir durumdur. Seyrek gösterimler seyrek simülatörünün kuantum durumlarını temsil etmek için gereken bellek ayak izini en aza indirmesine olanak tanır ve bu da daha fazla sayıda kubit üzerinden simülasyonlar yapılmasına olanak tanır. Seyrek simülatör, hesaplama temelinde seyrek olan kuantum durumlarına sahip programlar için verimlidir. Seyrek simülatör, kullanıcıların tam durum simülatöründen daha büyük uygulamaları keşfetmesine olanak tanır çünkü tam durum simülatörleri üstel olarak çok fazla sayıda sıfır genlik üzerinde bellek ve zaman harcar.
Seyrek simülatör hakkında daha fazla bilgi için bkz. Jaques ve Häner (arXiv:2105.01533).
Seyrek simülatörü çağır
Seyrek simülatör, Microsoft (Quantum Development Kit) için QDKVisual Studio Code (VS Code) uzantısındaki varsayılan yerel simülatördür. Seyrek simülatörün nasıl kullanılacağı, geliştirme ortamınıza bağlıdır.
| Geliştirme ortamı | Seyrek simülatörü çağırma |
|---|---|
| Bir Q# veya OpenQASM programında VS Code | Q# veya OpenQASM dosyasını çalıştırma |
Python kitaplığına sahip bir qdk programında |
qsharp.runveya openqasm.runveya qiskit.QSharpBackend |
Not defteri hücresinde %%qsharp |
Program girişi işlemini çağırın, örneğin:Main() |
Pauli içine seyrek simülatöre gürültü ekleyin VS Code
Seyrek simülatör, VS Code uzantısıyla programlarınızın Pauli simülasyonlarına gürültü eklenmesini destekler. Bu özellik, gürültülerin kuantum işlemleri ve ölçümleri üzerindeki etkilerini simüle etmenizi sağlar. Programınızda bir gürültü modeli belirtmek için ConfigurePauliNoise işlevini kullanın. İşlev, Pauli operatörleri X, Y ve Z üzerinde gürültünün meydana gelme olasılığını ayarlar. Ayrıca uzantı ayarlarından genel kirlilik modellerini de yapılandırabilirsiniz.
Pauli Gürültü eklemek için VS Code ayarlarını kullanın.
İçinde VS Code yer alan Q# programlar için genel Pauli gürültü ayarı yapmak amacıyla, uzantının QDK ayarını Q#> Simülasyonu:Pauli Gürültü şeklinde yapılandırın.
Gürültü ayarları, VS Code içindeki tüm programlardaki Q# tüm geçitler, ölçümler ve kubitler için histogram sonuçlarına uygulanır.
Örneğin, aşağıdaki GHz örnek programının kirlilik yapılandırılmamış histogramı, ölçümlerin yaklaşık yarısı için $\ket{00000}$ ve diğer yarısı için $\ket{11111}$ sonucunu gösterir.
import Std.Diagnostics.*;
import Std.Measurement.*;
operation Main() : Result []{
let num = 5;
return GHzSample(num);
}
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
1% bit çevirme gürültü oranı bile eklerseniz sonuçlar yayılmaya başlar. 25% bit çevirme gürültüsü ile histogram saf gürültüden ayırt edilemez.
Tek tek Pauli programlara gürültü ekleme Q#
ConfigurePauliNoise Tek tek Q# programlar için kirlilik modelini ayarlamak veya değiştirmek için işlevini kullanın. İşlev, Q# programlarınızda gürültünün ne zaman ve nerede oluştuğunu kontrol etmenizi sağlar.
Uyarı
Ayarlar'da VS Code gürültü yapılandırırsanız, gürültü tüm Q# programlara uygulanır. Ancak, ConfigurePauliNoise işlevi, işlevi çağıran programın VS Code gürültü ayarlarını geçersiz kılar.
Örneğin, önceki programda kubit tahsisinden hemen sonra gürültü ekleyebilirsiniz.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
// 5% bit-flip noise applies to all operations
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Ya da yalnızca ölçüm işlemine gürültü ekleyebilirsiniz.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
// Noise applies to only the measurement operation
ConfigurePauliNoise(0.05, 0.0, 0.0);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Programınızın farklı noktalarında kirlilik yapılandırmalarını değiştirmek veya temizlemek için birden çok kez arayın ConfigurePauliNoise . Örneğin, Hadamard kapısına %5 bit çevirme hatası ayarlayabilir ve ardından programın geri kalanı için gürültü eklememeyi seçebilirsiniz.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
// Noise applies to the H operation
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
// Clear the noise settings
ConfigurePauliNoise(0.0, 0.0, 0.0);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Diğer Q# gürültü işlevleri
ConfigureNoiseFunction İşlev, programınızdaki her türlü gürültüyü Pauli modellemek için yeterlidir, ancak Q# kullanabileceğiniz diğer gürültü işlevlerine sahiptir.
Std.Diagnostics kitaplığında Q# programlarda gürültü yapılandırmak için aşağıdaki işlevler kullanılabilir:
| İşlev | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Simülatör çalıştırması için Pauli gürültüsünü yapılandırır. Parametreler X, Y ve Z kapısı Pauli gürültüsü olasılıklarını temsil eder. Gürültü yapılandırması bir Q# programdaki sonraki tüm kapılar, ölçümler ve kubitler için geçerlidir. Uzantı kirlilik VS Code ayarlarını geçersiz kılar. Daha önceki çağrılarla ayarlanan gürültüyü geçersiz kılmak için ConfigurePauliNoise sonraki çağrıları kullanır. |
ConfigurePauliNoise(0.1, 0.0, 0.5)veya ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Belirtilen olasılığa sahip yalnızca X kapısı gürültüsünü yapılandırır. | 10% bit çevirme gürültüsü:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Belirtilen olasılığa sahip yalnızca Z kapısı gürültüsünü yapılandırır. | 10% faz çevirme gürültüsü:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Gürültüyü, X, Y veya Z kapısı olacak şekilde eşit olasılıkla yapılandırır. | 6% depolarize edici gürültü:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Gürültü modelini gürültü olmayacak şekilde sıfırlar. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Simülasyon sırasında tek bir kubite yapılandırılmış gürültü uygular. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |