Kodunuzu Q# Modern QDK'ye geçirme

Ocak 2024'te yayımlanan Azure Quantum Geliştirme Seti (Modern QDK), Visual Studio Code ve Azure Quantum portalında kullanılan varsayılan Q# geliştirme setidir. Yeni özellikler ve geliştirmeler hakkında daha fazla bilgi için bkz. Modern QDK'daki yenilikler.

Microsoft Quantum Geliştirme Seti (Klasik QDK) için yazılmış mevcut programlarınız varsa, yeni API'ler, işlemler ve araçlar için en azından bazı öğelerin değiştirilmesi gerekir. Ayrıca, kodlamayı daha kolay ve daha esnek hale getirmek için dil söz diziminde Q# geliştirmeler vardır.

Bu makale, kodunuzu yeni QDK üzerinde çalışır duruma getirmek için en yaygın senaryolarda size yol gösterir. S

Geliştirme platformu olarak Visual Studio'yu kullanımdan kaldırma

Modern QDK, Visual Studio ve ilişkili .NET kuantum kitaplıkları desteğini kaldırır. Mevcut Visual Studio projeleriniz varsa, bu makaledeki yönergeleri kullanarak bunları Modern QDK'ye geçirmeniz kesinlikle önerilir. Projelerinizde Klasik QDK kullanmaya devam etmek için bkz. Klasik QDK'de çalışmaya devam etme.

Bir dosyadan Q# modülleri içeri aktarma

İşlevleri ve işlemleri modül olarak içeri aktarmak Q# için (*.qs) dosyaları kullanan Q# Python programlarında içeri aktarma söz dizimi değişmiştir.

Klasik QDK'de, dosyasını source.qsiçeri aktarmak ve dosyasından Random() işlemi çalıştırmak için:

namespace Sample {
    operation Random() : Result {
        use q = Qubit();
        H(q);
        let result = M(q);
        Reset(q);
        return result
    }
}

standart Python içeri aktarma söz dizimlerini kullanırsınız:

from Sample import Random

print(Random.simulate())

ve Python programınızın aynı klasörde olması gereksinimini source.qs karşılar.

Modern QDK ile aynı işlemi içeri aktarmak için, kaynak dosyalarınızı ve kitaplıklarınızı daha verimli ve mantıksal bir şekilde düzenlemenizi sağlayan bir Q# proje tanımlarsınız. Proje tanımlamaya Q# yönelik ayrıntılı adımlar için bkz. Projelerle Q# çalışma.

Proje klasörlerinizi ayarladıktan ve basit bir bildirim dosyası oluşturduktan sonra, proje kökünüzü işaret etmek ve qsharp.eval kaynak dosyalara erişmek ve ad alanını> içeri aktarmak < için komutunu kullanınqsharp.init.<>operation_name.

qsharp.init(project_root = '/MyProjectFolder')
print(qsharp.eval("Sample.Random()"))

İçeri aktardığınız işlem veya işlev giriş değerlerini alıyorsa, bunlar da geçirilebilir:

print(qsharp.eval("Sample.Random(4)"))

Programınızı yerel simülatörde çalıştırma

Klasik QDK'deki bellek içi simülatörlerin çoğu kullanım dışı bırakıldı ve seyrek simülatörü VS Code'da ve Azure Quantum portalında varsayılan yerel simülatör olarak bıraktı.

Kullanım dışı simülatörler:

  • Tam durum simülatörü
  • Gürültü simülatörü
  • İzleme simülatörü
  • Toffoli simülatörü

Varsayılan seyrek simülatörü çalıştırmak için:

Senaryo Yöntem
VS Code'da bir Q# programda Dosyayı çalıştır'ı Q# seçin
Python not defteri hücresinde result=qsharp.eval("EntryPointOperation()")
veya
result=qsharp.run("EntryPointOperation()", shots=##)
Not defteri hücresinde %%qsharp EntryPointOperation()

Zorunlu kubit sürümü

Modern QDK, kubitlerin kapsamlarının sonunda serbest bırakılmadan önce yerde veya |0⟩ durumunda olmasını zorunlu kılmaktadır. Bu, kuantum donanımında programlar çalıştırılırken kubitlerin beklenmedik bir durumda yeniden kullanılmasını önlemektir.

Örneğin, aşağıdaki kod bir çalışma zamanı hatası tetikler:

operation MyOperation() : Result {
    use q = Qubit();
        X(q);
        return M(q);
}

ve ölçümü döndürmeden önce kubiti sıfırlamak için değiştirilmesi gerekir:

operation MyOperation() : Result {
    use q = Qubit();
        X(q);
        let r = M(q);
        Reset(q);
        return r;
}

veya ölçümün bir parçası olarak kubiti sıfırlayan bir işlem kullanın:

open Microsoft.Quantum.Measurement;
operation MyOperation() : Result {
    use q = Qubit();
    X(q);
    return MResetZ(q);
}

Temel profili yapılandırma

Yerel simülatörün aksine, Azure Quantum donanım hedefleri henüz tüm Q# programları çalıştırmak için gereken tüm özellikleri desteklemez. Azure Quantum'a bir iş gönderiyorsanız, programı derlemeden önce hedef donanımınızın hangi özellikleri desteklediğini söylemek Q# için hedef profilinizi ayarlamanız gerekir. Şu anda yalnızca QIR Temel Profili ile uyumlu programlar Azure Quantum'a gönderilebilir. Yerel simülatörde kod çalıştırmak için herhangi bir profil yapılandırmasının kullanılabileceğini unutmayın.

VS Code

VS Code, QIR: Base veya Unrestricted dosyaları için Q# en alttaki durum çubuğunda profil modunu görüntüler. Kısıtlanmamış mod en çok simülatörde kod çalıştırmak için kullanışlıdır. Azure Quantum'a bir iş gönderirken Temel profil için bir programın ayarlanmadığını belirten bir uyarı alırsanız, durum çubuğunda Kısıtlanmamış'ı seçin ve ardından profil olarak QIR: Temel'i seçin.

Jupyter Notebook ve Python

Temel profili ayarlamak için işlevini kullanın qsharp.init :

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

Not

  • qsharp.init işlevi %azure.target-capability magic komutunun yerini alır.
  • Hedef profili sıfırlarsanız, derlemeden önce hücrelerinizi veya içeri aktarmalarınızı Q# yeniden çalıştırmanız gerekir.

Azure Quantum'a göndermek için program Q# derleme

Modern QDK ile, işi Azure Quantum'a göndermeden önce programınızın derlenmesi gerekir.

Not

Programları, Python programlarını veya Jupyter Not Defterlerini kullanarak Q# Azure Quantum'a iş göndermeye yönelik adım adım senaryolar için bkz. Azure Quantum'a iş gönderme.

VS Code

Q# VS Code'daki programlar, çalışma alanınızda bir sağlayıcı hedefi seçip Geçerli Q# programı gönder'i seçtiğinizde programınızı otomatik olarak derler. Derleyici hataları varsa, F5 tuşuna basarak dosyada hata ayıklayabilirsiniz. Daha fazla bilgi için bkz. Azure Quantum'a iş gönderme.

Jupyter Notebook ve Python

Azure Quantum'a bağlanmak için sınıfını kullanan Workspace Jupyter Notebook ve Python programları için programınızı derlemeniz ve ardından iş gönderimi ile Azure Quantum'a göndermeniz gerekir.

  1. Q# İçeri aktardığınız veya bir %%qsharp hücreye yazdığınız kodu çalıştırın.

  2. qsharp.compile giriş noktası olarak kullanılacak işlemi veya işlevi geçirerek Q# işlevini kullanın. Örneğin, bu Q# program için:

    operation MyOperation() : Result {
        use q = Qubit();
            H(q);
            let r = M(q);
            Reset(q);
            return r;
    }
    

    işlemi şöyle geçirirsiniz MyOperation() :

    MyProgram = qsharp.compile("MyOperation()")
    
  3. Derlenen sonuç MyProgram daha sonra şu işlevle Azure Quantum'a target.submit geçirilir:

    job = target.submit(MyProgram, "job name", ...)
    

Azure CLI

Python ve işleri Azure Quantum'a bağlamak ve göndermek Q# için Azure CLI'yı da kullanabilirsiniz. Bu senaryo için derlenmiş programınızı metin dosyası olarak kaydetmeniz gerekir. Adım adım yordam için bkz. Azure Quantum'a iş gönderme.

Azure Quantum'a bağlanma

VS Code'daki programlar için Q# Azure Quantum çalışma alanınıza bağlanabilir ve vs Code'da iş gönderebilirsiniz.

Python ve Jupyter Notebook programları için varsayılan bağlantı yöntemi, kullanım dışı bırakılan IQ#%azure magic komutlarının ve modülünün yerini alan sınıfıdır azure.quantum.Workspaceqsharp.azure. Tüm bu komutların örnekleri için bkz. Azure Quantum'a iş gönderme.

Kullanım dışı sihirli komut veya API Kullanın
%azure.connect
qsharp.azure.connect()
wksp = azure.quantum.Workspace(
resource_id="",
location="")
%azure.target
qsharp.azure.target()
target = wksp.get_targets("<target_name>")
%azure.execute
qsharp.azure.execute()
job = target.submit(...) Engelleyici olmayan G/Ç
%azure.submit
qsharp.azure.submit()
job = target.submit(<QirInputData>, <jobName>, input_params={"count: <##>"})
%azure.jobs
qsharp.azure.jobs()
wksp.list_jobs()
%azure.output
qsharp.azure.output(
)
job.get_results()
%azure.status
qsharp.azure.status()
job.details.status
%azure.quotas wksp.get_quotas()

Diğer kullanım dışı sihirli komutlar

Kullanım dışı magic komutu    
%check_kata Kullanım Dışı
%chemistry.broombridge Kullanım Dışı
%chemistry.encode Kullanım Dışı
%chemistry.fh.add_terms Kullanım Dışı
%chemistry.fh.load Kullanım Dışı
%chemistry.inputstate.load Kullanım Dışı
%config Kullanım Dışı
%debug Kullanım Dışı
%experimental.build_info Kullanım Dışı
%kata Kullanım Dışı
%lsmagic Kullanım Dışı
%lsopen Kullanım Dışı
%noise_model Kullanım Dışı
%package Kullanım Dışı
%performance Kullanım Dışı
%project Kullanım Dışı
%who Kullanım Dışı
%workspace Kullanım Dışı