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, Azure Quantum geliştirme ortamları için varsayılan yerel simülatördür ve kuantum durumu vektörlerinin seyrek gösterimini kullanır. Bu özellik seyrek simülatörün kuantum durumlarını temsil etmek için kullanılan bellek ayak izini en aza indirmesine olanak tanır ve böylece daha fazla sayıda kubit üzerinden simülasyonlar yapılmasını sağlar. Seyrek simülatör, hesaplama temelinde seyrek olan kuantum durumlarını, yani genlik katsayılarının çoğunun hesaplama temelinde sıfır olduğu kuantum durumlarını temsil etmek için verimlidir. Bu nedenle seyrek simülatör, kullanıcıların hem belleği hem de zamanı üstel olarak çok sayıda sıfır genlik içeren tam durum simülatörünün aksine boşa harcamadan daha büyük uygulamaları keşfetmesine olanak tanır.
Seyrek simülatör hakkında daha fazla bilgi için bkz . Jaques ve Häner (arXiv:2105.01533).
Seyrek simülatörü çağırma
Seyrek simülatör, Visual Studio Code'da (VS Code) (QDK) uzantısının Microsoft Quantum Development Kit yüklü olduğu varsayılan yerel simülatördür.
| Senaryo | Metot |
|---|---|
| VS Code'daki bir Q# programda | Dosyayı çalıştır'ı Q# seçin |
| Python not defteri hücresinde | result=qsharp.eval("Program_Entry_Operation()")veya result=qsharp.run("Program_Entry_Operation()", shots=##) |
Not defteri hücresinde %%qsharp |
Program_Entry_Operation() |
Seyrek simülatöre Pauli gürültüsü ekleme
Seyrek simülatör, pauli gürültüsünün simülasyona eklenmesini destekler. Bu özellik, gürültülerin kuantum işlemleri ve ölçümleri üzerindeki etkilerini simüle etmenizi sağlar. Gürültü modeli Pauli gürültü olasılıkları sözlüğü kullanılarak belirtilir; burada anahtarlar Pauli işleçleri X, Yve Zve değerleri ilgili Pauli işlecini uygulama olasılıklarıdır. Gürültü modeli Q# programlarda, Python programlarında veya VS Code ayarlarında yapılandırılabilir şekilde kullanılabilir.
VS Code ayarlarını kullanarak Pauli gürültüsü ekleme
Pauli kirliliği Visual Studio Code'da Simulation:Pauli Noise kullanıcı ayarı yapılandırılarakQ#> genel olarak yapılandırılabilir.
Ayarlar VS Code'da çalıştırılan tüm Q# programlar için histogram sonuçlarına ve programda başvuruda bulunılan tüm geçitlere, ölçümlere ve kubitlere uygulanır. Ayarlar, ConfigurePauliNoise() işlevinin kullanımıyla aynıdır.
Aşağıdaki GHz örnek programının histogramı, yapılandırılmış gürültü olmadan çalıştırıldığında, yaklaşık yarısı $\ket{00000}$ ve diğer yarısını $\ket{11111}$ verir.
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;
}
Ancak, %1 bit ters çevirme gürültüsü eklendiğinde, durum yayılmaya başlar ve %25 gürültü ile durum gürültüden ayırt edilemez hale gelir.
Programlara Pauli gürültüsü ekleme Q#
Bireysel ConfigurePauliNoise() programlar için gürültü modelini ayarlamak veya değiştirmek amacıyla Q# işlevini kullanabilirsiniz. Kullanarak ConfigurePauliNoise(), Q# programlarınızda gürültünün nereye uygulanacağını ayrıntılı olarak denetleyebilirsiniz.
Uyarı
VS Code ayarlarında kirlilik yapılandırırsanız, kirlilik tüm Q# programlara uygulanır. kullanarak Q# bir ConfigurePauliNoise programda gürültü yapılandırırsanız, bu gürültü bu programın çalışması sırasında VS Code gürültü ayarlarınızı geçersiz kılar.
Örneğin, önceki programda kubitin ayrılmasından hemen sonra gürültü ekleyebilirsiniz.
...
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
ConfigurePauliNoise(0.05, 0.0, 0.0); // 5% bit-flip noise applies to all operations
H(qs[0]);
...
veya ölçüm işleminden hemen önce.
...
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
ConfigurePauliNoise(0.05, 0.0, 0.0); // noise applies only to measurement operation
let results = MeasureEachZ(qs);
...
Kirlilik yapılandırmalarını sıfırlamak veya temizlemek için de kullanabilirsiniz ConfigurePauliNoise() . Bu örnekte, gürültü ayarları kubit ayırma işleminden sonra ayarlanır ve Hadamard işleminden hemen sonra temizlenir, böylece gürültü yalnızca H(); işlemine uygulanır.
...
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
ConfigurePauliNoise(0.05, 0.0, 0.0); // noise applies to H() operation
H(qs[0]);
ConfigurePauliNoise(0.0, 0.0, 0.0); // clear noise settings
...
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() |
X, Y ve Z geçitlerinin olasılıklarını temsil eden parametrelerle bir simülatör çalıştırması için Pauli gürültüsünü yapılandırır. Gürültü yapılandırması bir Q# programdaki sonraki tüm kapılar, ölçümler ve kubitler için geçerlidir. VS Code'daki tüm gürültü ayarlarını atlar ve sonraki ConfigurePauliNoise() çağrılar tarafından sıfırlanabilir. |
ConfigurePauliNoise(0.1, 0.0, 0.5)veya ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise() |
Belirtilen olasılıkla yalnızca X kapısı olarak davranacak şekilde gürültüyü yapılandırır. Gürültü yapılandırması bir Q# programdaki sonraki tüm kapılar, ölçümler ve kubitler için geçerlidir. | 10% bit çevirme gürültüsü:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise() |
Gürültüyü yalnızca belirtilen olasılığa sahip Z kapısı olacak şekilde yapılandırır. Gürültü yapılandırması bir Q# programdaki sonraki tüm kapılar, ölçümler ve kubitler için geçerlidir. | 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ı şeklinde ve 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, herhangi bir gürültü olmaması için yapılandırır. |
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]);... |
Python programlarına veya Jupyter Notebook'lara Pauli gürültüsü ekleme
Pauli gürültü yapılandırması qdk.qsharp Python paketi ile ve histogram özelliği qdk.widgets paketi ile kullanılabilir. Gürültü qsharp.run yöntemine parametre olarak eklenir.
qsharp.BitFlipNoiseqsharp.PhaseFlipNoiseqsharp.DepolarizingNoise
Aşağıdaki örnek, 10% depolarize gürültüsünün Bell durum ölçümü üzerindeki etkisini gösterir.
from qdk import qsharp
from qdk import widgets
%%qsharp
operation BellPair() : Result[] {
use q = Qubit[2];
H(q[0]);
CNOT(q[0], q[1]);
MResetEachZ(q)
}
results = qsharp.run("BellPair()", 20, noise=qsharp.DepolarizingNoise(0.1))
results
Rastgele Pauli gürültüsü, her Pauli işlecinin olasılıkları belirtilerek kirlilik modeline eklenebilir. Önceki GHz örnek programını kullanalım:
%%qsharp
operation GHzSample() : Result[] {
use q = Qubit[5];
H(q[0]);
ApplyCNOTChain(q);
MResetEachZ(q)
}
Program çalıştığında, %20 olasılıkla gürültü ekler (bit-çevirme zamanın yarısında ve faz çevirme zamanın diğer yarısında).
result = qsharp.run("GHzSample()", 20, noise=(0.1, 0.0, 0.1))
display(widgets.Histogram(result))
ve bu işlem %10 olasılıkla Pauli-Y gürültüsü uygular.
result = qsharp.run("GHzSample()", 20, noise=(0.0, 0.1, 0.0))
display(widgets.Histogram(result))