Programovanie

Jazyk Q #: Ako písať kvantový kód v balíku Visual Studio

Budúcnosť počítača nie je kremík; sme už na hranici Moorovho zákona, pokiaľ ide o výkon, ktorý môžeme získať od tradičných tranzistorov. Pracujeme tiež na oveľa väčších problémoch, najmä pokiaľ ide o kryptografiu a matematické modelovanie; problémy, ktoré si vyžadujú dni výpočtového času aj na tých najväčších superpočítačoch.

Odkiaľ teda pôjdeme? Spoločnosť Microsoft Research, rovnako ako Google a IBM, intenzívne investuje do kvantového výpočtu. Väčšina výskumu sa venovala základnej fyzike a spolupráci s univerzitami po celom svete na produkcii efektívnych nízkoteplotných prostredí a stabilných prostredí kvantovej výpočtovej techniky. Ale vytvorenie qubitu - pravdepodobnostného kvantového bitu, ktorý v podstate nahrádza nuly a jedničky tradičného bitu - je iba časťou príbehu. Potrebný je tiež spôsob programovania kvantového počítača a interpretácie pravdepodobnostného stavu qubits.

Konštrukcia kvantových počítačov

Architektúra kvantového programu je pomerne jednoduchá: Tradičný program získava hodnoty zo vstupu používateľa alebo z iného kódu. Potom tieto hodnoty odovzdá kvantovej aplikácii, ktorá nastaví qubity v kvantovom procesore pomocou jedného z mnohých kvantových algoritmov, pred odovzdaním výsledkov späť nadradenej aplikácii.

Je to proces veľmi podobný tomu, ktorý som použil pri svojej prvej programátorskej práci, keď som písal Fortranský kód analýzy konečných prvkov, ktorý na zvládnutie maticovej algebry používal vektorový procesor pripojený k superpočítaču. Vektorové knižnice, ktoré som používal na vytváranie a riešenie svojich 3D elektromagnetických modelov, fungovali na tomto špecializovanom hardvéri aj na matematickom koprocesore na pracovnej stanici pre stolné počítače, takže som si mohol svoj kód otestovať pred použitím drahého času superpočítača.

Spoločnosť Microsoft nedávno uviedla na trh svoju Quantum Development Kit postavenú na novom jazyku Q #. Je navrhnutý tak, aby používal známe konštrukcie na pomoc pri programovaní aplikácií, ktoré interagujú s qubitmi, vyžaduje podobný prístup ako práca s koprocesormi a poskytuje knižnice, ktoré zvládajú skutočné kvantové programovanie a interpretáciu, takže môžete písať kód, ktorý odovzdáva operácie qubit do jedného kvantového počítača Microsoft .

Preklenutie sveta klasických a kvantových výpočtov nie je ľahké, takže neočakávajte, že Q # bude ako Visual Basic. Je to skôr ako používať túto sadu Fortranských knižníc matematiky so rovnakým základným predpokladom: rozumieť teórii toho, čo robíte.

Jedným z prvkov súpravy Quantum Development Kit je kvantový výpočtový primer, ktorý skúma problémy spojené s používaním simulátorov a tiež poskytuje primer v lineárnej algebre. Ak sa chystáte programovať v Q #, je nevyhnutné pochopiť kľúčové koncepty lineárnej algebry okolo vektorov a matíc - najmä vlastné čísla a vlastné vektory, ktoré sú kľúčovými prvkami mnohých kvantových algoritmov.

Začíname s Q #

Vývojová súprava sa sťahuje ako rozšírenie Visual Studio, takže ju môžete používať so všetkými verziami hlavného vývojového prostredia spoločnosti Microsoft vrátane bezplatnej verzie Community. Inštalátor obsahuje jazyk Q #, miestny kvantový simulátor a knižnice, ktoré podporujú vkladanie modulov Q # do vášho kódu .Net. Po nainštalovaní sa môžete pripojiť k úložisku Q # Github spoločnosti Microsoft a naklonovať a stiahnuť ukážkový kód a ďalšie knižnice. Je to rýchly proces; stiahnutiu a spusteniu na primerane výkonnom vývojovom počítači trvá inštalátor niekoľko minút. Knižnice sú hostené v Nugetu, takže môžete rýchlo aktualizovať na najnovšie verzie.

