Aracılığıyla paylaş


Azure Quantum'da QIR target profil türleri

Bu makalede, Azure Quantum'daki kuantum bilgi işlem sağlayıcılarında kullanılabilen farklı QIR target profil türleri açıklanmaktadır. QIR target profil türleri, Q# programlarınızla yapabileceğiniz target kuantum cihazlarının özelliklerini tanımlamak için kullanılır.

Hedef profiller ve bunların sınırlamaları

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 üç farklı target profili 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ını çalıştırabilir.
  • QIR 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 ed bir Q# programı targetiçinde, tür Result değerleri eşitlik karşılaştırmasını desteklemez.
  • QIR 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 ed bir Q# programı targetiçinde, işlemlerdeki deyimler içindeki if koşulların bir parçası olarak tür Result değerlerini karşılaştırabilir ve orta devre ölçümüne olanak sağlayabilirsiniz.

Profil için Unrestrictedtarget uygulama oluşturma ve çalıştırma

Unrestrictedtarget profiller herhangi bir programı çalıştırabilir, yani işlev kısıtlamaları olmadan Q# programları yazabilirsiniz. Azure Quantum bu profili sağlamaz target . Ancak, QDK tarafından sağlanan simülatörlerde Q# programları çalıştırabilirsiniz Unrestricted .

Profili yapılandırma Unrestrictedtarget

Visual Studio Code'da:

  1. Görünüm -> Komut Paleti'ni seçin ve Q#: Azure Quantum QIR target profilini ayarlayın yazın. Enter'a basın.
  2. Sınırsız'ı seçin.

Python'da yöntemini kullanarak qsharp.init profili ayarlayabilirsiniztarget.

qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted) 

Profil için QIR Basetarget uygulama oluşturma ve çalıştırma

QIR Basetarget 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, bu işlem üzerinde QIR Basetargetçalıştırılamaz:

    operation FlipQubitOnZero() : Unit {
        use q = Qubit();
        if M(q) == Zero {
            X(q);
        }
    }

Bu işlemi üzerinde çalıştırmayı denerseniz, hesaplama akışını bir QIR Basetargetdeyimle if denetlemek için bir ölçüm sonucu (M(q) == Zero) kullanarak karşılaştırma yaptığı için işlem başarısız olur. Aynı durum ve deyimleri gibi elif her tür koşullu dallanma için de geçerlidir.else

Profili yapılandırma QIR Basetarget

Visual Studio Code'da:

  1. Görünüm -> Komut Paleti'ni seçin ve Q#: Azure Quantum QIR target profilini ayarlayın yazın. Enter'a basın.
  2. QIR tabanı'nı seçin.

Python'da yöntemini kullanarak qsharp.init profili ayarlayabilirsiniztarget.

qsharp.init(target_profile=qsharp.TargetProfile.Base) 

Desteklenen targets

Şu anda bunlar QIR Basetargets Azure Quantum için kullanılabilir:

Profil için QIR Adaptive RI uygulama oluşturma ve çalıştırma targets

QIR Adaptive RI profili targets , bazı kısıtlamalarla çok çeşitli Q# uygulamaları çalıştırabilir. Bu profil türü, profiller üzerinde QIR Base bir gelişme olduğunu, ancak yine de bazı sınırlamalara tabi olduğunu varsayalım.

QIR Adaptive RI profili targets ölçüm tabanlı koşullu işlemlere ve orta devre ölçümlerine olanak sağlar. Bu, kubitlerin bir kuantum programının son deyimi dışında bir noktada seçmeli olarak ölçülebileceği ve ölçümün çıkışının diğer işlemlerde kullanılabilmesi anlamına gelir. 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 durumunda kalır.

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, bir QIR Adaptive RItargetiçinde aşağıdaki Q# koduna izin verilir:

operation MeasureQubit(q : Qubit) : Result { 
    return M(q); 
}

operation SetToZero(q : Qubit) : Unit {
     if MeasureQubit(q) == One { X(q); }
}

Profili yapılandırma QIR Adaptive RItarget

Visual Studio Code'da:

  1. Görünüm -> Komut Paleti'ni seçin ve Q#: Azure Quantum QIR target profilini ayarlayın yazın. Enter'a basın.
  2. QIR Adaptive RI öğesini seçin.

Python'da yöntemini kullanarak qsharp.init profili ayarlayabilirsiniztarget.

qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI) 

Desteklenen targets

Şu anda bunlar QIR Adaptive RItargets Azure Quantum için kullanılabilir: