Programování

Jazyk Q #: Jak psát kvantový kód v sadě Visual Studio

Budoucnost počítače není křemík; jsme již na hranici Moorova zákona, pokud jde o výkon, který můžeme získat od tradičních tranzistorů. Pracujeme také na mnohem větších problémech, zejména pokud jde o kryptografii a matematické modelování; problémy, které vyžadují dny výpočetního času i na největších superpočítačích.

Odkud tedy půjdeme? Společnost Microsoft Research, stejně jako Google a IBM, investovala značné prostředky do kvantového výpočtu. Hodně z jeho výzkumu bylo v základní fyzice a spolupracovalo s univerzitami po celém světě na produkci efektivních nízkoteplotních prostředí a stabilních kvantových výpočetních prostředí. Ale vytvoření qubitu - pravděpodobnostní kvantový bit, který v zásadě nahrazuje nuly a jedničky tradičního bitu - je jen částí příběhu. Rovněž je zapotřebí způsob, jak naprogramovat kvantový počítač a interpretovat pravděpodobnostní stav qubitsů.

Konstrukce kvantových počítačů

Architektura kvantového programu je poměrně jednoduchá: Tradiční program získává hodnoty ze vstupu uživatele nebo z jiného kódu. Poté předá tyto hodnoty kvantové aplikaci, která nastaví qubity v kvantovém procesoru pomocí jednoho z mnoha kvantových algoritmů, než předá výsledky zpět nadřazené aplikaci.

Je to proces velmi podobný tomu, který jsem použil při své první programátorské práci, když jsem psal Fortranský kód pro analýzu konečných prvků, který pro zpracování maticové algebry používal vektorový procesor připojený k superpočítači. Vektorové knihovny, které jsem používal k vytváření a řešení svých 3D elektromagnetických modelů, fungovaly jak na tomto specializovaném hardwaru, tak na matematickém koprocesoru na stolní pracovní stanici, takže jsem mohl otestovat svůj kód před použitím drahého času superpočítače.

Společnost Microsoft nedávno vydala svoji Quantum Development Kit postavenou na novém jazyce Q #. Navržen tak, aby používal známé konstrukce, které pomáhají programovat aplikace, které interagují s qubits, vyžaduje podobný přístup k práci s koprocesory a poskytuje knihovny, které zpracovávají skutečné kvantové programování a interpretaci, takže můžete psát kód, který předává operace qubit do jednoho kvantového počítače Microsoft .

Propojení světů klasické a kvantové výpočetní techniky není snadné, takže neočekávejte, že Q # bude jako Visual Basic. Je to spíš jako používat tuto sadu Fortranských matematických knihoven se stejným základním předpokladem: rozumět teorii toho, co děláte.

Jedním z prvků Quantum Development Kit je kvantový výpočetní primer, který zkoumá problémy kolem používání simulátorů a také poskytuje primer v lineární algebře. Pokud se chystáte programovat v Q #, je nezbytné porozumět klíčovým konceptům lineární algebry kolem vektorů a matic - zejména vlastních čísel a vlastních vektorů, které jsou klíčovými prvky mnoha kvantových algoritmů.

Začínáme s Q #

Vývojová sada se stáhne jako rozšíření Visual Studio, takže ji můžete použít se všemi verzemi hlavního vývojového prostředí společnosti Microsoft, včetně bezplatné edice Community. Instalační program obsahuje jazyk Q #, místní kvantový simulátor a knihovny, které podporují vložení modulů Q # do vašeho kódu .Net. Po instalaci se můžete připojit k úložišti Q # Github společnosti Microsoft a naklonovat a stáhnout ukázkový kód a další knihovny. Je to rychlý proces; stažení a spuštění instalačního programu na rozumně výkonném vývojovém počítači trvá několik minut. Knihovny jsou hostovány v Nugetu, takže můžete rychle aktualizovat na nejnovější verze.

S fungujícím kvantovým počítačem, který zbývá ještě několik let, je Quantum Development Kit omezen na práci se simulovanými kvantovými počítači. Výzkumné systémy společnosti Microsoft ještě nevytvořily funkční topologický qubit, ale výsledky byly slibné. Dokud tedy nebudou publikovány výsledky a Azure nezíská své kvantové koprocesory, můžete se omezit na experimentování s místními a cloudovými simulátory. Protože se omezují na používání tradičních programovacích technik, nezvládnou celou škálu složitých matematických operací, které kvantové výpočty slibují. Ale dávají pocit, co dokáže malý počet qubitů.

Hodně práce, kterou musíte udělat při budování kvantového programu, je konstrukce kvantového počítače z qubitových transformací. Jazyk Q # zpracovává proces za vás, protože obsahuje výrazy pro mnoho struktur kvantové brány a také běžné kvantové algoritmy. Samotný jazyk bude vývojářům .Net dobře známý a jeho struktura bude někde mezi C # a F #.

Základy kvantového programování

Většinu programů Q # najdete relativně jednoduchou, protože to, co děláte, je nastavování polí qubits a aplikování matematických transformací na ně. Přestože je základní problém složitý (nebo je pravděpodobné, že za použití tradičních výpočetních zdrojů zabere hodně výpočetního času), spoléháte se na to, že práci za vás zvládne kvantový počítač a jeho kvantové algoritmy znamenají, že můžete použít malé připojených qubitů k vyřešení vašeho problému.

Je třeba si uvědomit, že některé kvantové jazyky, jako ten, který používá DWave ve svých kvantových počítačích, jsou navrženy pro práci s kvantovým žíháním, nikoli s modelem brány používaným v kvantovém hardwaru společnosti Microsoft.

Jazyk Q # se liší od známého v jeho podpoře kvantových algoritmů. Začíná to typy: Q # je jazyk se silným typem a přidává nové typy, které představují qubity a skupiny qubits. Další klíčový rozdíl je mezi operacemi Q # a funkcemi. Operace obsahují kvantové operace, zatímco funkce jsou čistě pro klasický kód, i když mohou pracovat s výsledky kvantové operace.

Kvantové algoritmy a knihovny

Q # také zahrnuje konkrétní typy operací, které pracují s kvantovými algoritmy, včetně těch, které počítají adjunktní výsledky matice qubitů, a dalších, které pomáhají konstruovat qubitové obvody, spouštěné pouze v případě, že jsou správně nastaveny kontrolní qubity.

Je důležité si uvědomit, že tam, kde Q # používá Zero a One ve výsledcích jako proměnné pro zpracování qubits, nejsou stejné jako binární 0 a 1. Místo toho jsou reprezentacemi vlastních čísel vektorů uložených v qubits.

Standardní knihovny Q # používáte k vytváření a konstrukci svých kvantových aplikací. Patří mezi ně sada kvantových primitiv, které definují brány, které stavíte ze svých qubits, stejně jako použití kvantových operátorů a měření výsledků. Knihovny jsou rozděleny do dvou částí: předehra k nastavení vašeho kvantového počítače a kánon pro ovládání stroje. Je důležité pochopit rozdíly mezi těmito dvěma částmi knihoven, protože je třeba je v kódu oddělit. Používání operátorů canon provozuje kvantový stroj s operátory, kteří zpracovávají konkrétní kvantové algoritmy; například použití kvantové Fourierovy transformace nebo nalezení společných dělitelů dvou čísel.

Q # není jazyk pro začátečníky. Ačkoli to zjednodušuje některé kvantové operace, záleží na znalosti toho, jak funguje kvantový počítač, a na porozumění základům kvantového výpočtu. Pokud jste pracovali s lineární algebrou a pravděpodobnostmi, budete mít náskok, ale stále stojí za to trávit čas nejprve výukami a ukázkami společnosti Microsoft.

$config[zx-auto] not found$config[zx-overlay] not found