Q# Migrace kódu do moderní sady QDK
Sada Azure Quantum Development Kit (Moderní sada QDK) vydaná v lednu 2024 je výchozí Q# vývojová sada používaná ve Visual Studio Code a na portálu Azure Quantum. Další informace o nových funkcích a vylepšeních najdete v tématu Co je nového v moderní sadě QDK.
Pokud máte existující programy napsané pro sadu Microsoft Quantum Development Kit (Classic QDK), bude potřeba pro nová rozhraní API, procesy a nástroje upravit aspoň některé prvky. Kromě toho došlo k Q# vylepšení syntaxe jazyka, aby bylo kódování jednodušší a flexibilnější.
Tento článek vás provede nejběžnějšími scénáři, jak zprovoznění kódu v nové sadě QDK. S
Vyřazení sady Visual Studio jako vývojové platformy
Moderní sada QDK odebere podporu sady Visual Studio a přidružených kvantových knihoven .NET. Pokud máte existující projekty sady Visual Studio, důrazně doporučujeme je migrovat na moderní sadu QDK podle pokynů v tomto článku. Pokud chcete pro své projekty dál používat sadu Classic QDK, přečtěte si téma Pokračování práce v klasické sadě QDK.
Import modulů ze Q# souboru
U programů v Pythonu, které k importu Q# funkcí a operací jako modulů používají Q# soubory (*.qs), se syntaxe importu změnila.
Pokud chcete v klasické sadě QDK importovat a spustit Random()
operaci ze souboru source.qs
:
namespace Sample {
operation Random() : Result {
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result
}
}
Použili byste standardní syntaxi importu Pythonu:
from Sample import Random
print(Random.simulate())
s požadavkem, aby source.qs
a váš program v Pythonu byly ve stejné složce.
Pokud chcete importovat stejnou operaci s moderní sadou QDK, definujete Q# projekt, který vám umožní uspořádat zdrojové soubory a knihovny efektivnějším a logičtějším způsobem. Podrobný postup definování Q# projektu najdete v tématu Práce s Q# projekty.
Jakmile nastavíte složky projektu a vytvoříte jednoduchý soubor manifestu, použijte qsharp.init
příkaz k nasměrování na kořen projektu, qsharp.eval
přístup ke zdrojovým souborům a import oboru <názvů>.<>operation_name.
qsharp.init(project_root = '/MyProjectFolder')
print(qsharp.eval("Sample.Random()"))
Pokud importovaná operace nebo funkce přebírá vstupní hodnoty, dají se předat i tyto:
print(qsharp.eval("Sample.Random(4)"))
Spuštění programu v místním simulátoru
Většina simulátorů v paměti z klasické sady QDK je zastaralá a řídký simulátor zůstane ve VS Code a na portálu Azure Quantum jako výchozí místní simulátor.
Zastaralé simulátory:
- Simulátor celkového stavu
- Simulátor šumu
- Simulátor trasování
- Simulátor Toffoli
Spuštění výchozího řídké simulátoru:
Scenario | Metoda |
---|---|
V programu v editoru Q# VS Code | Vyberte Spustit soubor.Q# |
V buňce poznámkového bloku Pythonu | result=qsharp.eval("EntryPointOperation()") nebo result=qsharp.run("EntryPointOperation()", shots=##) |
V buňce %%qsharp poznámkového bloku |
EntryPointOperation() |
Vynucené vydání qubitu
Moderní sada QDK vynucuje požadavek, aby qubity byly v pozemním stavu nebo |0⟩ před uvolněním na konci rozsahu. To je proto, aby se zabránilo možnému opakovanému použití qubitů v neočekávaném stavu při spouštění programů na kvantovém hardwaru.
Například následující kód aktivuje chybu za běhu:
operation MyOperation() : Result {
use q = Qubit();
X(q);
return M(q);
}
a je potřeba ho upravit tak, aby qubit před vrácením měření resetoval:
operation MyOperation() : Result {
use q = Qubit();
X(q);
let r = M(q);
Reset(q);
return r;
}
nebo použít operaci, která qubit resetuje v rámci měření:
open Microsoft.Quantum.Measurement;
operation MyOperation() : Result {
use q = Qubit();
X(q);
return MResetZ(q);
}
Konfigurace základního profilu
Na rozdíl od místního simulátoru hardwarové cíle Azure Quantum zatím nepodporují všechny možnosti potřebné ke spuštění všech Q# programů. Pokud odesíláte úlohu do Azure Quantum, musíte před kompilací programu nastavit cílový profil, abyste mohli zjistit Q# , které funkce váš cílový hardware podporuje. V současné době je možné do Azure Quantum odesílat pouze programy vyhovující základnímu profilu QIR. Všimněte si, že ke spouštění kódu v místním simulátoru je možné použít jakoukoli konfiguraci profilu.
VS Code
VS Code zobrazí režim profilu na stavovém řádku v dolní části pro Q# soubory QIR: Base nebo Unrestricted. Neomezený režim je nejužitečnější pro spuštění kódu na simulátoru. Pokud odesíláte úlohu do Azure Quantum a zobrazí se upozornění, že pro základní profil není nastavený program, vyberte na stavovém řádku Neomezené a jako profil vyberte QIR: Base .
Jupyter Notebook and Python
K nastavení základního profilu použijte qsharp.init
funkci :
qsharp.init(target_profile=qsharp.TargetProfile.Base)
Poznámka
- Funkce
qsharp.init
nahradí příkaz magic %azure.target-capability . - Pokud cílový profil resetujete, budete muset před kompilací znovu spustit Q# buňky nebo importy.
Kompilace programu pro Q# odeslání do Azure Quantum
S moderní sadou QDK je potřeba program před odesláním úlohy do Azure Quantum zkompilovat.
Poznámka
Podrobné scénáře odesílání úloh do Azure Quantum pomocí Q# programů, programů Pythonu nebo poznámkových bloků Jupyter Notebook najdete v tématu Odesílání úloh do Azure Quantum.
VS Code
Q# Programy v nástroji VS Code zkompilují program automaticky, když ve svém pracovním prostoru vyberete cíl poskytovatele a vyberete Odeslat aktuální Q# program. Pokud dojde k chybám kompilátoru, můžete soubor ladit stisknutím klávesy F5. Další informace najdete v tématu Odesílání úloh do Azure Quantum.
Jupyter Notebook and Python
V případě programů Jupyter Notebook a Python, které používají Workspace
třídu pro připojení k Azure Quantum, musíte program zkompilovat a pak ho odeslat do Azure Quantum s odesláním úlohy.
Q# Spusťte kód, který jste importovali nebo napsali
%%qsharp
do buňky.qsharp.compile
Použijte funkci a předejte Q# operaci nebo funkci, která se má použít jako vstupní bod. Například pro tento Q# program:operation MyOperation() : Result { use q = Qubit(); H(q); let r = M(q); Reset(q); return r; }
operaci byste předali
MyOperation()
jako:MyProgram = qsharp.compile("MyOperation()")
Zkompilovaný výsledek
MyProgram
se pak předá do Azure Quantum starget.submit
funkcí :job = target.submit(MyProgram, "job name", ...)
Azure CLI
K připojení a odesílání Pythonu a Q# úloh do Azure Quantum můžete použít také Azure CLI. Pro tento scénář musíte zkompilovaný program uložit jako textový soubor. Podrobný postup najdete v tématu Odesílání úloh do Azure Quantum.
Připojení k Azure Quantum
U Q# programů ve VS Code se můžete připojit k pracovnímu prostoru Azure Quantum a odesílat úlohy v rámci nástroje VS Code.
U pythonových a Jupyter Notebook programů je azure.quantum.Workspace
výchozí metodou připojení třída , která nahrazuje zastaralé příkazy magic IQ#%azure
a qsharp.azure
modul . Příklady všech těchto příkazů najdete v tématu Odesílání úloh do Azure Quantum.
Zastaralé rozhraní API nebo příkazu Magic | Použití |
---|---|
%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(...) Neblokující vstupně-výstupní operace |
%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() |
Další zastaralé příkazy magic
Zastaralý příkaz magic | ||
---|---|---|
%check_kata | Zastaralé | |
%chemistry.broombridge | Zastaralé | |
%chemistry.encode | Zastaralé | |
%chemistry.fh.add_terms | Zastaralé | |
%chemistry.fh.load | Zastaralé | |
%chemistry.inputstate.load | Zastaralé | |
%config | Zastaralé | |
%debug | Zastaralé | |
%experimental.build_info | Zastaralé | |
%kata | Zastaralé | |
%lsmagic | Zastaralé | |
%lsopen | Zastaralé | |
%noise_model | Zastaralé | |
%package | Zastaralé | |
%performance | Zastaralé | |
%project | Zastaralé | |
%who | Zastaralé | |
%workspace | Zastaralé |
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro