Kód migrálása Q# a modern QDK-ba
A 2024 januárjában kiadott Azure Quantum Development Kit (Modern QDK) a Visual Studio Code-ban és az Azure Quantum Portalon használt alapértelmezett Q# fejlesztői készlet. Az új funkciókkal és fejlesztésekkel kapcsolatos további információkért lásd: A modern QDK újdonságai.
Ha már rendelkezik a Microsoft Quantum Development Kithez (klasszikus QDK) írt programokkal, legalább néhány elemet módosítani kell az új API-khoz, folyamatokhoz és eszközökhöz. Emellett a nyelvi szintaxis fejlesztései megkönnyítik és rugalmasabbá teszik a Q# kódolást.
Ez a cikk végigvezeti a leggyakoribb forgatókönyveken a kód új QDK-n való futtatásához. S
A Visual Studio fejlesztési platformként való elavultra helyezése
A Modern QDK eltávolítja a Visual Studio és a kapcsolódó .NET-kvantumkódtárak támogatását. Ha már rendelkezik Visual Studio-projektekkel, javasoljuk, hogy migrálja őket a modern QDK-ba a jelen cikk útmutatása alapján. Ha továbbra is használni szeretné a klasszikus QDK-t a projektjeihez, olvassa el a Folytatás a klasszikus QDK-ban című témakört.
Modulok importálása fájlból Q#
A függvényeket és műveleteket modulként importáló Q# (*.qs) fájlokat használó Q# Python-programok esetében az importálási szintaxis megváltozott.
A klasszikus QDK-ban importálja és futtassa a Random()
műveletet a fájlból source.qs
:
namespace Sample {
operation Random() : Result {
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result
}
}
szabványos Python-importálási szintaxist használna:
from Sample import Random
print(Random.simulate())
abban a követelményben, hogy source.qs
a Python-program ugyanabban a mappában legyen.
Ha ugyanazt a műveletet szeretné importálni a Modern QDK-val, definiáljon egy Q# projektet, amely lehetővé teszi a forrásfájlok és tárak hatékonyabb és logikusabb rendszerezését. A projekt meghatározásának Q# részletes lépéseit a Projektek használata Q#című témakörben találja.
Miután beállította a projektmappákat, és létrehozott egy egyszerű jegyzékfájlt, a használatával qsharp.init
mutasson a projekt gyökerére, és qsharp.eval
lépjen a forrásfájlokhoz, és importálja a <névteret>.<>operation_name.
qsharp.init(project_root = '/MyProjectFolder')
print(qsharp.eval("Sample.Random()"))
Ha az importált művelet vagy függvény bemeneti értékeket vesz fel, ezek is átadhatók:
print(qsharp.eval("Sample.Random(4)"))
A program futtatása a helyi szimulátoron
A klasszikus QDK memórián belüli szimulátorainak többsége elavult, így a ritka szimulátor lesz a VS Code és az Azure Quantum Portal alapértelmezett helyi szimulátora .
Elavult szimulátorok:
- Teljes körű funkciókkal rendelkező szimulátor
- Zajszimulátor
- Nyomkövetési szimulátor
- Toffoli-szimulátor
Az alapértelmezett ritka szimulátor futtatása:
Eset | Metódus |
---|---|
Q# Programban a VS Code-ban | Válassza a Fájl futtatása Q# lehetőséget |
Python-jegyzetfüzetcellában | result=qsharp.eval("EntryPointOperation()") vagy result=qsharp.run("EntryPointOperation()", shots=##) |
%%qsharp Jegyzetfüzetcellában |
EntryPointOperation() |
Kényszerített qubit-kiadás
A Modern QDK kikényszeríti azt a követelményt, hogy a qubitek a hatókörük végén való kiadásuk előtt a talajban vagy |0⟩ állapotban legyenek. Ennek célja, hogy megakadályozza, hogy a qubitek váratlan állapotban újra felhasználva legyenek a kvantumhardveren futó programok esetén.
Az alábbi kód például futásidejű hibát aktivál:
operation MyOperation() : Result {
use q = Qubit();
X(q);
return M(q);
}
és módosítani kell, hogy alaphelyzetbe állítsa a qubitet a mérés visszaadása előtt:
operation MyOperation() : Result {
use q = Qubit();
X(q);
let r = M(q);
Reset(q);
return r;
}
vagy használjon olyan műveletet, amely alaphelyzetbe állítja a qubitet a mérés részeként:
open Microsoft.Quantum.Measurement;
operation MyOperation() : Result {
use q = Qubit();
X(q);
return MResetZ(q);
}
Az Alapprofil konfigurálása
A helyi szimulátortól eltérően az Azure Quantum hardvercéljai még nem támogatják az összes Q# program futtatásához szükséges összes képességet. Ha feladatot küld az Azure Quantumnak, a program lefordítása előtt be kell állítania a célprofilt, hogy megállapítsa Q# , mely képességeket támogatja a célhardver. Jelenleg csak a QIR-alapprofilnak megfelelő programok küldhetők be az Azure Quantumba. Vegye figyelembe, hogy a kód helyi szimulátoron való futtatásához bármilyen profilkonfiguráció használható.
VS Code
A VS Code a profilmódot a fájlok alsó Q# állapotsorán jeleníti meg, a QIR: Base vagy a Unrestricted (QIR: Alapszintű vagy Nem korlátozott) állapotsoron. A korlátlan mód a leginkább hasznos a kód szimulátoron való futtatásához. Ha feladatot küld az Azure Quantumnak, és figyelmeztetést kap arról, hogy nincs beállítva program az Alapprofilhoz, válassza a Korlátlan lehetőséget az állapotsoron, és válassza a QIR: Base lehetőséget profilként.
A Jupyter Notebook és a Python
Az Alapprofil beállításához használja a következő függvényt qsharp.init
:
qsharp.init(target_profile=qsharp.TargetProfile.Base)
Megjegyzés
- A
qsharp.init
függvény lecseréli az %azure.target-capability magic parancsot. - Ha alaphelyzetbe állítja a célprofilt, a fordítás előtt újra kell futtatnia a Q# cellákat vagy az importálásokat.
Program összeállítása Q# az Azure Quantumba való küldéshez
A modern QDK-val a programot le kell fordítani, mielőtt elküldené a feladatot az Azure Quantumnak.
Megjegyzés
A feladatok Azure Quantumba programok, Python-programok vagy Jupyter-notebookok használatával Q# történő elküldésére vonatkozó részletes forgatókönyvekért lásd: Feladatok elküldése az Azure Quantumba.
VS Code
Q# A VS Code-ban a programok automatikusan lefordítják a programot, amikor kiválaszt egy szolgáltatói célt a munkaterületen, és kiválasztja az Aktuális Q# program elküldése lehetőséget. Fordítási hibák esetén az F5 billentyű lenyomásával hibakeresést végezhet a fájlban. További információ: Feladatok elküldése az Azure Quantumba.
A Jupyter Notebook és a Python
Olyan Jupyter Notebook- és Python-programok esetében, amelyek az osztályt használják az Workspace
Azure Quantumhoz való csatlakozáshoz, le kell fordítania a programot, majd el kell küldenie az Azure Quantumnak a feladatküldéssel.
Futtassa a Q# cellába
%%qsharp
importált vagy írt kódot.Használja a függvényt
qsharp.compile
, átadva a Q# műveletet vagy függvényt, amelyet belépési pontként szeretne használni. Ehhez a programhoz Q# például:operation MyOperation() : Result { use q = Qubit(); H(q); let r = M(q); Reset(q); return r; }
A műveletet a
MyOperation()
következőképpen adhatja át:MyProgram = qsharp.compile("MyOperation()")
A lefordított eredmény
MyProgram
ezután a következő függvénnyel lesz átadva az Azure Quantumnaktarget.submit
:job = target.submit(MyProgram, "job name", ...)
Azure CLI
Az Azure CLI-vel pythonokat és feladatokat is csatlakoztathat és Q# elküldhet az Azure Quantumnak. Ebben a forgatókönyvben a lefordított programot szövegfájlként kell mentenie. A lépésenkénti eljárásért lásd: Feladatok elküldése az Azure Quantumba.
Csatlakozás az Azure Quantumhoz
A VS Code-ban futó programok esetében Q# csatlakozhat az Azure Quantum-munkaterülethez, és elküldheti a feladatokat a VS Code-on belül.
Python- és Jupyter Notebook-programok esetében az alapértelmezett kapcsolati módszer az azure.quantum.Workspace
osztály, amely felváltja az elavult IQ#%azure
magic parancsokat és a modultqsharp.azure
. Példák ezekre a parancsokra: Feladatok elküldése az Azure Quantumba.
Elavult magic parancs vagy API | Használat |
---|---|
%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(...) Nem blokkoló I/O |
%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() |
Egyéb elavult varázsparancsok
Elavult varázsparancs | ||
---|---|---|
%check_kata | Elavult | |
%chemistry.broombridge | Elavult | |
%chemistry.encode | Elavult | |
%chemistry.fh.add_terms | Elavult | |
%chemistry.fh.load | Elavult | |
%chemistry.inputstate.load | Elavult | |
%config | Elavult | |
%hibakeresés | Elavult | |
%experimental.build_info | Elavult | |
%kata | Elavult | |
%lsmagic | Elavult | |
%lsopen | Elavult | |
%noise_model | Elavult | |
%package | Elavult | |
%teljesítmény | Elavult | |
%project | Elavult | |
%who | Elavult | |
%workspace | Elavult |
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: