Azure Quantum QIR QDK içindeki hedef profilleri

Kuantum bilişimi hala gelişmekte olan bir teknolojidir. Tüm kuantum donanımları tüm kuantum programlarını çalıştıramayabilir. Örneğin, kubit ölçüm sonuçlarına göre koşullu dallara sahip programları çalıştırmak için gereken orta devre ölçümlerini yalnızca belirli donanımlar gerçekleştirebilir.

üzerinde çalıştırılacak bir program gönderdiğinizde Azure Quantum, programınız kuantum ara gösterimi (QIR) biçimine dönüştürülür. QIR programınızın üzerinde çalıştığı programlama diline veya kuantum donanımının türüne bağlı değildir. Microsoft Quantum Development Kit (QDK), farklı donanım özellikleri için çeşitli QIR hedef profilleri destekler.

hakkında QIRdaha fazla bilgi için bkz . Kuantum ara gösterimi.

Hedef profillere genel bakış

Azure Quantum ve QDK, birkaç QIR hedef profilini destekler. Seçtiğiniz hedef profilin türü, programınızın hangi programlama yapılarını kullanabileceğini belirler.

  • Kubit ölçüm sonuçlarına dayanan if ifadeleri içeren koşullu dallanmalar
  • Kubit ölçüm sonuçlarından hesaplanan kayan noktalı sayılarda aritmetik işlemler
  • Kubit ölçüm sonuçlarına dayalı sabit ve ilişkisiz döngüler

Aşağıdaki tabloda, QDK içindeki tüm QIR hedef profilleri ve bu hedef profillerin desteklediği programlama yapıları, en kısıtlayıcıdan en az kısıtlayıcıya doğru listelenmektedir.

QIR hedef profil Koşullu dallar Kayan nokta işlemleri Loops
Base
Adaptive RI
Adaptive RIF
Adaptive
Unrestricted

Hedef profillerini QDK içinde ayarlayın

Simülatörlerde veya QDK hedefte Azure Quantum bir program çalıştırmak için bir QIR hedef profil ayarlamanız gerekir. Bir hedef profili el ile ayarlamazsanız, QDK seçilen hedef için uygun profili otomatik olarak ayarlamaya çalışır.

hizmette Azure Quantum çalıştırılacak programları gönderirken, QDK seçilen yürütme hedefi için uygun profili otomatik olarak seçmeye çalışır.

Base QIR profil

Temel QIR hedef profili en kısıtlayıcı profildir. Dallar ve döngüler gibi klasik programlama yapılarını kullanmayan daha basit programlar için temel profili kullanın. Kuantum donanım hedefiniz orta devre ölçümleri gerçekleştiremiyorsa büyük olasılıkla temel profili kullanmanız gerekir.

Aşağıdaki Azure Quantum hedefler, temel QIR profili kullanan programları çalıştırabilir.

Provider Simülatör Kuantum İşlem Birimi (QPU)
IonQ ionq.simulator ionq.qpu.*
Rigetti rigetti.sim.* rigetti.qpu.*

Bu Azure Quantum sağlayıcılar hakkında daha fazla bilgi edinmek için bkz. IonQ sağlayıcısı ve Rigetti sağlayıcısı.

Temel profili ayarlama

Visual Studio Code (VS Code) uzantısında QIR temel QDK hedef profili ayarlamak için aşağıdaki seçeneklerden birini seçin.

  • Bir Q# projesi ayarlarsanız projenizin qsharp.json dosyasına aşağıdaki komutu ekleyin.

    {
      "targetProfile": "base"
    }
    
  • Q# projesinin parçası olmayan bir .qs dosyada çalışıyorsanız, hedef profili doğrudan Q# kodunuzda ayarlayın. Bunu yapmak için, programınızdaki giriş noktası işleminden önceki satıra ekleyin @EntryPoint(Base) .

    @EntryPoint(Base)
    operation Main() : Unit {
    
    ...
    
    }
    

Python kitaplığında QDK temel hedef profili ayarlamak için aşağıdaki kodu çalıştırın.

from qdk import init, TargetProfile

init(target_profile=TargetProfile.Base) 

Temel profilli Q# programlarında sınırlamalar

Temel hedef profili çok çeşitli Q# programları çalıştırabilir. Temel kısıtlama, Q# programlarının ölçüm işlemlerinden tür değerleriyle Result mantıksal karşılaştırmalar gerçekleştirememeleridir.

Örneğin, program ölçüm sonucu kullanan bir FlipQubitOnZero deyim içerdiğinden, temel hedefte aşağıdaki if işlemi çalıştıramazsınız.

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

Adaptive RI QIR profil

Uyarlamalı RI hedef profili, temel profilden daha geniş bir program çeşitliliği çalıştırabilir, ancak bazı sınırlamaları vardır. Adaptive RI hedefleri, koşullu if deyimlerde orta devre ölçümleri kullanan programları destekler. Kuantum donanımınız orta devre ölçümleri gerçekleştirebiliyorsa ve programınız ölçüm sonuçlarına göre deyimler kullanıyorsa if , büyük olasılıkla uyarlamalı RI profilini kullanmanız gerekir.

Örneğin, aşağıdaki Q# programı uyarlamalı bir RI hedefinde çalıştırılabilir.

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

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

Aşağıdaki Azure Quantum hedefler, uyarlamalı RI hedef profilini kullanan programları çalıştırabilir.

Provider Simülatör Kuantum İşlem Birimi (QPU)
Quantinuum quantinuum.sim.h2-1e quantinuum.qpu.h2-1
Quantinuum quantinuum.sim.h2-2e quantinuum.qpu.h2-2

Azure Quantum içinde Quantinuum hakkında daha fazla bilgi için Quantinuum sağlayıcısı bölümüne bakın.

Uyarlamalı RI profilini ayarlama

VS Code uzantısında QIR uyarlamalı RI QDK hedef profilini ayarlamak için aşağıdaki seçeneklerden birini belirleyin.

  • Bir Q# projesi ayarlarsanız projenizin qsharp.json dosyasına aşağıdaki komutu ekleyin:

    {
      "targetProfile": "adaptive_ri"
    }
    
  • Q# projesinin parçası olmayan bir .qs dosyada çalışıyorsanız, hedef profili doğrudan Q# kodunuzda ayarlayın. Bunu yapmak için, programınızdaki giriş noktası işleminden önceki satıra ekleyin @EntryPoint(Adaptive_RI) .

    @EntryPoint(Adaptive_RI)
    operation Main() : Unit {
    
    ...
    
    }
    

Python kitaplığında QDK uyarlamalı RI hedef profilini ayarlamak için aşağıdaki kodu çalıştırın.

from qdk import init, TargetProfile

init(target_profile=TargetProfile.Adaptive_RI)

Adaptive RIF QIR profil

Uyarlamalı RIF hedef profili, uyarlamalı RI profiliyle aynı özelliklere sahiptir, ancak kayan nokta aritmetik işlemleri içeren programları da destekler. Kuantum donanımınız orta devre ölçümleri gerçekleştirebiliyorsa ve programınız ölçüm sonuçlarından hesaplanan deyimleri ve kayan nokta numaralarını kullanıyorsa if , büyük olasılıkla uyarlamalı RIF profilini kullanmanız gerekir.

Örneğin, aşağıdaki Q# programı uyarlamalı bir RIF hedefinde çalıştırılabilir.

@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;
}

Azure Quantum şu anda uyarlamalı RIF hedeflerine sahip değildir, ancak yerel QDK simülatörlerde uyarlamalı RIF hedefleri için programlar çalıştırabilirsiniz. içindeki QDKsimülatörler hakkında daha fazla bilgi için, içindeki kuantum simülatörlerine QDKgenel bakış bölümüne bakın.

Uyarlamalı RIF profilini ayarlama

