kvantum számítógépek programozása Q#

ezen a héten az NDC fejlesztői konferencián vagyok Sydney-ben. Míg itt voltam, részt vettem egy workshopon a kvantum számítógépek Q# használatával történő programozásáról, amelyet John Azariah, a Q# programozási nyelv megalkotója vezetett.

John Azariah – val, a Q# nyelvalkotójával, egy kvantum számítógépes programozási nyelvvel. Ha fáradtnak tűnök, az azért van, mert ma reggel 3-ig írtam az első kvantumprogramomat Q# – ban.

a Q# egy nemrégiben kiadott Microsoft nyelv, amelyet kifejezetten a kvantumszámítógép-műveletek klasszikus számítógépről történő programozására fejlesztettek ki. Mac, Windows és Linux rendszeren támogatott.

ami annyira izgalmas a Q# – ban, hogy a kvantumszámítás absztrakciója egy új szemantikai szinten. Komplex ötleteket tömören fejezhet ki (gondoljon a C versus Assembly nyelvre). A szemantikai absztrakció új szintjei új paradigmák megjelenését teszik lehetővé.

a Q# azonban nem egyszerűen az absztrakció új szintje egy korábbi, ismerős szint felett. A Q# egy szemantikai absztrakció egy forradalmian új hardver felett, amelyet fizikailag még mindig megvalósítanak — egy kvantumszámítógép.

Q# – ban olyan dolgokat fejezhet ki, amelyeket klasszikus számítógépes nyelven egyszerűen nem tud kifejezni.

a Q# valójában inkább hasonlít a kvantum számítógépek assembly nyelvéhez, a benne foglalt primitívek szempontjából. Alapvetően kvantum számítógépekkel vagyunk, ahol a 40-es évek végén / az 50-es évek elején voltunk a klasszikus számítógépekkel.

Q# programozási modell

a Q# programozási modellje a kvantumszámítógépet koprocesszorként kezeli. Hasonló a GPU — val való munkához-a számítógép videokártyájának grafikus feldolgozó egységéhez. A GPU egy speciális processzor a sokszögek ropogására és az árnyékolás kiszámítására. Kiderült, hogy a GPU-k szintén jók a Bitcoin bányászathoz szükséges számcsörömpöléshez, ezért az emberek erre használják őket. A GPU programozásához összeállítja a GPU utasításait egy tartományspecifikus nyelv használatával, majd elküldi azokat a számítógép fő CPU-járól a GPU-ra végrehajtás céljából.

a Q# segítségével a kvantumműveleteket a tartományspecifikus Q# nyelven írja, amely egy hontalan, funkcionális nyelv, majd elküldi őket a kvantumszámítógépre egy klasszikus CPU-n futó C# – ban írt programból, ahol a kvantum számítógép esetleges kimenetét is megkapja.

példa Q# Kód

a műhely után írtam egy Q# programot, amely egy egyszerű kvantum viselkedést mutat be, amely különbözik a klasszikus számítógép viselkedésétől.

a HGate program bemutatja a híres kettős rés kísérlet speciális esetét, ahol a rendszer közbenső állapotának megfigyelése befolyásolja a rendszer viselkedését.

“Isten nem játszik kockát…” — Albert Einstein

ahhoz, hogy megértsük a viselkedés jelenik meg ez a program: képzeljük el, hogy egy érmét, és kezdve heads up, majd essek meg. 50% az esélye, hogy fej vagy írás következik. Ellenőrizze, mi az, majd fordítsa meg újra. 50% esély van arra, hogy újra fej vagy írás jön.

elég egyenesen előre. Itt van a kvantum furcsaság. A kvantum birodalomban, ha az érme kvantumhatásoknak kitett részecske,akkor megfordítja egy Hadamard-kapunak nevezett kvantum logikai áramkörön keresztül. Ha megnézed az első flip után, akkor 50/50 fej/farok lesz a flip-en és a második flip-en. Ha azonban az első flip után nem nézi meg, akkor a második flip fejjel jön fel — minden egyes alkalommal.

Albert Einstein, aki először fedezte fel a kvantummechanikát, nem tudta elhinni, hogy az univerzum így működhet. És mégis így van, mert különben nem lennének iPhone-ok és más modern elektronikai eszközök, amelyek rendkívül kis méretekben működnek, és kihasználnak egy sor ilyen kvantum viselkedést. Einstein élete hátralévő részét azzal töltötte, hogy sikertelenül próbálta bizonyítani, hogy a felfedezett kvantum furcsaság nem egy dolog. És ezért nem ő érdemli meg. De igen, három tanulmányt publikált egyszerre — az egyik az atomok létezésének bizonyítéka volt, a második a relativitáselmélet, a harmadik pedig a fekete test sugárzásáról szólt, ami kvantummechanikai jelenség.

ha többet szeretne megtudni arról, hogy miért történik ez a kvantum viselkedés, olvassa el a README.md a példaprogram fájlja.

a Q # Kvantumművelet

íme egy példa a Q# – ban írt kvantumműveletre, amely a fent hivatkozott példaprogramból származik:

operation CoinFlip (count: Int) : (Int, Int)
{
body
{
mutable numOnes = 0;
mutable numZeros = 0; // Get a Qubit in Zero state
using (qubit = Qubit) { for (test in 1..count) {
// Set is an operation defined elsewhere
Set (Zero, qubit); // Send the qubit through a Hadamard quantum logic gate
H(qubit); // Measure the value of the q-bit
let state = M(qubit); if (state == Zero) {
set numZeros = numZeros + 1;
}
if (state == One) {
set numOnes = numOnes + 1;
}
}
ResetAll(qubit); // Reset the qubit
}
return (numZeros, numOnes);
}}

a Q# Nyelvtervezés

Q# az F# mint funkcionális nyelv inspirációjára támaszkodik (a fordító / elemző F# nyelven íródott), A C# szintaxisra, és néhány ötletet a Pythonból (nevezetesen for in).

ez egy állapot nélküli nyelv — nincs mód az állapot megtartására a kvantumműveletek között,és az állapot mérése, hogy egy művelet értékét visszaadja, a kvantumállapotot egyetlen valós állapotba hozza. Nincs változója, de állandó változhatatlanságok kötését használja.

a típusok Tuple alapúak, önkényes aritással. Nem curry részleges alkalmazási támogatással rendelkezik, Generikus és Functorokkal rendelkezik. A functorok lehetővé teszik a műveletek sorozatának kifejezését és indokolását.

a Q# fordító teljes programelemzést végezhet, és a kódon keresztül optimalizálhatja a műveleteket, mielőtt elküldi a műveleteket a kvantumszámítógépnek. Ez azért fontos, mert a költségek műveletek, különösen figyelembe véve a kis szelet időt, hogy qubit állapotban koherens a jelenlegi és valószínű (rövid távú) jövőbeli kvantum számítógépek.

Milyen Problémákat Oldhatnak Meg A Kvantumszámítógépek?

A Klasszikus Számítógépek olyan biteket használnak, amelyeknek két állapota lehet: egy vagy nulla. A kvantumszámítógép-biteknek vagy qubiteknek csak a két állapot egyike van, ha megnézzük őket, de a kvantumszámítógépen belül valószínűségi állapotuk lehet. Ezzel számos állapotot modellezhetnek-különösen a részecskék valószínűségi állapothullámformáit. Hogyan lehet ezzel hasznos számításokat végezni? Nos, jó a fizikai rendszerek modellezésére.

1911-ben kitaláltuk, hogyan készítsünk ammóniát. A nitrogént 5000 fokra kell melegíteni, és 50 atmoszférára kell összenyomni. Ezt az ammóniát puskaporhoz és műtrágyához használják, és ez a műtrágya lehetővé tette a 60-as évek Zöld forradalmát, amely lehetővé tette számunkra, hogy megduplázzuk a globális emberi populációt. A globális energiaköltségvetés 4% – át az ammónia előállítására fordítják.

a Nitrogenáz egy baktérium enzimje, amely parazita csomókban él a bab gyökerein. Amikor babot termeszt egy mezőn, ez az enzim rögzíti a nitrogént a légkörből a talajba, megtermékenyítve a talajt. Tehát a gazdák forgatják a növényeket-búzát, majd babot, majd búzát -, hogy a talaj termékeny maradjon.

ahhoz, hogy megértsük, hogyan lehet az ammóniát úgy előállítani, ahogy a baktériumok — szobahőmérsékleten H2O + n felhasználásával a légkörből — 170 elektron kölcsönhatásának megoldását igényli. A nitrogenáz két átmenetifémből áll, amelyek katalizátorként működnek: vasból és molibdénből. Ez azt jelenti, hogy az elektronok hullámformáinak modellezéséhez 21 CL-komplex számra van szükségünk. A Földön csak 21 — i-i-i atom van-tehát 1 000 000 földre lenne szükség, csak a probléma definíciójának tárolásához.

a kvantum számítógép 200 qubit képes modellezni, hogy sok állam.

ezzel a számítógéppel futtathatjuk a szimulációkat, hogy megértsük, hogyan kell csinálni, mint a baktériumok. További mérnöki munka lesz, amint megvan a megoldás arra, hogy valami olyat építsünk, amely képes erre — csakúgy, mint új gyógyszervegyületeket kell előállítani. És ha ez megtörténik, a mezőgazdasági termelés jelentősen magasabb lesz.

kvantumszámítógép — felépítés

egy kvantumszámítógépben a qubitnek két összetevője van-egy fizikai komponens, amely a kvantumállapotot tartja, és egy komponens, amely a fizikai komponensen műveleteket hajt végre.