S fungujúcim kvantovým počítačom, ktorý je ešte niekoľko rokov ďaleko, je sada Quantum Development Kit obmedzená na prácu so simulovanými kvantovými počítačmi. Výskumné systémy spoločnosti Microsoft ešte musia vytvoriť funkčný topologický qubit, ale výsledky boli sľubné. Kým teda nebudú publikované výsledky a Azure nezíska svoje kvantové koprocesory, budete obmedzený na experimentovanie s lokálnymi a cloudovými simulátormi. Pretože sú obmedzené na použitie tradičných programovacích techník, nebudú zvládať celú škálu zložitých matematických operácií, ktoré kvantové výpočty sľubujú. Ale dávajú tušiť, čo dokáže malý počet qubitov.

Veľa práce, ktorú musíte urobiť pri zostavovaní kvantového programu, je konštrukcia kvantového počítača mimo qubitových transformácií. Jazyk Q # spracuje tento proces za vás, pretože obsahuje výrazy pre mnoho štruktúr kvantovej brány a tiež bežné kvantové algoritmy. Samotný jazyk bude vývojárom .Net dôverný a jeho štruktúra bude niekde medzi C # a F #.

Základy kvantového programovania

Väčšinu programov Q # nájdete relatívne jednoduchých, pretože to, čo robíte, je nastavovanie polí qubits a aplikovanie matematických transformácií na ne. Aj keď je základný problém zložitý (alebo je pravdepodobné, že za použitia tradičných výpočtových zdrojov bude pravdepodobne trvať veľa výpočtového času), spoliehate sa na to, že prácu za vás zvládne kvantový počítač a jeho kvantové algoritmy znamenajú, že môžete použiť malý počet pripojených qubitov na vyriešenie vášho problému.

Je potrebné si uvedomiť, že niektoré kvantové jazyky, ako ten, ktorý používa DWave vo svojich kvantových počítačoch, sú navrhnuté tak, aby fungovali s kvantovým žíhaním, nie s hradlovým modelom používaným v kvantovom hardvéri spoločnosti Microsoft.

V čom sa jazyk Q # líši od známeho, je jeho podpora kvantových algoritmov. Začína sa to typmi: Q # je jazyk so silnými typmi, ktorý pridáva nové typy, ktoré reprezentujú qubits a skupiny qubits. Ďalším kľúčovým rozdielom je medzi operáciami a funkciami Q #. Operácie obsahujú kvantové operácie, zatiaľ čo funkcie sú čisto pre klasický kód, aj keď môžu pracovať s výsledkami kvantovej operácie.

Kvantové algoritmy a knižnice

Q # tiež obsahuje špecifické typy operácií, ktoré pracujú s kvantovými algoritmami, vrátane tých, ktoré počítajú adjunktné výsledky matice qubitov, a ďalšie, ktoré pomáhajú konštruovať qubitové obvody, spúšťané iba ak sú správne nastavené kontrolné qubity.

Je dôležité mať na pamäti, že tam, kde Q # používa Zero a One vo výsledkoch ako premenné na spracovanie qubitov, nie sú to isté ako binárne 0 a 1. Namiesto toho sú to reprezentácie vlastných čísel vektorov uložených v qubitoch.

Štandardné knižnice Q # používate na zostavovanie a konštruovanie svojich kvantových aplikácií. Patrí medzi ne sada kvantových primitívov, ktoré definujú brány, ktoré budujete zo svojich qubits, ako aj použitie kvantových operátorov a meranie výsledkov. Knižnice sú rozdelené do dvoch častí: predohra pre nastavenie vášho kvantového počítača a kánon pre obsluhu stroja. Je dôležité pochopiť rozdiely medzi týmito dvoma časťami knižníc, pretože je potrebné ich v kóde udržiavať oddelene. Pomocou operátora canon operuje kvantový stroj s operátormi, ktorí pracujú s konkrétnymi kvantovými algoritmami; napríklad uplatnenie kvantovej Fourierovej transformácie alebo nájdenie spoločných deliteľov dvoch čísel.

Q # nie je jazyk pre začiatočníkov. Aj keď to zjednodušuje niektoré kvantové operácie, záleží to na znalostiach fungovania kvantového počítača a na porozumení základov kvantového výpočtu. Ak ste pracovali s lineárnou algebrou a pravdepodobnosťami, získate náskok, ale stále stojí za to stráviť čas najskôr výukovými programami a ukážkami spoločnosti Microsoft.