Microsoft vil gøre dig til kvante-computerprogrammør med nyt sprog

Kvantecomputere kan ændre vores forståelse af kemi voldsomt og det kan have store følger indenfor industri og medicin, mener John Azariah fra Microsoft. Illustration: Microsoft
Var det noget at programmere til en computer, der slet ikke findes, og måske aldrig kommer til det? Gevinsten kan blive stor, hvis det lykkes, mener Microsofts kvantesprogs-designer.

Microsoft vil have udviklere og fysikere til at lære at programmere kvantecomputere. Det sker med et nyt sprog, der har fået navnet Q# (Q Sharp).

Computeren findes ikke endnu, men fysikere på Københavns Universitet er blandt dem, der arbejder på at gøre den til en realitet. Og måske er den første spæde bit, eller qubit, som det hedder i den verden, på plads ved udgangen af året.

Men selvom den ægte vare ikke er på banen endnu, så kan man snildt simulere den tænkte computer. Programmerne går blot mange størrelsesordener langsommere, end hvad den endelige computer forventes at kunne byde på. Hvis den da nogensinde bliver en realitet, for det er fysikerne ikke sikre på.

Kvantecomputere bruger et fysisk system til at foretage beregninger med. Det gør helt almindelige computere nu også, hvor en halvleders opførsel benyttes til at efterligne matematikkens logik. Og den gammeldags regnestok bruger også et fysisk princip til at gange med.

Men den matematik, der ligger i kvantesystemer, ligner slet ikke boolsk logik eller almindelig aritmetik. Det er ganske specielle slags tal, som en ‘hamiltonian’, der arbejdes med i den verden. Og derfor ser algoritmerne ikke ud, som i gængs imperativ programmering, hvor almindelige tal og plus og minus gør, som de plejer at gøre, og hvor værdier kan gemmes og kopieres i et snuptag.

En af designerne bag Q#, John Azariah, ved paradoksalt nok heller ikke rigtig, hvad en hamiltonian er.

»Joken på holdet var, at jeg er den eneste sprogdesigner på planeten, der ikke er kvalificeret til at skrive et program i det sprog, jeg har designet,« fortæller han veloplagt i forbindelse med et besøg i Danmark for nylig.

»Et kvante-programmeringssprog er bare et domæne-specifikt sprog. Jeg skrev sproget og fik det til at virke sammen med simulatoren. Men jeg kunne ikke selv skrive mit første program.«

(Artiklen forsætter efter eksemplet)

operation BellTest (count : Int, initial: Result) : (Int,Int)
{
  body
  {
    mutable numOnes = 0;
    using (qubits = Qubit[1])
    {
      for (test in 1..count)
      {
        Set (initial, qubits[0]);
 
        let res = M (qubits[0]);
 
        // Count the number of ones we saw:
        if (res == One)
        {
          set numOnes = numOnes + 1;
        }
      }
      Set(Zero, qubits[0]);
    }
    // Return number of times we saw a |0> 
    // and number of times we saw a |1>
    return (count-numOnes, numOnes);
  }
}

Et simpelt eksempel - sådan da - på Q#, fra Microsofts dokumentation.

Kvantebiblioteker skal kunne bruges fra C# og Python

Den første slags udviklere, som Microsoft forventer vil prøve kræfter med sprog og simulatorer, er kvantefysikere. Den næste målgruppe er studerende.

»Vi vil gøre programmering af kvantecomputere til ‘hyldevare,' så alle kan bruge dem. De studerende kan lære kvanteinformatik med vores sprog, i stedet for med diagrammer over kredsløb.«

På den måde kan computerverdenen og fysikernes verden nærme sig hinanden.

Den tredje målgruppe er udviklere. Og de behøver måske slet ikke lære kvantemekanikkens kringlede matematik.

»Jeg tror at vi vil bygge en masse færdiglavede biblioteker, ligesom CUDA,« siger John Azariah med henvisning til Nvidias vektor-programmeringsmiljø, der afvikles på grafikprocessorer.

»Biblioteker, du kan kalde fra C# eller Python, eller et andet sprog, uden at du behøver at kende detaljerne.«

Der findes andre sprog, der også retter sig mod kvanteprogrammering, men så er der tale om sprog, der er indlejret i et værtssprog. Det synes John Azariah er skidt, da der eksempelvis mangler et fælles typesystem. I modsætning hertil er Q# integreret med de andre sprog i Microsofts .Net-familie.

Kan revolutionere kemisk industri og medicin

Som eksempler på anvendelser, peger John Azariah, der også har en baggrund i kemi, på molekylemodeller, som det ikke er praktisk muligt at regne på med dagens computere. Det tager måneder og år at foretage de mest simple begregninger, med dagens teknologi.

Det handler efter hans mening om generelle og brede anvendelser, og ikke specielle eksempler, der kun har smalle brugsscenarier.

»Et hvilket som helst organisk molekyle, der har et metal i sig, er for svært at beregne på den klassiske måde.«

Det drejer sig for eksempel om hæmoglobin, der bærer ilt i blodsystemet og indeholder jern, samt mange andre molekyler, som er vigtige inden for medicin, industri og produktion.

»Hvis vi kunne forstå, hvordan de fungerer, og benytte dem i industrien, kunne det have en gennemgribende indvirkning på mange forhold.«

Et andet område er kvante-maskinlæring. Men det er stadig et åbent spørgsmål, hvilke andre områder, som kvantecomputere er egnet til, mener John Azariah. Og han vil ikke rent ud skrive under på, at det kan skabe en omvæltning inden for den del af kemien, der benytter sig af computerberegninger.

»Jeg vil garantere en bedre forståelse af kemi. Om det medfører en revolution i faget, er en anden sag.«

»Fandens mirakel, hvis vi når det«

John Azariah er ikke fysiker, men han omgås mange af slagsen i sit arbejde. Om det overhovedet er muligt at konstruere en kvantecomputer med det antal qubits, der skal til, for at få praktiske resultater, er uvist. Men det gør heller ikke noget, synes han:

»Vi arbejder ud fra antagelsen, at vi vil kunne skabe en kvantecomputer med flere end én qubit. Jeg tror, at vi vil have den første qubit i løbet af i år. De første skridt bliver det sværeste, og så bliver resten bare en ingeniør-opgave.«

På spørgsmålet om, om han vil være skuffet, hvis forskningen ikke er kommet videre om fem år, siger han:

»Hvis jeg skal være helt ærlig: Jeg er bare en software-udvikler. Så jeg er vant til deadlines, der ikke bliver holdt,« griner han.

»Det er vanvittigt svært at bygge en kvantecomputer, så det ville være et fandens mirakel, hvis vi når alle vores mål på en bestemt dato. Men betyder ikke, at det ikke er det, vi arbejder frem imod.«

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (5)
Torben Mogensen Blogger

Eksemplet er da ikke specielt kompliceret:

Der bruges mestendels "klassiske" variable (af typen Int), men der defineres en vektor af qubits, der er en lang (altså kun et enkelt qubit). I en lykke gentages følgende operationer:

Dette qubit initialiseres til værdien initial, som sikkert er en superposition af 0 og 1, skrevet som a|0>+b|1>, hvor a og b er komplekse tal, sådan at |a|²+|b|² = 1. Mit gæt er, at a og b begge er kvadratroden af en halv, måske med forskellige fortegn.

Dernæst sættes res (som er et andet qubit) til M anvendt på dette qubit. M er en kvanteoperation, men jeg kan ikke lige gætte hvilken.

Så kommer den spændende del: I if-sætningen sammenlignes res med One (som er |1>). Denne sammenligning vil få res til at kollapse til et klassisk bit, og da qubits[0] er entangled med res, vil den også blive påvirket af dette, sådan at kun de kvanteværdier, der er kompatible med målingen af res bliver tilbage. Hvis sammenligningen lykkes, tælles numOnes op. Dernæst nulstilles qubits[0] til |0>, og det hele gentages.

Hvis der var tale om en klassisk computer, ville if-sætningen altid gå samme vej, men da res er en superposition p|0>+q|1>, vil den tilfældigt med sandsynligheden |p|² kollapse til |0> og med |q|² til |1> ved målingen. Derfor bliver numOnes/count til en approksimation af |q|².

Dette eksempel er ikke specielt brugbart, men de samme metoder bruges til f.eks. Schor's algoritme bruger lignende metoder: Lav et antal kvanteoperationer på en vektor af kvantebit, mål resultatet, og hvis det ikke er det ønskede, så prøv igen.

Gert G. Larsen

Tak for en spændende artikel og en særdeles uddybende kommentar, Torben.

Jeg har længe gerne villet tættere på kvantemekanik og -computere, men det er lidt tungt emne at komme i gang med.
Har I nogen anbefalinger? Kurser, mindre uddannelser, e-learning?
Jeg har set DTU har noget quantum labs, men der er ikke så meget info om tilmelding eller kurser.
Nogen gode bud?

Torsten Hagemann

M er simpelthen "measure", som måler (og dermed definerer) og returnerer værdien.

Så 'res' har allerede en værdi, og er kollapset i forbindelse med M-opslaget, som kollapser den målte qubit til en kendt tilstand.

I hvert fald så vidt jeg forstår Q# ...

Log ind eller Opret konto for at kommentere
Pressemeddelelser

Welcome to the Cloud Integration Enablement Day (Bring your own laptop)

On this track, we will give you the chance to become a "Cloud First" data integration specialist.
15. nov 2017

Silicom i Søborg har fået stærk vind i sejlene…

Silicom Denmark arbejder med cutting-edge teknologier og er helt fremme hvad angår FPGA teknologien, som har eksisteret i over 20 år.
22. sep 2017

Conference: How AI and Machine Learning can accelerate your business growth

Can Artificial Intelligence (AI) and Machine Learning bring actual value to your business? Will it supercharge growth? How do other businesses leverage AI and Machine Learning?
13. sep 2017