Crédito:CC0 Public Domain
En computación clásica, La depuración de programas es una de las tareas que más tiempo requiere en el desarrollo de software. La depuración exitosa se basa en herramientas de desarrollo de software y también en la experiencia del programador. En computación cuántica, los investigadores predicen que la depuración será un desafío aún mayor. En un artículo que pronto aparecerá en el 46 ° Simposio Internacional Anual de Arquitectura de Computadoras de ACM / IEEE (como parte de las Conferencias de Investigación de Computación Federadas de ACM 2019), investigadores de la Universidad de Princeton presentan herramientas de depuración basadas en pruebas estadísticas, con el objetivo de ayudar a los programadores a construir programas cuánticos correctos para computadoras cuánticas a corto plazo.
La computación cuántica promete cambiar el mundo de la computación al ofrecer capacidades más allá de cualquier computadora clásica. Esas capacidades provienen de algoritmos cuánticos:secuencias de instrucciones que le dicen a una computadora cuántica qué hacer para calcular algún resultado, muy parecido al software para computadoras clásicas de hoy. Estos algoritmos cubren una amplia gama de aplicaciones. Por ejemplo, Los algoritmos de química cuántica permitirían a los científicos calcular las propiedades de los compuestos químicos directamente a partir de las ecuaciones que gobiernan la mecánica cuántica. una tarea formidable fuera del alcance de las computadoras modernas para todas las moléculas, excepto las más simples. Otros algoritmos prometen acelerar la búsqueda dentro de las bases de datos y permitir comunicaciones seguras resistentes a las escuchas.
Durante unas dos décadas, Estos algoritmos cuánticos existían solo como ecuaciones y especificaciones abstractas, y nunca se han ejecutado en computadoras cuánticas reales. Ese panorama de la investigación ha cambiado rápidamente. En los últimos años, Los investigadores han construido los primeros prototipos de computadoras cuánticas capaces de ejecutar programas cuánticos. Notablemente, IBM ha puesto a disposición del público computadoras cuánticas a pequeña escala para ejecutar código y ver resultados. Con este creciente interés en la experimentación de la computación cuántica, Un desafío nuevo y urgente radica en ayudar a los programadores a traducir esos algoritmos abstractos en un código de programa cuántico que funcione correctamente.
"Descubrimos que incluso los investigadores que se especializan en computación cuántica están cometiendo errores sutiles en el código del programa cuántico, impidiendo que los programas den resultados correctos, "Yipeng Huang, postdoctorado en la Universidad de Princeton y autor del artículo, dijo. "Si es tan complicado para los programadores cuánticos experimentados, ¿Cómo pueden los estudiantes nuevos en computación cuántica escribir programas correctos? sin la ayuda de herramientas como depuradores? "
En el artículo titulado "Afirmaciones estadísticas para validar patrones y encontrar errores en programas cuánticos, "Huang y Margaret Martonosi, profesor de Ciencias de la Computación en Princeton, identificar tres dificultades clave en la depuración de programas cuánticos, y evaluar sus soluciones para abordar esas dificultades.
La primera dificultad es que los programadores no pueden examinar fácilmente los valores de las variables de un programa cuántico, mientras se ejecuta el programa. Esta limitación dificulta la depuración, considerando que uno de los pasos a seguir en los programas de depuración es inspeccionar los valores de las variables paso a paso en el curso de un programa. Los programadores cuánticos no pueden hacer este tipo de depuración porque la lectura de variables cuánticas implicaría medir y "colapsar" los delicados estados cuánticos dentro de las computadoras cuánticas. Una vez que se colapsa un estado cuántico, cualquier observación no sería una descripción completa del estado del programa.
En su papel Huang y Martonosi abordan este desafío encontrando formas de depurar programas cuánticos utilizando solo la información sobre los estados cuánticos colapsados. Consideran depurar programas en dos tipos diferentes de configuraciones; en un escenario, los programas cuánticos se ejecutan en simulación en una computadora clásica, y en el otro entorno, los programas se ejecutan en prototipos de computadoras cuánticas reales. En ambos entornos, utilizan múltiples ejecuciones del programa cuántico para encontrar la distribución de los estados dentro del programa cuántico.
La segunda dificultad es que incluso cuando se dispone de observaciones o simulaciones, los estados cuánticos son en general de alta dimensión y difíciles de interpretar, limitando su utilidad para que los programadores depuren programas cuánticos que se comporten mal.
La solución de Huang y Martonosi a este desafío es utilizar pruebas estadísticas en los resultados de las mediciones, para ayudar a los programadores a decidir si los resultados son consistentes con tres tipos de estados. Usan la prueba estadística de chi-cuadrado para decidir si los estados observados pertenecen a uno de los estados clásicos, superposición, o estados enredados. "Centramos nuestra atención en estos tres tipos de estados porque ocurren a lo largo de un programa cuántico, y son más fáciles de identificar para los programadores, "Huang dijo." Si los estados no coinciden con lo que espera el programador, las pruebas estadísticas ayudan al programador a acercarse y encontrar errores en el código del programa ".
La tercera dificultad es que los programadores aún no tienen pautas sobre dónde y qué verificar al depurar programas cuánticos. Hasta hace poco, los algoritmos cuánticos existían principalmente como ecuaciones; de vez en cuando, los algoritmos serían más desarrollados en forma de diagramas de circuitos cuánticos. La tarea de codificar programas cuánticos implica traducir estos diagramas de circuitos cuánticos en código de programa. "El estado del arte en programación cuántica es similar a la programación de computadoras clásicas hace 50 años, "Dijo Huang." Por el momento, los investigadores están escribiendo programas cuánticos operación por operación, en bits de información de muy bajo nivel. Una contribución de nuestro artículo es discutir cómo los patrones y estructuras dentro de los algoritmos cuánticos guían a los programadores a saber qué verificar ".
En su papel Huang y Martonosi utilizan sus herramientas de depuración para probar varios programas cuánticos de referencia, incluyendo uno para factorizar enteros, uno para buscar datos, y uno en el área de la química cuántica. Patrones de programa comunes dentro de estos algoritmos, como operaciones de bucle, operaciones de anidación, y operaciones de duplicación, sirven como guías para que los programadores cuánticos sepan dónde usar las herramientas de depuración.
Con el apoyo de la National Science Foundation a través del proyecto EPiQC Expedition, El trabajo de Huang y Martonosi en herramientas de depuración es un enfoque pragmático al problema de escribir programas cuánticos correctos. Se une a un campo creciente de enfoques relacionados, muchos que se basan en pruebas formales. "Estamos descubriendo que escribir programas cuánticos correctos se basa en una combinación de técnicas, ", Dijo Huang." Al igual que en el caso de la programación clásica, los programadores cuánticos se basarán en una combinación de técnicas pragmáticas y formales ".