Azure Quantum'da hedef profil türleri
Bu makalede, Azure Quantum'daki kuantum bilgi işlem sağlayıcılarında kullanılabilen farklı target profil türleri açıklanmaktadır. Şu anda, alanın erken geliştirme aşamasından dolayı, kuantum cihazlarının üzerinde çalışan programlar için bazı sınırlamaları ve gereksinimleri vardır.
Kuantum İşleme Birimleri (QPU): farklı profiller ve bunların sınırlamaları
Kuantum İşleme Birimi (QPU), kuantum algoritmalarını hesaplamak için değiştirilebilen birbirine bağlı bir dizi kubit içeren fiziksel veya sanal bir işlemcidir. Kuantum bilgisayarın veya kuantum simülatörünün merkezi bileşenidir.
Kuantum cihazları hala yeni ortaya çıkan bir teknolojidir ve bunların tümü Q# kodunu çalıştıramayabilir. Bu nedenle, farklı targetsiçin programlar geliştirirken bazı kısıtlamaları göz önünde bulundurmanız gerekir. Şu anda Azure Quantum ve QDK, QPU'lar için üç farklı profili yönetmektedir:
- Full: Bu profil, simülatörler için bellek sınırları veya fiziksel kuantum bilgisayarlar için kubit sayısı içinde herhangi bir Q# programını çalıştırabilir.
- No Control Flow: 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 ed bir Q# programı targetiçinde, türündeki
Result
değerler eşitlik karşılaştırmasını desteklemez. - Basic Measurement Feedback: Bu profil, program akışını denetlemek için kubit ölçümlerinin sonuçlarını sınırlı bir şekilde kullanabilir. Bu tür QPU için ed bir Q# programı targetiçinde, işlemlerdeki deyimlerin içindeki
if
koşulların bir parçası olarak türResult
değerlerini karşılaştırabilir ve devre ortası ölçümüne olanak sağlayabilirsiniz. Karşılık gelen koşullu bloklar veyaset
deyimleri içermeyebilirreturn
.
Profil için Full uygulama oluşturma ve çalıştırma targets
Full profil targets herhangi bir Q# programını çalıştırabilir, başka bir deyişle işlev kısıtlamaları olmadan program yazabilirsiniz. Azure Quantum henüz bu profili sağlamamaktadır target .
Profil için No Control Flow uygulama oluşturma ve çalıştırma targets
No Control Flow profil targets , program akışını denetlemek için kubit ölçümlerinin sonuçlarını kullanamama kısıtlaması ile ç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, bu işlem üzerinde No Control Flowtargetçalıştırılamaz:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if (desired != M(q)) {
X(q);
}
}
Hesaplama akışını bir deyimiyle if
denetlemek için iki sonuç (desired != M(q)
) arasında bir karşılaştırmayı değerlendirdiğinden bu işlemi üzerinde No Control Flowtarget çalıştırmaya çalışmak başarısız olur. Bu, ve else
deyimleri gibi elif
her tür koşullu dallanma için geçerli olacaktır.
Not
Şu anda, program akışını denetlemek için sonuçları kullanmasanız bile ile ölçülen No Control Flowtargetskubitlere işlem uygulayan kuantum programları gönderemezsiniz. Yani, No Control Flowtargets orta devre ölçümlerine izin verme.
Örneğin, aşağıdaki kod üzerinde No Control Flowtargetçalıştırılamaz:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SampleMeasuredQubit(q : Qubit) : Result {
H(MeasureQubit(q));
return M(MeasureQubit(q));
}
Şu anda bunlar No Control Flowtargets Azure Quantum için kullanılabilir:
Sağlayıcı: IonQ
- IonQ simülatörü (
ionq.simulator
) - IonQ QPU (
ionq.qpu
)
- IonQ simülatörü (
Sağlayıcı: Rigetti
- Rigetti Simülatörü (
rigetti.sim.*
) - Rigetti QPU (
rigetti.qpu.*
)
- Rigetti Simülatörü (
Profil için Basic Measurement Feedback uygulama oluşturma ve çalıştırma targets
Basic Measurement Feedbackprofil targets çok çeşitli Q# uygulamaları çalıştırabilir ve yalnızca işlemlerdeki deyimlerdeki koşulların if
bir parçası olarak tür Result
değerlerini karşılaştırabilirsiniz. Bu profil türü, profiller üzerinde No Control Flow bir gelişme olduğunu varsayalım, ancak yine de bazı sınırlamalara tabidir.
Basic Measurement Feedback profil targets , ölçüm tabanlı koşullu işlemlere ve orta devre ölçümlerine olanak sağlar; başka bir deyişle kubitler bir kuantum programının son deyimi dışında bir noktada seçmeli olarak ölçülebilir ve ölçümün çıkışı diğer işlemlerde kullanılabilir. Orta devre ölçümü, kuantum programının herhangi bir noktasında birden çok ölçüme olanak tanır. Ölçülen kubitlerin kuantum bilgileri klasik duruma (sıfır veya bir) daraltılır, ancak ölçülmeyen kubitler kuantum durumlarını korur.
Q# dilinde kubit ölçülürken tür Result
değeri 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. Karşılık gelen koşullu bloklar veya set
deyimleri içermeyebilirreturn
.
Örneğin, içinde aşağıdaki Q# koduna Basic Measurement Feedbacktargetizin verilir:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); }
}
Ancak, taşınan Boole değerlendirmesiyle aynı koda izin verilmez :
operation BeOne(q : Qubit) : Bool {
return M(q) == One;
}
operation SetToZeroUsingBeOne(q : Qubit) : Unit {
if BeOne(q) { X(q); }
}
deyimine SetQubitState
veya set
return
deyimini if
eklemediğiniz sürece içindeki No Control Flow işlemi kullanılabilirBasic Measurement Feedbacktarget. Bu, ve else
deyimleri gibi elif
her tür koşullu dallanma için geçerli olacaktır. Örneğin, aşağıdaki işlem içinde Basic Measurement Feedbacktargetkullanılamaz:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if desired != M(q) {
X(q);
return M(q);
}
}
Şu anda bunlar Basic Measurement Feedbacktargets Azure Quantum için kullanılabilir:
- Sağlayıcı: Quantinuum
- Quantinuum Öykünücüleri (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - Quantinuum QPU'ları (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Quantinuum Öykünücüleri (
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin