Kredit:CC0 Public Domain
I klassisk computing, fejlfindingsprogrammer er en af de mest tidskrævende opgaver inden for softwareudvikling. Vellykket fejlfinding afhænger af softwareudviklingsværktøjer og også af programmørens erfaring. I kvanteberegning, forskere forudser debugging vil være en endnu større udfordring. I et papir, der snart vil blive vist på ACM/IEEE 46th Annual International Symposium for Computer Architecture (som en del af ACM's 2019 Federated Computing Research Conferences), forskere ved Princeton University præsenterer fejlfindingsværktøjer baseret på statistiske tests, med et mål om at hjælpe programmører med at opbygge korrekte kvanteprogrammer til kvantecomputere på kort sigt.
Quantum computing lover at ændre computerverdenen ved at tilbyde muligheder ud over enhver klassisk computer. Disse muligheder kommer fra kvantealgoritmer - sekvenser af instruktioner, der fortæller en kvantecomputer, hvad de skal gøre for at beregne et resultat, meget gerne software til klassiske computere i dag. Disse algoritmer dækker en lang række applikationer. For eksempel, kvantekemiske algoritmer ville give forskere mulighed for at beregne egenskaber for kemiske forbindelser direkte ud fra kvantemekanikkens styrende ligninger, en formidabel opgave uden for rækkevidde af moderne computere for alle undtagen de enkleste molekyler. Andre algoritmer lover at fremskynde søgningen inde i databaser og muliggøre sikker kommunikation, der er modstandsdygtig overfor aflytning.
I cirka to årtier har disse kvantealgoritmer eksisterede kun som abstrakte ligninger og specifikationer, og har faktisk aldrig været kørt på rigtige kvantecomputere. Det forskningslandskab har ændret sig hurtigt. I de sidste par år, forskere har bygget den første prototype kvantecomputere, der er i stand til at køre kvanteprogrammer. Især IBM har stillet små kvantecomputere til rådighed for offentligheden for at køre kode og se resultater. Med denne voksende interesse for kvanteberegningseksperimenter, en ny og presserende udfordring ligger i at hjælpe programmører med at oversætte disse abstrakte algoritmer til korrekt fungerende kvanteprogramkode.
"Vi fandt ud af, at selv forskere, der har specialiseret sig i kvantecomputing, begår subtile fejl i kvanteprogramkode, forhindrer programmerne i at give korrekte resultater, "Yipeng Huang, postdoc ved Princeton University og forfatter til papiret, sagde. "Hvis det er så vanskeligt for erfarne kvanteprogrammører, hvordan kan studerende, der er nye inden for kvanteberegning, skrive korrekte programmer, uden hjælp fra værktøjer som debugger? "
I papiret med titlen "Statistiske påstande til validering af mønstre og finde fejl i kvanteprogrammer, "Huang og Margaret Martonosi, professor i datalogi ved Princeton, identificere tre vigtige vanskeligheder ved fejlfinding af kvanteprogrammer, og vurdere deres løsninger for at løse disse vanskeligheder.
Den første vanskelighed er, at programmører ikke let kan undersøge værdierne af variabler i et kvanteprogram, mens programmet kører. Denne begrænsning gør fejlfinding vanskelig, i betragtning af at et af go-to-bevægelserne i fejlfindingsprogrammer er at inspicere værdierne for variabler trin for trin i løbet af et program. Kvanteprogrammerere kan ikke foretage denne form for fejlfinding, fordi læsning af kvantevariabler ville indebære måling og "sammenbrud" af de sarte kvantetilstande inde i kvantecomputere. Når en kvantetilstand er kollapset, eventuelle observationer ville ikke være en fuldstændig beskrivelse af programmets tilstand.
I deres papir, Huang og Martonosi løser denne udfordring ved at finde måder at debugge kvanteprogrammer ved kun at bruge informationen om de kollapsede kvantetilstande. De overvejer fejlretningsprogrammer i to forskellige slags indstillinger; i en indstilling kører kvanteprogrammerne i simulering på en klassisk computer, og i den anden indstilling kører programmerne på rigtige prototype kvantecomputere. I begge indstillinger, de bruger flere kørsler af kvanteprogrammet for at finde fordelingen af tilstande inde i kvanteprogrammet.
Den anden vanskelighed er, at selv når observationer eller simuleringer er tilgængelige, kvantetilstande er generelt højdimensionale og vanskelige at fortolke, begrænser deres anvendelighed for programmører til at fejlsøge fejlopførsel af kvanteprogrammer.
Huang og Martonosis løsning på denne udfordring er at bruge statistiske tests på måleresultater, for at hjælpe programmører med at beslutte, om resultaterne er i overensstemmelse med tre typer stater. De bruger chi-square statistisk test til at afgøre, om de observerede tilstande tilhører en af klassiske, superposition, eller sammenfiltrede stater. "Vi fokuserer vores opmærksomhed på disse tre typer stater, fordi de forekommer gennem et kvanteprogram, og er lettere for programmører at identificere, "Sagde Huang." Hvis staterne ikke matcher, hvad programmøren forventer, de statistiske tests hjælper programmereren med at zoome ind og finde fejl i programkoden. "
Den tredje vanskelighed er, at programmører endnu ikke har nogen retningslinjer for, hvor og hvad de skal kontrollere, når fejlfinding af kvanteprogrammer. Indtil for nylig, kvantealgoritmer eksisterede hovedsageligt som ligninger; lejlighedsvis, algoritmerne ville være mere uddybet i form af kvantekredsløbsdiagrammer. Opgaven med at kode kvanteprogrammer indebærer at oversætte disse kvantekredsløbsdiagrammer til programkode. "Den nyeste inden for kvanteprogrammering ligner programmering af klassiske computere for 50 år siden, "Sagde Huang." Foreløbig, forskere skriver kvanteprogrammer operation-for-operation, på meget små informationsstykker. Et bidrag i vores papir er at diskutere, hvordan mønstre og strukturer inde i kvantealgoritmer guider programmører til at vide, hvad de skal kontrollere. "
I deres papir, Huang og Martonosi bruger deres fejlfindingsværktøjer til at teste flere benchmark -kvanteprogrammer, herunder et til factoring af heltal, en til søgning efter data, og en inden for kvantekemi. Programmønstre, der er almindelige inde i disse algoritmer, såsom looping -operationer, redningsoperationer, og spejling, tjene som vejledninger for kvanteprogrammerere til at vide, hvor de skal bruge fejlfindingsværktøjerne.
Understøttet af National Science Foundation gennem EPiQC Expedition -projektet, Huang og Martonosis arbejde med fejlfindingsværktøjer er en pragmatisk tilgang til problemet med at skrive korrekte kvanteprogrammer. Det slutter sig til et voksende felt af relaterede tilgange, mange, der er baseret på formelle beviser. "Vi finder ud af, at det at skrive korrekte kvanteprogrammer er afhængig af en blanding af teknikker, "Sagde Huang." Ligesom tilfældet i klassisk programmering, kvanteprogrammerere vil stole på en blanding af pragmatiske og formelle teknikker. "