Representación intermedia cuántica

Quantum Intermediate Representation (QIR) es una representación intermedia que actúa como una interfaz común entre lenguajes de programación cuántica o marcos de trabajo y targetplataformas de cálculo cuánticos. QIR especifica un conjunto de reglas para representar programas cuánticos mediante un lenguaje y un formato independiente del hardware en el IR de LLVM. El QIR es un proyecto que ha desarrollado la Alianza QIR de la que Microsoft es miembro.

¿Qué es una representación intermedia?

Un patrón común en los compiladores clásicos es empezar por compilar el idioma de origen en una representación intermedia. Una representación intermedia es, como su propio nombre indica, un paso intermedio en la conversión de instrucciones del código fuente al lenguaje de la máquina.

Una representación intermedia actúa como una representación abstracta de un programa. Todos los programas, independientemente del lenguaje en el que estén escritos, se traducen en esta representación intermedia mediante lo que se conoce como un compilador front-end, mientras que un componente back-end es el responsable de traducir esa representación intermedia en una representación de máquina. La representación intermedia permite separar los idiomas de origen de las plataformas de hardware y permite crear un compilador de manera modular, donde cada lenguaje nuevo solo requiere que se admita un front-end nuevo en todas las plataformas para las que está disponible un back-end.

Normalmente, la representación intermedia está diseñada para permitir que se representen muchos idiomas de origen diferentes. Además, en este nivel intermedio también es posible realizar alguna optimización y reorganización del circuito que hace que la implementación final sea más eficaz. Una vez que se conoce la plataforma de ejecución final target , la representación intermedia se puede compilar en código ejecutable real.

Este enfoque permite que muchos idiomas de origen compartan un conjunto común de optimizadores y generadores ejecutables. También facilita la compilación de un único lenguaje de origen para muchos diferentes targets. La representación intermedia proporciona una plataforma común que se puede compartir entre muchos orígenes y targets permite una gran cantidad de reutilización en la maquinaria del compilador.

¿Qué es Quantum Intermediate Representation?

QIR es una representación intermedia para programas cuánticos que desarrolla la Alianza QIR, a la que pertenece Microsoft. Proporciona una interfaz común que admite muchos lenguajes y target plataformas para el cálculo cuántico. Puede pensar que QIR es un lenguaje universal de nivel medio que permite la comunicación entre lenguajes de alto nivel y máquinas. Aunque Q# se compila en QIR, este no es específico de Q#: ningún marco de programación cuántica puede sacar provecho de QIR para representar un programa cuántico. Es independiente del hardware, lo que significa que no especifica una instrucción cuántica o un conjunto de puertas, dejando eso en el target entorno informático.

QIR se basa en el popular compilador clásico LLVM de código abierto. LLVM es una colección de tecnologías de compiladores y cadenas de herramientas modulares y reutilizables que ha adaptado un amplio conjunto de lenguajes. QIR especifica un conjunto de reglas para representar construcciones cuánticas en LLVM, pero no necesita extensiones ni modificaciones en LLVM.

El hecho de que LLVM sea la cadena de herramientas subyacente significa que QIR es por naturaleza capaz de procesar la lógica clásica y cuántica. Esta característica resulta esencial para los algoritmos híbridos clásicos-cuánticos, que se han vuelto cada vez más importantes para las aplicaciones de la computación cuántica. Además, permite sacar provecho de las herramientas de compilación y optimización del sector informático clásico y, por tanto, reducir el costo de la escritura de traducciones.

Muchos de los sectores principales de computación cuántica ya han adoptado QIR. Por ejemplo, NVIDIA, Oak Ridge National Laboratory, Quantinuum, Quantum Circuits Inc. y Rigetti Computing están creando cadenas de herramientas que sacan provecho de QIR.

Para obtener más información, consulte la especificación QIR. Si está interesado en las herramientas y proyectos del compilador que usan QIR, observe estos repositorios de QIR.

¿Qué es la Alianza QIR?

QiR Alliance es un esfuerzo conjunto para desarrollar una representación intermedia cuántica con el objetivo de permitir la interoperabilidad completa dentro del ecosistema cuántico, reducir el esfuerzo de desarrollo de todas las partes y proporcionar una representación adecuada para procesadores cuánticos heterogéneos actuales y futuros.

