Célprofil-típusok az Azure Quantumban
Ez a cikk az Azure Quantum kvantum-számítástechnikai szolgáltatóiban elérhető különböző target profiltípusokat ismerteti. Jelenleg a terület korai fejlesztési fázisa miatt a kvantumeszközök bizonyos korlátozásokkal és követelményekkel rendelkeznek a rajtuk futó programokra vonatkozóan.
Kvantumfeldolgozó egységek (QPU): különböző profilok és azok korlátai
A kvantumfeldolgozó egység (QPU) egy fizikai vagy szimulált processzor, amely számos összekapcsolt qubitet tartalmaz, amelyek kvantum-algoritmusok kiszámításához kezelhetők. Ez egy kvantumszámítógép vagy kvantumszimulátor központi összetevője.
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ő profilt kezel a QPU-khoz:
- Full: Ez a profil bármilyen Q#-programot futtathat a szimulátorok memóriakorlátja vagy a fizikai kvantumszámítógépek qubitjeinek számán belül.
- No Control Flow: Ez a profil bármely olyan Q#-programot futtathat, amely nem követeli meg a qubitmérések eredményeinek használatát a programfolyamat szabályozásához. Az ilyen típusú QPU-khoz készült Q#-programokban targeta típusértékek
Result
nem támogatják az egyenlőség összehasonlítását. - Basic Measurement Feedback: 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-khoz készült Q#-programokban targetösszehasonlíthatja a típusértékeket
Result
a műveleti utasításokban szereplőif
feltételek részeként, így lehetővé téve a közép áramköri mérést. Előfordulhat, hogy a megfelelő feltételes blokkok nem tartalmaznakreturn
vagyset
utasításokat.
Alkalmazások létrehozása és futtatása profilhoz Fulltargets
Full a profil targets bármilyen Q#-programot futtathat, ami azt jelenti, hogy a programokat funkciókorlátozások nélkül is megírhatja. Az Azure Quantum még nem biztosít ilyen target profilt.
Alkalmazások létrehozása és futtatása profilhoz No Control Flowtargets
No Control Flow a profil targets számos Q#-alkalmazást futtathat, azzal a korlátozással, hogy nem használhatják a qubitmérések eredményeit 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ó a következőn No Control Flowtarget:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if (desired != M(q)) {
X(q);
}
}
A művelet No Control Flowtarget futtatása sikertelen lesz, mert két eredmény (desired != M(q)
) összehasonlítását értékeli ki a számítási folyamat utasítással if
való vezérléséhez. Ez bármilyen típusú feltételes elágaztatásra, például elif
és else
utasításra alkalmazható.
Megjegyzés
Jelenleg nem küldhet be olyan kvantumprogramokat, amelyek a () értéken No Control Flowtargetsmért qubiteken hajtanak végre műveleteket, még akkor sem, ha nem használja az eredményeket a programfolyamat szabályozására. No Control Flowtargets Vagyis ne engedélyezze a közép áramköri méréseket.
A következő kód például nem futtatható a következőn No Control Flowtarget:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SampleMeasuredQubit(q : Qubit) : Result {
H(MeasureQubit(q));
return M(MeasureQubit(q));
}
Jelenleg ezek No Control Flowtargets érhetők el az Azure Quantum-hoz:
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 Basic Measurement Feedbacktargets
Basic Measurement Feedback a profil targets számos Q#-alkalmazást futtathat, és a megkötés szerint a típusértékeket Result
csak a műveletekben szereplő feltételek if
részeként lehet összehasonlítani. Ez a profiltípus javulást feltételez a profilokkal szemben No Control Flow , de bizonyos korlátozások továbbra is fennállnak.
Basic Measurement Feedback a profil targets lehetővé teszi a mérésalapú feltételes műveleteket és a közép á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épáramkör-mérés több mérést is lehetővé tesz a kvantumprogram bármely pontján. A mért qubitek kvantuminformációi klasszikus állapotba (nulla vagy egy) összecsukhatók, de a nem mért qubitek megőrzik a kvantumállapotukat.
A 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
vagy set
utasításokat.
Például a következő Q#-kód engedélyezve lesz a Basic Measurement Feedbacktargetkövetkezőben:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); )
}
Az áthelyezett logikai kiértékeléssel rendelkező kód azonban nem engedélyezett:
operation BeOne(q : Qubit) : Bool {
return M(q) == One;
}
operation SetToZeroUsingBeOne(q : Qubit) : Unit {
if BeOne(q) { X(q); }
}
A SetQubitState
benne lévő No Control Flow művelet mindaddig használhatótargetBasic Measurement Feedback, amíg nem tartalmaz utasítást return
vagy set
utasítást a if
utasításban. Ez bármilyen típusú feltételes elágaztatásra, például elif
és else
utasításra alkalmazható. A következő művelet például nem használható a következőben Basic Measurement Feedbacktarget:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if desired != M(q) {
X(q);
return M(q);
}
}
Jelenleg ezek Basic Measurement Feedbacktargets érhetők el az Azure Quantum-hoz:
- Szolgáltató: Kvantálás
- Quantinuum Emulators (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - Quantinuum QPU-k (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Quantinuum Emulators (
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: