Ohjelmointi

Q # kieli: Kuinka kirjoittaa kvanttikoodi Visual Studiossa

Tietokoneen tulevaisuus ei ole piitä; olemme jo Mooren lain rajoissa suorituskyvyn suhteen, jonka voimme saada perinteisistä transistoreista. Työskentelemme myös paljon suurempien ongelmien parissa, erityisesti salauksen ja matemaattisen mallinnuksen suhteen; ongelmat, jotka vaativat päivien laskenta-ajan jopa suurimmilla supertietokoneilla.

Joten mihin mennään täältä? Microsoft Research, kuten Google ja IBM, on investoinut voimakkaasti kvanttilaskentaan. Suuri osa tutkimustyöstä on ollut fysiikan alaa, yhteistyössä yliopistojen kanssa ympäri maailmaa tuottamaan tehokkaita matalan lämpötilan ympäristöjä ja vakaita kvanttilaskentaympäristöjä. Mutta kiintolevyn luominen - todennäköisyyskvanttibitti, joka korvaa olennaisesti perinteisen bitin 0- ja 1-luvut - on vain osa tarinaa. Tarvitaan myös tapa ohjelmoida kvanttitietokone ja tulkita qubittien todennäköisyystila.

Kvanttitietokoneiden rakentaminen

Kvanttiohjelman arkkitehtuuri on suhteellisen yksinkertainen: Perinteinen ohjelma saa arvot käyttäjän syötteistä tai muusta koodista. Sitten se välittää nämä arvot kvanttisovellukselle, joka asettaa quitit kvanttiprosessorissa käyttäen yhtä monista kvanttialgoritmeista, ennen kuin tulokset välitetään takaisin emosovellukselle.

Se on prosessi, joka on hyvin samanlainen kuin käytin ensimmäisessä ohjelmointityössäni. Kirjoitin Fortran-elementti-analyysikoodin, joka käytti supertietokoneeseen liitettyä vektoriprosessoria matriisialgebran käsittelemiseen. Vektorikirjastot, joita käytin rakentamaan ja ratkaisemaan 3D-sähkömagneettisia mallejani, toimivat sekä kyseisellä erikoistuneella laitteistolla että matematiikan apuprosessorilla työpöydän työasemassa, joten voisin testata koodini ennen kalliiden supertietokoneiden ajan käyttöä.

Microsoft julkaisi äskettäin uuden Q # -kielensä ympärille rakennetun Quantum Development Kit -paketin. Suunniteltu käyttämään tuttuja rakenteita auttamaan ohjelmien sovelluksia, jotka ovat vuorovaikutuksessa qubittien kanssa, se käyttää samanlaista lähestymistapaa työskennellessä rinnakkaisprosessoreiden kanssa, tarjoten kirjastoja, jotka käsittelevät varsinaista kvanttiohjelmointia ja tulkintaa, joten voit kirjoittaa koodin, joka luovuttaa kiittiöoperaatiot yhdelle Microsoftin kvanttitietokoneelle .

Klassisen ja kvanttilaskentamaailman yhdistäminen ei ole helppoa, joten älä odota, että Q # on kuin Visual Basic. Se on pikemminkin kuin käyttää tätä Fortran-matematiikkakirjastojen sarjaa samalla olettamuksella: ymmärrät tekemäsi teorian.

Yksi Quantum Development Kit -sarjan elementteistä on kvanttilaskennan aluke, joka tutkii kysymyksiä simulaattoreiden käytöstä sekä alukkeen tarjoamisesta lineaarisessa algebrassa. Jos aiot ohjelmoida Q #, vektorien ja matriisien ympärillä olevien lineaaristen algebrakäsitteiden ymmärtäminen on välttämätöntä - etenkin ominaisarvot ja ominaisvektorit, jotka ovat avaintekijöitä monissa kvanttialgoritmeissa.

Q #: n käytön aloittaminen

Kehityspaketti ladataan Visual Studio -laajennuksena, joten voit käyttää sitä kaikkien Microsoftin pääkehitysympäristön versioiden kanssa, mukaan lukien ilmainen yhteisöversio. Asennusohjelma sisältää Q # -kielen, paikallisen kvanttisimulaattorin ja kirjastot, jotka tukevat Q # -moduulien upottamista .Net-koodiin. Asennuksen jälkeen voit muodostaa yhteyden Microsoftin Q # Github -tietovarastoon kloonata ja ladata esimerkkikoodin ja muita kirjastoja. Se on nopea prosessi; Asennusohjelma vie muutaman minuutin ladata ja käyttää kohtuullisen tehokkaalla kehitystietokoneella. Kirjastoja isännöi Nuget, joten voit päivittää nopeasti uusimpiin versioihin.

Kun toimiva kvanttitietokone on vielä muutaman vuoden päässä, Quantum Development Kit rajoittuu työskentelyyn simuloitujen kvanttitietokoneiden kanssa. Microsoftin tutkimusjärjestelmät eivät ole vielä tuottaneet toimivaa topologista kiintolevyä, mutta tulokset ovat olleet lupaavia. Joten, kunnes julkaistuja tuloksia on ja Azure saa kvanttiprotsessorinsa, kokeilet vain paikallisten ja pilvipalvelujen simulaattoreita. Koska ne rajoittuvat perinteisten ohjelmointitekniikoiden käyttöön, he eivät aio käsitellä kaikkia monimutkaisia ​​matemaattisia operaatioita, joita kvanttilaskenta lupaa. Mutta ne antavat tunteen siitä, mitä pieni määrä qubitistä voi tehdä.

Suuri osa työstä, joka sinun on tehtävä kvanttiohjelman rakentamisessa, on kvanttitietokoneen rakentaminen kiertomuunnoksista. Q # -kieli käsittelee prosessin puolestasi, koska se sisältää lausekkeita monille kvanttiporttirakenteille sekä yleisiä kvanttialgoritmeja. Kieli itsessään tuntee tutun .Net-kehittäjille, rakenteeltaan C # ja F # välissä.

Kvanttiohjelmoinnin perusteet

Löydät useimmat Q # -ohjelmat suhteellisen yksinkertaisina, koska tekemäsi on asettaa joukko kvittejä ja soveltaa niihin matemaattisia muunnoksia. Vaikka taustalla oleva ongelma on monimutkainen (tai ainakin todennäköisesti vie paljon laskenta-aikaa perinteisten laskentaresurssien avulla), luotat kvanttitietokoneeseen käsittelemään työn puolestasi, ja sen kvanttialgoritmit tarkoittavat, että voit käyttää pientä määrää yhdistetyistä qubiteistä ongelman ratkaisemiseksi.

Yksi tärkeä asia on huomata, että jotkut kvanttikielet, kuten DWaven kvanttitietokoneissa käyttämä, on suunniteltu toimimaan kvanttihehkutuksen kanssa, ei Microsoftin kvanttilaitteistossa käytetyn porttimallin kanssa.

Missä Q # -kieli eroaa tutusta, se tukee kvanttialgoritmeja. Tämä alkaa tyyppeillä: Q # on voimakkaasti kirjoitettu kieli, joka lisää uusia tyyppejä, jotka edustavat qubittejä ja qubittien ryhmiä. Toinen tärkeä ero on Q # -operaatioiden ja toimintojen välillä. Operaatiot sisältävät kvanttioperaatioita, kun taas funktiot ovat puhtaasti klassista koodia varten, vaikka ne voivat toimia kvanttioperaation tulosten kanssa.

Kvanttialgoritmit ja kirjastot

Q # sisältää myös erityisiä operaatiotyyppejä, jotka toimivat kvanttialgoritmien kanssa, mukaan lukien ne, jotka laskevat kiintolevyjen matriisin liitännäistulokset, ja muut, jotka auttavat rakentamaan kiittiepiirejä, jotka laukaistaan ​​vain, jos ohjauskvibitit on asetettu oikein.

On tärkeää muistaa, että missä Q # käyttää nollaa ja yhtä tuloksissa muuttujina käyntien käsittelemiseksi, ne eivät ole samat kuin binaariset 0 ja 1. Sen sijaan ne edustavat lajeihin tallennettujen vektorien ominaisarvoja.

Q # -kirjastojen avulla voit rakentaa ja rakentaa kvanttisovelluksiasi. Näihin kuuluu joukko kvanttiprimitiivejä, jotka määrittelevät porttisi, jotka rakennat quitistäsi, sekä kvanttioperaattoreita ja mittaamalla tuloksia. Kirjastot on jaettu kahteen osaan: alkusoitto kvanttitietokoneesi asettamiseen ja kaanoni koneen käyttämiseen. On tärkeää ymmärtää näiden kahden kirjaston osan väliset erot, koska ne on pidettävä erillään koodissasi. Kaanonoperaattoreiden käyttö suorittaa kvanttikoneen operaattoreiden kanssa, jotka käsittelevät tiettyjä kvanttialgoritmeja; esimerkiksi soveltamalla Quantum Fourier -muunnosta tai etsimällä kahden numeron yhteisiä jakajia.

Q # ei ole kieli aloittelijoille. Vaikka se yksinkertaistaa joitain kvanttioperaatioita, se riippuu kvanttitietokoneen toiminnan tuntemisesta sekä kvanttilaskennan perusteiden ymmärtämisestä. Jos olet työskennellyt lineaarisen algebran ja todennäköisyyksien kanssa, sinulla on etumatka, mutta kannattaa silti viettää aikaa ensin Microsoftin opetusohjelmien ja näytteiden kanssa.

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