egy qubit — legalábbis úgy, ahogy most közeledünk hozzá — 15 milliKelvin sebességgel működik. A folyékony hélium 4 Kelvin.

a kvantumszámítás modellje a klasszikus Számítástechnika általánosítása. Ez matematikailag Lineáris algebra. Matematikailag a qubit egy vektor a nagy dimenziós lineáris tér (a Hilbert-tér).

ebben a térben nem lehet megfigyelni a qubitet, de működtetheti azt, ha megkéri a rendszert, hogy rotációs fordításokat alkalmazzon rá.

a jelenlegi kvantumszámítógépek képesek fizikai qubit létrehozására 10^-6 másodpercig. Ezen időszak után bomlik, ezért hibajavításra van szükség.

a Kvantumszámításnak két modellje van:

  • a kapu modell — a kvantumállapot időbeli alakulása mátrixszorzással. Ezt a modellt használja a Q#.
  • kvantum hőkezelés-a legalacsonyabb energiaállapot megtalálása, amely megoldja a problémát. A DWave számítógép ezt a módszert használja.

a klasszikus számítástechnika a kvantumszámítás speciális esete. Tehát a kvantumszámítás fejleményei és felfedezései betekintést nyújtanak a klasszikus számítástechnikába.

kvantumszámítási hatások

a kvantumszámítás valószínű jövőbeli hatásának főcíme képes megtörni a jelenlegi titkosítási sémákat. Addig azonban valószínűleg sokkal hatásosabb változások lesznek.

a modern kriptográfia feltöréséhez 5000 qubites kvantumszámítógépekre lesz szükség.

a Microsoft már bevezeti a kvantum-számítástechnika utáni rezisztens titkosítást-beleértve a rácsalapú kriptográfiát is. A Modern kriptográfia a nagy prímek faktoringján alapul-klasszikusan drága megoldani, de triviális a kvantumszámítógépek számára.

a NISQC “zajos köztes skála kvantumszámítás”. Vannak, akik olyan számítógépeket fejlesztenek, amelyek nagyszámú zajos qubit-et tartalmaznak. Az MS nem ezt csinálja. Dolgoznak az első “topológiai qubit” megszerzésén — egy qubit, amely ellenáll a dekoherenciának. Számítási szempontból relevánsabb lesz. Jó úton haladnak, hogy idén megkapják. John reméli,hogy életében 1000-1 000 000 qubitot fogunk látni egy ostyán 15millikelvinnél.

amint a kvantum számítógépek online állapotba kerülnek, az egyik dolog, amit segíteni fognak nekünk, az a fizikai rendszerek modellezése, amelyekkel hatékonyabb kvantumszámítógépeket készíthetünk.

az olyan problémák megoldása, mint a Nitrogenáz, vagy az, hogy a klorofill hogyan veszi fel a CO2 — t a légkörből, és hogyan alakítja szénhidrátokká — megfordítva az üvegházhatást, és lehetővé téve számunkra, hogy a levegőből (és a napfényből) ételt hozzunk létre — közelebb vannak a láthatáron, és hatalmas hatással lesz-csakúgy, mint a kvantumszámítógépek szupravezetők kifejlesztésére.

és olyan problémákat és lehetőségeket is feloldanak, amelyeket jelenleg még nem is fontolgatunk. Einstein nem az iPhone-ra vagy az internetre gondolt, amikor közzétette a fekete test sugárzásáról szóló cikkét.

jelenleg a jövőben élünk.

néhány nagyszerű könyv számára, amelyek sok matematika nélkül vezetik be a kvantumfizikát, ajánlom:

“Schrödinger macskáját keresve: Kvantumfizika és valóság ” – a kvantummechanika fejlődésének népszerű története, a gondolkodás és a felfedezés evolúciójának nyomon követése a 20.században.

“a valóság szövete-a párhuzamos univerzumok tudománya és következményei” — David Deutsch, a kvantumszámítás úttörőjének könyve. Ez a könyv a tudományfilozófiával (konkrétan annak ismeretelméletével) kezdődik, és a kvantummechanika néhány filozófiai vonatkozását vizsgálja.

ha azt szeretnénk, hogy rögtön bele, nézd meg a “Quantum Computing for computer Scientists”. Ezt a könyvet ajánlja John.

ebben a térben van technika állása — például Quipper, amelyet Haskellben valósítanak meg. A Q# azonban egy kvantum számítástechnikai SDK-ban érkezik, amely tartalmaz egy 3 qubit helyi szimulátort és hozzáférést egy 40 qubit felhőalapú szimulátorhoz. Az IBM rendelkezik OpenQASM-egy quantum assembly programozási nyelvvel, amely karcszerű vizuális szerkesztővel és felhőalapú (valós) kvantum számítógépes platformmal rendelkezik. A Q# egy magasabb szintű nyelv típusokkal és vezérlési folyamattal.



+