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.qs
iç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.
Q# İçeri aktardığınız veya bir
%%qsharp
hücreye yazdığınız kodu çalıştırın.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()")
Derlenen sonuç
MyProgram
daha sonra şu işlevle Azure Quantum'atarget.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.Workspace
qsharp.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ışı |
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