Los SDK y lenguajes cuánticos aparecen y evolucionan a un ritmo rápido, junto con nuevos procesadores cuánticos con funcionalidades únicas y distintas entre sí. Para proporcionar interoperabilidad entre nuevos lenguajes y nuevas funcionalidades de hardware, es imperativo que el ecosistema desarrolle y comparta una representación intermedia que funcione con hardware cuántico presente y futuro.

Con su trabajo colectivo y su asociación, la Alianza QIR tiene como objetivo:

  • Reduzca el trabajo de desarrollo necesario para todas las partes mediante la promoción de la interoperabilidad entre diferentes marcos y lenguajes.
  • Habilite el desarrollo de bibliotecas compartidas tanto para el desarrollo de aplicaciones cuánticas como para el desarrollo del compiladores cuántico.
  • Se basa en la tecnología de compilador de última generación y saca provecho de las herramientas, bibliotecas y aprendizajes existentes de la informática de alto rendimiento.
  • Permita la evolución incremental y progresiva en la manera en que los cálculos clásicos y cuánticos pueden interactuar a nivel de hardware.
  • Proporcione flexibilidad para conectar con facilidad las tecnologías emergentes, de manera que permita la experimentación con funcionalidades de hardware distintas y diferenciadas.

La Alianza QIR forma parte del trabajo de la Fundación Joint Development Foundation de Linux en estándares abiertos. Los miembros fundadores incluyen Microsoft, así como Quantinuum (anteriormente Honeywell), Oak Ridge National Laboratory, Quantum Circuits Inc. y Rigetti Computing.

Quantum Intermediate Representation¿Qué aspecto tiene?

Dado que QIR se basa en LLVM, es similar a LLVM.

Por ejemplo, tenga en cuenta el código siguiente Q# para generar un par Bell:

operation CreateBellPair(q1 : Qubit, q2 : Qubit) : Unit {
    H(q1);
    CNOT(q1, q2);
}

Cuando se compila en QIR, se convierte en:

define void @CreateBellPair__body(%Qubit* %q1, %Qubit* %q2) {
entry:
  call void @__quantum__qis__h(%Qubit* %q1)
  call void @__quantum__qis__cnot(%Qubit* %q1, %Qubit* %q2)
  ret void
}

En este fragmento de código, puede ver algunas características de QIR:

  • Las operaciones de Q# (o cualquier otro lenguaje de programación cuántica) se representan mediante funciones LLVM.
  • Los cúbits se representan como punteros a un tipo de estructura opaco con nombre denominado %Qubit.

Aunque el QIR para la operación CreateBellPair es muy sencillo, QIR hereda todas las funcionalidades de LLVM para expresar bucles, condicionales y otro flujo de control complejo. QIR también hereda la capacidad de LLVM de expresar cálculos clásicos arbitrarios.

Para obtener más información, consulte la sesión de desarrollador de Microsoft desde el evento Q2B de 2021.

¿Por qué es Quantum Intermediate Representation importante?

QIR es una herramienta esencial para ejecutar algoritmos cuánticos en hardware real. Pero las representaciones intermedias pueden desempeñar un papel importante, incluso si solo quiere desarrollar algoritmos en un nivel más teórico.

Por ejemplo, una aplicación habilitada por QIR es usar el compilador clang, un front-end del lenguaje C para LLVM, para compilar QIR en código de máquina ejecutable para un clásico target. Esto proporciona una ruta de acceso sencilla para compilar un simulador en C o C++ mediante la implementación de las instrucciones cuánticas, lo que puede simplificar la creación de simuladores cuánticos.

Además, puede usar la representación intermedia para generar código que se proporcione posteriormente como entrada en un simulador cuántico, en lugar de un dispositivo real, que puede usar un lenguaje diferente al código fuente. De esta manera, puede comparar y usar como punto de referencia diferentes lenguajes o simuladores con facilidad mediante un marco común.

En términos de optimización de código, hay pasos de optimización que se pueden realizar en el nivel intermedio que pueden hacer que la implementación general del algoritmo sea más eficaz. La investigación de esta optimización del código de entrada puede ayudarle a comprender mejor dónde hacer que los algoritmos sean más eficaces y cómo mejorar los lenguajes de programación cuánticos.

Otra aplicación consiste en usar la infraestructura "pass" estándar de LLVM para crear optimizadores de código cuántico que funcionan en QIR. El enfoque independiente del lenguaje y del hardware de QIR permite reutilizar esos optimizadores para diferentes lenguajes de cálculo y plataformas de computación sin apenas esfuerzo.

Pasos siguientes