QIR-profiltípusok target az Azure Quantumban
Ez a cikk az Azure Quantum kvantum-számítástechnikai szolgáltatóiban elérhető QIR-profiltípusok target különböző típusait ismerteti. A QIR-profiltípusok target a Q#-programokkal használható target kvantumeszközök képességeinek meghatározására szolgálnak.
Target profilok és korlátaik
A kvantumeszközök továbbra is egy új technológia, és nem mindegyik képes az összes Q#-kód futtatására. Ezért figyelembe kell vennie néhány korlátozást a különböző targetsprogramok fejlesztésekor. Az Azure Quantum és a QDK jelenleg három különböző target profilt kezel:
- Unrestricted: Ez a profil bármilyen QIR-programot futtathat a szimulátorok memóriájának korlátain belül, vagy a fizikai kvantumszámítógépek qubitjeinek számán belül.
- QIR base: Ez a profil bármely olyan Q#-programot futtathat, amely nem igényli a qubitmérések eredményeinek használatát a programfolyamat szabályozásához. Az ilyen típusú QPU-kra célzott Q#-programokban a típusértékek
Result
nem támogatják az egyenlőség összehasonlítását. - QIR Adaptive RI: Ez a profil korlátozott mértékben képes a qubitmérések eredményeinek felhasználására a programfolyamat szabályozására. Az ilyen típusú QPU-kra célzott Q#-programokban összehasonlíthatja a típusértékeket
Result
a műveleti utasításokban szereplőif
feltételek részeként, lehetővé téve a középső áramkörök mérését.
Alkalmazások létrehozása és futtatása profilhoz Unrestrictedtarget
Unrestrictedtarget a profilok bármilyen programot futtathatnak, ami azt jelenti, hogy q#-programokat is írhat funkciókorlátozások nélkül. Az Azure Quantum nem rendelkezik target ezzel a profillal. A QDK által biztosított szimulátorokon azonban Q#-programokat futtathat Unrestricted .
Profil konfigurálása Unrestrictedtarget
A Visual Studio Code-ban:
- Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a Q#: Az Azure Quantum QIR-profil targetbeállítása. Nyomja le az Enter billentyűt.
- Válassza a Korlátlan lehetőséget.
A Pythonban a módszerrel állíthatja be a target profilt qsharp.init
.
qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted)
Alkalmazások létrehozása és futtatása profilhoz QIR Basetarget
QIR Basetarget a profilok számos Q#-alkalmazást futtathatnak, azzal a korlátozással, hogy qubitmérések eredményei nem használhatók a programfolyamat szabályozásához. Pontosabban a típusértékek Result
nem támogatják az egyenlőség összehasonlítását.
Ez a művelet például nem futtatható QIR Basetarget:
operation FlipQubitOnZero() : Unit {
use q = Qubit();
if M(q) == Zero {
X(q);
}
}
Ha egy adott műveleten QIR Basetargetpróbálja futtatni a műveletet, a művelet sikertelen lesz, mert egy mérési eredmény (M(q) == Zero
) használatával végez összehasonlítást a számítási folyamat utasítással történő if
vezérléséhez. Ugyanez vonatkozik a feltételes elágaztatás minden típusára, például elif
és else
utasításokra is.
Profil konfigurálása QIR Basetarget
A Visual Studio Code-ban:
- Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a Q#: Az Azure Quantum QIR-profil targetbeállítása. Nyomja le az Enter billentyűt.
- Válassza ki a QIR-bázist.
A Pythonban a módszerrel állíthatja be a target profilt qsharp.init
.
qsharp.init(target_profile=qsharp.TargetProfile.Base)
Támogatott targets
Jelenleg ezek QIR Basetargets érhetők el az Azure Quantumhoz:
Szolgáltató: IonQ
- IonQ-szimulátor (
ionq.simulator
) - IonQ QPU (
ionq.qpu.*
)
- IonQ-szimulátor (
Szolgáltató: Rigetti
- Rigetti szimulátor (
rigetti.sim.*
) - Rigetti QPU (
rigetti.qpu.*
)
- Rigetti szimulátor (
Alkalmazások létrehozása és futtatása profilhoz QIR Adaptive RItargets
QIR Adaptive RI A profil targets számos Q#-alkalmazást futtathat, néhány korlátozással. Ez a profiltípus javulást feltételez a profilokkal szemben QIR Base , de továbbra is bizonyos korlátozások vonatkoznak rá.
QIR Adaptive RI a profil targets lehetővé teszi a mérésen alapuló feltételes műveleteket és a középső áramköri méréseket, ami azt jelenti, hogy a qubitek szelektíven mérhetők a kvantumprogram végső utasításától eltérő ponton, és a mérés kimenete más műveletekben is használható. A középkörök mérése lehetővé teszi több mérést a kvantumprogram bármely pontján. A mért qubitek kvantumadatai klasszikus állapotba (nulla vagy egy) összecsukhatók, de a nem mért qubitek a kvantumállapotukban maradnak.
Q#-ban qubit mérésekor a függvény egy típusértéket Result
ad vissza. Ha ezt az eredményt feltételes utasításban szeretné használni, közvetlenül össze kell hasonlítani a feltételes utasításban. A megfelelő feltételes blokkok nem tartalmazhatnak return
és set
nem tartalmazhatnak utasításokat.
Például a következő Q#-kód engedélyezve lesz a QIR Adaptive RItargetkövetkezőben:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); }
}
Profil konfigurálása QIR Adaptive RItarget
A Visual Studio Code-ban:
- Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a Q#: Az Azure Quantum QIR-profil targetbeállítása. Nyomja le az Enter billentyűt.
- Válassza ki QIR Adaptive RI.
A Pythonban a módszerrel állíthatja be a target profilt qsharp.init
.
qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI)
Támogatott targets
Jelenleg ezek QIR Adaptive RItargets érhetők el az Azure Quantumhoz:
- Szolgáltató: Quantinuum
- Quantinuum Emulators (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - Quantinuum QPU-k (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Quantinuum Emulators (