Wetenschap
Krediet:CC0 Publiek Domein
Bij klassieke informatica, het debuggen van programma's is een van de meest tijdrovende taken in softwareontwikkeling. Succesvol debuggen is afhankelijk van softwareontwikkelingstools en ook van de ervaring van de programmeur. Bij kwantumcomputers, onderzoekers voorspellen dat debuggen een nog grotere uitdaging zal zijn. In een paper dat binnenkort zal verschijnen op het ACM/IEEE 46th Annual International Symposium for Computer Architecture (als onderdeel van ACM's 2019 Federated Computing Research Conferences), onderzoekers van Princeton University presenteren debugging-tools op basis van statistische tests, met als doel programmeurs te helpen bij het bouwen van correcte kwantumprogramma's voor kwantumcomputers op korte termijn.
Quantum computing belooft de computerwereld te veranderen door mogelijkheden te bieden die verder gaan dan welke klassieke computer dan ook. Die mogelijkheden komen van kwantumalgoritmen - reeksen instructies die een kwantumcomputer vertellen wat hij moet doen om een resultaat te berekenen, net als software voor klassieke computers vandaag. Deze algoritmen bestrijken een breed scala aan toepassingen. Bijvoorbeeld, kwantumchemie-algoritmen zouden wetenschappers in staat stellen om eigenschappen van chemische verbindingen rechtstreeks te berekenen uit de heersende vergelijkingen van de kwantummechanica, een formidabele taak buiten het bereik van moderne computers voor iedereen behalve de eenvoudigste moleculen. Andere algoritmen beloven het zoeken in databases te versnellen en veilige communicatie mogelijk te maken die bestand is tegen afluisteren.
Gedurende ongeveer twee decennia, deze kwantumalgoritmen bestonden alleen als abstracte vergelijkingen en specificaties, en zijn nooit echt op echte kwantumcomputers gedraaid. Dat onderzoekslandschap is snel veranderd. In de afgelopen paar jaar, onderzoekers hebben de eerste prototype kwantumcomputers gebouwd die kwantumprogramma's kunnen uitvoeren. Opmerkelijk, IBM heeft kleinschalige kwantumcomputers beschikbaar gemaakt voor het publiek om code uit te voeren en resultaten te zien. Met deze ontluikende interesse in experimenten met kwantumcomputers, een nieuwe en urgente uitdaging ligt in het helpen van programmeurs om die abstracte algoritmen te vertalen naar correct functionerende kwantumprogrammacode.
"We ontdekten dat zelfs onderzoekers die gespecialiseerd zijn in kwantumcomputing subtiele fouten maken in kwantumprogrammacode, voorkomen dat de programma's de juiste resultaten geven, "Yipeng Huang, postdoc aan Princeton University en auteur van het artikel, zei. "Als het zo lastig is voor ervaren kwantumprogrammeurs, hoe kunnen studenten die nieuw zijn in kwantumcomputing correcte programma's schrijven, zonder de hulp van tools zoals debuggers?"
In het artikel getiteld "Statistical Assertions for Validating Patterns and Finding Bugs in Quantum Programs, "Huang en Margaret Martonosi, een professor in computerwetenschappen aan Princeton, identificeer drie belangrijke problemen bij het debuggen van kwantumprogramma's, en evalueren van hun oplossingen om die problemen aan te pakken.
De eerste moeilijkheid is dat programmeurs niet gemakkelijk de waarden van variabelen van een kwantumprogramma kunnen onderzoeken, terwijl het programma loopt. Deze beperking maakt debuggen moeilijk, overwegende dat een van de belangrijkste stappen in het debuggen van programma's is om de waarden van variabelen stap voor stap in de loop van een programma te inspecteren. Quantumprogrammeurs kunnen dit soort debuggen niet doen, omdat het lezen van kwantumvariabelen het meten en "instorten" van de delicate kwantumtoestanden in kwantumcomputers inhoudt. Zodra een kwantumtoestand is ingestort, eventuele waarnemingen zouden geen volledige beschrijving van de staat van het programma zijn.
In hun krant Huang en Martonosi pakken deze uitdaging aan door manieren te vinden om kwantumprogramma's te debuggen met alleen de informatie over de ingestorte kwantumtoestanden. Ze beschouwen het debuggen van programma's in twee verschillende soorten instellingen; in één setting draaien de kwantumprogramma's in simulatie op een klassieke computer, en in de andere setting draaien de programma's op echte prototype kwantumcomputers. In beide instellingen, ze gebruiken meerdere runs van het kwantumprogramma om de verdeling van de toestanden binnen het kwantumprogramma te vinden.
De tweede moeilijkheid is dat zelfs wanneer waarnemingen of simulaties beschikbaar zijn, kwantumtoestanden zijn over het algemeen hoogdimensionaal en moeilijk te interpreteren, het beperken van hun bruikbaarheid voor programmeurs om kwantumprogramma's te debuggen die zich misdragen.
Huang en Martonosi's oplossing voor deze uitdaging is het gebruik van statistische tests op meetresultaten, om programmeurs te helpen beslissen of de resultaten consistent zijn met drie soorten toestanden. Ze gebruiken de chi-kwadraat statistische test om te bepalen of de waargenomen toestanden behoren tot een van de klassieke, superpositie, of verstrengelde staten. "We richten onze aandacht op deze drie soorten toestanden omdat ze voorkomen in een kwantumprogramma, en zijn gemakkelijker te identificeren voor programmeurs, Huang zei. "Als de toestanden niet overeenkomen met wat de programmeur verwacht, de statistische tests helpen de programmeur in te zoomen en fouten in de programmacode te vinden."
De derde moeilijkheid is dat programmeurs nog geen richtlijnen hebben voor waar en wat ze moeten controleren bij het debuggen van kwantumprogramma's. Tot voor kort, kwantumalgoritmen bestonden voornamelijk als vergelijkingen; zo nu en dan, de algoritmen zouden meer worden uitgewerkt in de vorm van kwantumschakelschema's. De taak van het coderen van kwantumprogramma's omvat het vertalen van deze kwantumschakelschema's naar programmacode. "De state-of-the-art in kwantumprogrammering is verwant aan het programmeren van klassieke computers 50 jaar geleden, " zei Huang. "Voorlopig, onderzoekers schrijven kwantumprogramma's operatie per operatie, op zeer kleine stukjes informatie. Een bijdrage van ons artikel is om te bespreken hoe de patronen en structuren in kwantumalgoritmen programmeurs helpen om te weten wat ze moeten controleren."
In hun krant Huang en Martonosi gebruiken hun debugging-tools om verschillende benchmark-kwantumprogramma's te testen, inclusief een voor het ontbinden van gehele getallen, een voor het zoeken naar gegevens, en één op het gebied van kwantumchemie. Programmapatronen die veel voorkomen in deze algoritmen, zoals lusbewerkingen, nesten operaties, en spiegelbewerkingen, dienen als gids voor kwantumprogrammeurs om te weten waar ze de foutopsporingstools moeten gebruiken.
Ondersteund door de National Science Foundation via het EPiQC Expedition-project, Huang en Martonosi's werk op het gebied van foutopsporingstools is een pragmatische benadering van het probleem van het schrijven van correcte kwantumprogramma's. Het voegt zich bij een groeiend veld van verwante benaderingen, veel die zijn gebaseerd op formele bewijzen. "We ontdekken dat het schrijven van correcte kwantumprogramma's afhankelijk is van een mix van technieken, " zei Huang. "Net zoals het geval is bij klassieke programmering, kwantumprogrammeurs zullen vertrouwen op een mix van pragmatische en formele technieken."
Wetenschap © https://nl.scienceaq.com