VS Code uzantısında QIR uyarlamalı RIF QDK hedef profilini ayarlamak için aşağıdaki seçeneklerden birini belirleyin.

  • Bir Q# projesi ayarlarsanız projenizin qsharp.json dosyasına aşağıdaki komutu ekleyin:

    {
      "targetProfile": "adaptive_rif"
    }
    
  • Q# projesinin parçası olmayan bir .qs dosyada çalışıyorsanız, hedef profili doğrudan Q# kodunuzda ayarlayın. Bunu yapmak için, programınızdaki giriş noktası işleminden önceki satıra ekleyin @EntryPoint(Adaptive_RIF) .

    @EntryPoint(Adaptive_RIF)
    operation Main() : Unit {
    
    ...
    
    }
    

Python kitaplığında QDK uyarlamalı RIF hedef profilini ayarlamak için aşağıdaki kodu çalıştırın.

from qdk import init, TargetProfile

init(target_profile=TargetProfile.Adaptive_RIF) 

Adaptive QIR profil

Uyarlamalı hedef profili, uyarlamalı RIF profiliyle aynı özelliklere sahiptir, ancak ölçüm sonuçlarına göre döngü kullanan programları da destekler. Adaptive programlar, belirli sayıda yineleme ve başarıya kadar yineleme (RUS) döngüleri içeren döngüleri kullanabilir.

Azure Quantum şu anda uyarlamalı hedeflere sahip değildir, ancak yerel QDK simülatörlerde uyarlamalı hedefler için programlar çalıştırabilirsiniz. içindeki QDKsimülatörler hakkında daha fazla bilgi için, içindeki kuantum simülatörlerine QDKgenel bakış bölümüne bakın.

Uyarlamalı profili ayarlama

VS Code uzantısında QIR uyarlamalı QDK hedef profili ayarlamak için aşağıdaki seçeneklerden birini belirleyin.

  • Bir Q# projesi ayarlarsanız projenizin qsharp.json dosyasına aşağıdaki komutu ekleyin:

    {
      "targetProfile": "adaptive"
    }
    
  • Q# projesinin parçası olmayan bir .qs dosyada çalışıyorsanız, hedef profili doğrudan Q# kodunuzda ayarlayın. Bunu yapmak için, programınızdaki giriş noktası işleminden önceki satıra ekleyin @EntryPoint(Adaptive) .

    @EntryPoint(Adaptive)
    operation Main() : Unit {
    
    ...
    
    }
    

Python kitaplığında QDK uyarlamalı hedef profili ayarlamak için aşağıdaki kodu çalıştırın.

from qdk import init, TargetProfile

init(target_profile=TargetProfile.Adaptive) 

Unrestricted QIR profil

Sınırsız hedef profil tüm kuantum programlarını çalıştırabilir. Şu anda hiçbir kuantum hedefi kısıtlanmamış QIR desteği sunmaz, ancak kuantum geliştirme amacıyla QDK simülatörlerinde karmaşık programlar çalıştırmak için kısıtlanmamış profili kullanabilirsiniz.

Kısıtlanmamış profili ayarlama

VS Code uzantısında QIR kısıtlanmamış QDK hedef profili ayarlamak için aşağıdaki seçeneklerden birini belirleyin.

  • Bir Q# projesi ayarlarsanız projenizin qsharp.json dosyasına aşağıdaki komutu ekleyin:

    {
      "targetProfile": "unrestricted"
    }
    
  • Q# projesinin parçası olmayan bir .qs dosyada çalışıyorsanız, hedef profili doğrudan Q# kodunuzda ayarlayın. Bunu yapmak için, programınızdaki giriş noktası işleminden önceki satıra ekleyin @EntryPoint(Unrestricted) .

    @EntryPoint(Unrestricted)
    operation Main() : Unit {
    
    ...
    
    }
    

Python kitaplığında QDK kısıtlanmamış hedef profili ayarlamak için aşağıdaki kodu çalıştırın.

from qdk import init, TargetProfile

init(target_profile=TargetProfile.Unrestricted)