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.
VS Code Visual Studio Code (Q#) için OpenQASM (QDK) uzantısı, Microsoft ve Quantum Development Kit programlarını yerel seyrek simülatöründe otomatik olarak çalıştırır.
Bu makalede, programları yerel simülatörde çalıştırma ve Q# gürültüyü Pauli simülasyonlara ekleme işlemleri açıklanmaktadır. QDK Python'den diğer simülatörleri kullanmak için Python konusuna bakın.
Yerel simülatör nasıl çalışır?
Seyrek simülatör, kuantum durumunun yalnızca sıfır olmayan genliklerini depolar. Çoğu hesaplama temel genliği sıfır olduğunda, bu gösterim daha az bellek kullanır ve tüm genlikleri depolayan tam durum simülatörünün simüle edebildiğinden daha fazla kubite sahip bazı programları simüle edebilir.
Performans avantajı, kuantum durumunun hesaplama temelinde seyrek kalıp kalmadığına bağlıdır. Daha fazla bilgi için bkz. Jaques ve Häner (arXiv:2105.01533).
Bir kuantum programını VS Code içinde çalıştırın
- VS Code için QDK uzantısını yükleyin.
- Bir Q# (
.qs) veya OpenQASM (.qasm) dosyası açın. - Dosyanın başındaki veya Q#
Mainişleminin üstündeki CodeLens'ten Çalıştır'ı seçin.
Simülasyon çıktısı terminalde VS Code görünür. Q# programları için, programın çalışırken kuantum durumunu incelemek üzere Hata Ayıkla'yı seçin.
Simülasyonlara Q#gürültüPauli ekle
Seyrek simülatör, QDK programlar için Q# gürültüyü Pauli uzantısında destekler. Bir programda $X$, $Y$ ve $Z$ hatalarının olasılıklarını ayarlamak için Pauli kullanınConfigurePauliNoise. Uzantı QDK ayarları genel bir Pauli gürültü modelini de destekler.
Note
Uzantıdaki OpenQASM simülasyonuna QDK gürültü modeli ekleyemezsiniz.
Q# veya NoiseConfig programları için işleme özgü gürültü modelleri oluşturmak üzere QDKPython paketini ve OpenQASM API'sini kullanın.
VS Code gürültü Pauli ayarlarda ekleme
- VS Code içinde, Pauli uzantısı için QDK kullanıcı ayarında Q# programları için genel Q# gürültüyü ayarlayın.
Gürültü ayarları, Q# içindeki tüm programlardaki VS Code tüm geçitler, ölçümler ve kubitler için histogram sonuçlarına uygulanır.
Gürültü olmadan, bu GHZ örnek program için histogramda ölçümlerin yaklaşık yarısı için $\ket{00000}$ ve diğer yarısı için $\ket{11111}$ gösterilir.
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-flip gürültü oranında sonuçlar dağılmaya başlar. 25%'te histogram saf gürültüden ayırt edilemez.
Tek tek Pauli programlara gürültü ekleme Q#
Bir Q#ConfigurePauliNoise programının gürültü modelini ayarlamak veya değiştirmek ve gürültünün ne zaman ve nerede oluşacağını denetlemek için kullanın.
Note
VS Code ayarları, tüm Q# programlara gürültü uygular, ancak ConfigurePauliNoise bu ayarları onu çağıran program için geçersiz kılar.
Önceki programda, kubit ayırmadan hemen sonra gürültü ekleyin:
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
// 5% bit-flip noise applies to all subsequent operations.
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Yalnızca ölçüm işlemine gürültü uygulamak için, gürültü modelini ölçümden hemen önce ayarlayın ve daha sonra temizleyin:
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
// Noise applies only to 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 gürültü yapılandırmasını değiştirmek veya temizlemek için ConfigurePauliNoise öğesini birden çok kez çağırın. Örneğin, Hadamard kapısına 5% bit çevirme gürültüsü uygulayın ve ardından programın geri kalanı için gürültü yapılandırmasını temizleyin.
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
ConfigurePauliNoise tüm Pauli gürültü modellerini destekler. Gürültüyü yapılandırmak veya uygulamak için Std.Diagnostics ad alanındaki bu işlevleri ve işlemleri kullanın:
| İşlev | Description | Örnek |
|---|---|---|
ConfigurePauliNoise |
Simülasyon için gürültüyü ayarlar Pauli. Pauli $X$, $Y$ ve $Z$ hatalarının olasılıklarını veya bir Pauli gürültü modelini geçirin. Yapılandırma, bir Q# programındaki sonraki tüm geçitler, ölçümler ve kubitler için geçerlidir ve VS Code uzantısının gürültü ayarlarını geçersiz kılar. Sonraki çağrılar önceki yapılandırmaları geçersiz kılar. | ConfigurePauliNoise(0.1, 0.0, 0.5)veya ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Belirtilen olasılıkta yalnızca Pauli $X$ hatalarıyla bir gürültü modeli döndü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ıkta yalnızca Pauli $Z$ hataları olan bir gürültü modeli döndürür. | 10% faz çevirme gürültüsü:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Pauli $X$, $Y$ ve $Z$ hataları için eşit olasılıklara sahip bir gürültü modeli döndürür. | 6% depolarize edici gürültü:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.02, 0.02, 0.02) |
NoNoise |
Sıfır hata olasılığına sahip bir model döndürür. Geçerli gürültü yapılandırmasını temizlemek için bunu ConfigurePauliNoise öğesine iletin. |
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]);... |