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.
Kuantum cihazları hala yeni ortaya çıkan bir teknolojidir ve ne yazık ki bunların tümü her Q# programını çalıştıramayabilir. Bu nedenle, kuantum programları geliştirirken bazı kısıtlamaları göz önünde bulundurmanız gerekir. Profil target türleri, Q# programlarınızla birlikte kullanabileceğiniz target kuantum cihazlarının özelliklerini tanımlar. Microsoft Quantum Geliştirme Seti (QDK), Azure Quantum'da kullanılabilen geçerli kuantum cihazlarının tüm özelliklerini destekleyen farklı target profil türleri kümesine sahiptir.
Bu makalede Azure Quantum'daki farklı profil türleri target , bunların sınırlamaları ve bunların QDK'de nasıl yapılandırılacağı ele alınmaktadır.
Hedef profiller ve bunların sınırlamaları
Şu anda Azure Quantum ve QDK, target çalıştırma yeteneklerine bağlı olarak farklı QIR profilleri yönetmektedir.
- Unrestricted: Bu profil, simülatörler için bellek sınırları veya fiziksel kuantum bilgisayarları için kubit sayısı içinde herhangi bir QIR programı ve dolayısıyla herhangi bir Q# programını çalıştırabilir.
-
Base: Bu profil, program akışını denetlemek için kubit ölçümlerinden elde edilecek sonuçların kullanılmasını gerektirmeyen herhangi bir Q# programını çalıştırabilir. Bu tür QPU için hedeflenen bir Q# programında, türündeki
Resultdeğerler eşitlik karşılaştırmasını desteklemez. -
Adaptive RI: Bu profil, program akışını denetlemek için kubit ölçümlerinin sonuçlarını kullanma yeteneği sınırlıdır. Bu tür QPU için hedeflenen bir Q# programı içinde, işlemlerdeki deyimler içindeki
Resultkoşulların bir parçası olarak türifdeğerlerini karşılaştırabilir ve devre ortası ölçümüne olanak sağlayabilirsiniz. - Adaptive RIF: Bu profil, profille aynı özelliklere sahiptir, ancak kayan Adaptive RI nokta işlemlerini de destekler.
Profil için Unrestrictedtarget program oluşturma ve çalıştırma
Unrestricted target profiller tüm Q# programını çalıştırabilir, böylece işlev kısıtlamalarını göz önünde bulundurmanıza gerek kalmadan Q# kodu yazabilirsiniz. Azure Quantum, bu profili destekleyen gerçek bir cihaz targets sağlamaz. Ancak, QDK ile sağlanan simülatörlerde bu profile sahip Q# programlarını çalıştırabilirsiniz Unrestricted .
Profili yapılandırma Unrestrictedtarget
Profilinizi QIRtarget el ile ayarlamazsanız, derleyici profili sizin için otomatik olarak ayarlar target . Derleyici, programınızın seçtiğiniz Azure Quantum cihazında target çalışmasına izin veren en kısıtlayıcı profili seçer.
Profili el ile QIR olarak ayarlamak target için aşağıdaki seçeneklerden birini belirleyin:
Bir Q# projesi ayarlarsanız projenizin
qsharp.jsondosyasına aşağıdaki komutu ekleyin:{ "targetProfile": "unrestricted" }Q# projesinin parçası olmayan bir
.qsdosyada çalışıyorsanız, profili doğrudan Q# kodunuzda ayarlayın target . Bunu yapmak için, bu işlem varsayılan@EntryPoint(Unrestricted)olduğunda bile programınızdaki giriş noktası işleminin hemen önüne ekleyinMain.Python'da
qdk.inityöntemini çağırarak target profilini ayarlayın.from qdk import init, TargetProfile init(target_profile=TargetProfile.Unrestricted)
Profil için Basetarget program oluşturma ve çalıştırma
Base
target profiller, program akışını denetlemek için kubit ölçümlerinden elde ettikleri sonuçları kullanamama kısıtlamasıyla çok çeşitli Q# uygulamaları çalıştırabilir. Daha açık belirtmek gerekirse, tür Result değerleri eşitlik karşılaştırmayı desteklemez.
Örneğin, bir FlipQubitOnZeroBase üzerinde aşağıdaki target işlemini çalıştıramazsınız:
@EntryPoint(Base)
operation FlipQubitOnZero() : Unit {
use q = Qubit();
if M(q) == Zero {
X(q);
}
}
FlipQubitOnZero Cihaz kuantum algoritması çalışırken koşullu mantık gerçekleştirmek için kubit ölçümünün sonucunu kullanamadığından, bu kodu bir Basetargettarget üzerinde çalıştırdığınızda işlem başarısız olur. Bir Basetarget cihazda algoritmaları çalıştırmayı planlıyorsanız, kodunuzun mantıksal bir koşulu değerlendirmek için ölçülen kubitleri kullanan if için herhangi bir blok içermediğinden emin olun.
Profili yapılandırma Basetarget
Profili manuel olarak ayarlamak için QIRtargetBase aşağıdaki seçeneklerden birini belirleyin:
Bir Q# projesi ayarlarsanız projenizin
qsharp.jsondosyasına aşağıdaki komutu ekleyin:{ "targetProfile": "base" }Q# projesinin parçası olmayan bir
.qsdosyada çalışıyorsanız, profili doğrudan Q# kodunuzda ayarlayın target . Bunu yapmak için, bu işlem varsayılan@EntryPoint(Base)olduğunda bile programınızdaki giriş noktası işleminin hemen önüne ekleyinMain.Python'da
qdk.inityöntemini çağırarak target profilini ayarlayın.from qdk import init, TargetProfile init(target_profile=TargetProfile.Base)
targets Base target profili için desteklenir
Şimdilik Azure Quantum aşağıdakilere Basetargetserişim sağlar:
| Provider | Simülatör | Kuantum İşlem Birimi (QPU) |
|---|---|---|
| IonQ | ionq.simulator |
ionq.qpu.* |
| Rigetti | rigetti.sim.* |
rigetti.qpu.* |
Azure Quantum'da bu sağlayıcılar hakkında daha fazla bilgi edinmek için bkz. IonQ sağlayıcısı ve Rigetti sağlayıcısı.
Profil için Adaptive RItarget program oluşturma ve çalıştırma
Adaptive RI target profiller, profillere göre Base daha fazla Q# uygulaması çalıştırabilir, ancak bazı sınırlamaları vardır. Profillerden farklı olarak Basetarget , Adaptive RItargets devre içi ölçümleri destekler.
Orta devre ölçümleriyle kubitleri yalnızca uçta değil kuantum programının herhangi bir noktasında seçmeli olarak ölçebilirsiniz. Daha sonra, bloklarla if koşullu dallanma gibi programınızdaki diğer işlemler için ölçüm sonuçlarını kullanabilirsiniz. Orta devreyi ölçtüğünüz kubitler klasik duruma (sıfır veya bir) daraltılır, ancak ölçülmeyen kubitler kuantum durumunda kalır.
Q# dilinde bir kubit ölçtüyseniz, türünde Result bir değer döndürülür. Bu sonucu bir koşullu deyimde kullanmak istiyorsanız, koşullu deyimde doğrudan karşılaştırmanız gerekir. İlgili koşullu bloklar return veya set deyimlerini içermemelidir.
Örneğin, içinde Adaptive RItargetaşağıdaki Q# koduna izin verilir:
@EntryPoint(Adaptive_RI)
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); }
}
Profili yapılandırma Adaptive RItarget
Profili manuel olarak ayarlamak için QIRtargetAdaptive RI aşağıdaki seçeneklerden birini belirleyin:
Bir Q# projesi ayarlarsanız projenizin
qsharp.jsondosyasına aşağıdaki komutu ekleyin:{ "targetProfile": "adaptive_ri" }Q# projesinin parçası olmayan bir
.qsdosyada çalışıyorsanız, profili doğrudan Q# kodunuzda ayarlayın target . Bunu yapmak için, bu işlem varsayılan@EntryPoint(Adaptive_RI)olduğunda bile programınızdaki giriş noktası işleminin hemen önüne ekleyinMain.Python'da
qdk.inityöntemini çağırarak target profilini ayarlayın.from qdk import init, TargetProfile init(target_profile=TargetProfile.Adaptive_RI)
targets Adaptive RI target profili için desteklenir
Şimdilik Quantinuum, Azure Quantum'da Adaptive RItargetsbulunan tek sağlayıcıdır.
-
Emulators:
quantinuum.sim.h2-1evequantinuum.sim.h2-2e -
QPU'lar:
quantinuum.qpu.h2-1vequantinuum.qpu.h2-2
Quantinuum'un Azure Quantum'daki teklifleri hakkında daha fazla bilgi için bkz. Quantinuum Öykünücüleri.
Profil için Adaptive RIFtarget program oluşturma ve çalıştırma
Adaptive RIF target profiller, profillerin tüm özelliklerine sahiptir, ancak kayan Adaptive RI nokta hesaplamaları içeren Q# programlarını da destekler.
Örneğin, içinde Adaptive RIFtargetaşağıdaki Q# koduna izin verilir:
@EntryPoint(Adaptive_RIF)
operation DynamicFloat() : Double {
use q = Qubit();
H(q);
mutable f = 0.0;
if M(q) == One {
f = 0.5;
}
Reset(q);
return f;
}
Profili yapılandırma Adaptive RIFtarget
Profili manuel olarak ayarlamak için QIRtargetAdaptive RIF aşağıdaki seçeneklerden birini belirleyin:
Bir Q# projesi ayarlarsanız projenizin
qsharp.jsondosyasına aşağıdaki komutu ekleyin:{ "targetProfile": "adaptive_rif" }Q# projesinin parçası olmayan bir
.qsdosyada çalışıyorsanız, profili doğrudan Q# kodunuzda ayarlayın target . Bunu yapmak için, bu işlem varsayılan@EntryPoint(Adaptive_RIF)olduğunda bile programınızdaki giriş noktası işleminin hemen önüne ekleyinMain.Python'da
qdk.inityöntemini çağırarak target profilini ayarlayın.from qdk import init, TargetProfile init(target_profile=TargetProfile.Adaptive_RIF)
targets Adaptive RIF target profili için desteklenir
Şimdilik Azure Quantum henüz mevcut değil Adaptive RIFtargets. Ancak, QDK'daki yerel simülatörde için Adaptive RIFtargets programları çalıştırabilirsiniz.