Saltar a contenido

Plantillas de código fuente para solvers#

Introducción#

En esta página puedes descargar plantillas de código fuente para los distintos SDKs y proveedores de hardware, de modo que sea más sencillo empezar a implementar tus solvers.

  • Classical CPU
  • Fujitsu
  • IBM Qiskit
  • Alice & Bob
  • Quantum Rings
  • Xanadu
  • Pasqal
  • Quantinuum
  • AWS Braket
  • D-Wave

Plantillas por SDK de hardware#

Importante

Asegúrate de descargar la plantilla adecuada según el Hardware SDK que seleccionaste en tu solver. De lo contrario, las ejecuciones pueden fallar en la plataforma.

Classical CPU

Classical CPU#

En la siguiente tabla puedes encontrar todas las plantillas disponibles para CPUs clásicas:

Lenguaje Descripción Descarga
Python Plantilla en Python para CPUs clásicas Disponible próximamente

IBM Qiskit

IBM Qiskit#

En la siguiente tabla puedes encontrar todas las plantillas disponibles para IBM Qiskit:

Lenguaje Descripción Descarga
Python Plantilla en Python para IBM Qiskit Disponible próximamente

IBM Qiskit

Fujitsu#

En la siguiente tabla puedes encontrar todas las plantillas disponibles para Fujitsu:

Lenguaje Descripción Descarga
Python Plantilla en Python para Fujitsu digital annealer Disponible próximamente

AWS Braket

AWS Braket#

En la siguiente tabla puedes encontrar todas las plantillas disponibles para AWS Braket:

Lenguaje Descripción Descarga
Python Plantilla en Python para AWS Braket clásico Disponible próximamente

Dwave

Dwave#

En la siguiente tabla puedes encontrar todas las plantillas disponibles para Dwave:

Lenguaje Descripción Descarga
Python Plantilla en Python para Dwave Disponible próximamente

Quantum Rings

Quantum Rings#

Lenguaje Descripción Descarga
Python Plantilla en Python para Quantum Rings Disponible próximamente

Alice & Bob

Alice & Bob#

Lenguaje Descripción Descarga
Python Plantilla en Python para Alice & Bob Disponible próximamente

Quantinuum

Quantinuum#

Lenguaje Descripción Descarga
Python Plantilla en Python para Quantinuum Disponible próximamente

Pasqal

Pasqal#

Lenguaje Descripción Descarga
Python Plantilla en Python para Pasqal Disponible próximamente

Xanadu

Xanadu#

Lenguaje Descripción Descarga
Python Plantilla en Python para Xanadu Disponible próximamente

Descripción de las plantillas#

Todas las plantillas de código fuente contienen 4 archivos principales:

  • app.py
  • qcentroid.py
  • requirements.txt
  • README.md

qcentroid.py#

El archivo qcentroid.py contiene la función run(), que es el entrypoint del solver.

Esta función run() recibe los parámetros de entrada necesarios para la ejecución:

  • input_data
  • solver_params
  • extra_arguments

Definición de la función run():

def run(input_data:dict, solver_params:dict, extra_arguments:dict) -> dict:

Ejemplo de archivo qcentroid.py simple:

qcentroid.py
#
# QCentroid entrypoint
# 
# DO NOT change the name of this file.
# DO NOT edit the signature of the run() function.
#
#
# TODO: Import here any non-standard packages you need or your custom modules
#


# Configure the QCentroid logging feature to see logs traces in the dashboard
import logging
logger = logging.getLogger("qcentroid-user-log")


def run(input_data:dict, solver_params:dict, extra_arguments:dict) -> dict:

    logger.info("Start of my solver...")

    #
    # Add your solver's code here, or call it from here if it is already implemented in another module
    #

    output = {"message": "Hello world!"}

    logger.info("End of my solver, returning output.")

    # And this is the output it returns. This output must be a dictionary.
    return output

app.py#

El propósito de este archivo es únicamente realizar pruebas locales. Al ejecutar tu solver en la plataforma, se sustituirá por el archivo propio de la plataforma, que añade las librerías necesarias y llama a los proveedores de hardware adecuados.

Precaución

No deberías modificar este archivo para asegurar que tu solver funciona tanto en entornos locales como de producción.

Como puedes ver en este archivo, lo único que hace es llamar a la función run() que tenemos en el archivo qcentroid.py.

requirements.txt#

Por último, tenemos el archivo requirements.txt, que contiene los paquetes usados en el solver junto con sus versiones:

requirements.txt
qiskit==0.17.0

En tu entorno, puedes instalar todos los paquetes listados en el archivo requirements.txt usando pip:

pip install -r requirements.txt

Se instalarán las librerías aprobadas estándar disponibles en pip. Asegúrate de añadir todas las dependencias de tu código, excepto librerías estándar de Python como json, logging o time.

Tip

Recomendamos usar entornos virtuales de Python en tu máquina local para evitar conflictos con dependencias.

README.md#

Es necesario tener en la raíz del repositorio un archivo README.md o [solver-name].md con la documentación que quieres incluir sobre tu solver, explicando, si existen, los parámetros que puede introducir el usuario final.

Ejemplo de archivo MyFirstSolver.md:

MyFirstSolver.md
    ## MyFirstSolver
    Test documentation associated with my solver.
    I don't have auxiliary parameters but I could define them like this:
    - "parameter1": (int) This is what my first parameter does.

Ejecutar el solver localmente#

Para ejecutar tu solver localmente durante el proceso de desarrollo y antes de subirlo a la plataforma, ejecuta el script Python app del solver:

python app.py

Instrucciones de uso#

  1. Descarga la plantilla que necesitas según el Hardware SDK que quieras usar.
  2. Descomprímela en tu máquina local. Contiene 4 archivos principales:
    • app.py
    • qcentroid.py
    • requirements.txt
    • README.md
  3. Modifica los archivos para añadir tu propio algoritmo.
  4. Sube todos los archivos a la carpeta raíz de un repositorio Git.
  5. Ahora puedes ir a la plataforma, conectar el repositorio, hacer pull y build de tu solver, y ejecutar jobs.

Qué sigue#

Conectar un repositorio

Hacer pull y recompilar tu solver