En el mundo de la computación de alto rendimiento (HPC), la portabilidad del rendimiento es un objetivo que persiguen muchos desarrolladores. Sin embargo, con la diversificación de las plataformas informáticas, este objetivo enfrenta muchos desafíos. La portabilidad del rendimiento no se trata sólo de hacer que una aplicación se ejecute en diferentes plataformas de hardware, sino, más importante aún, de cómo mantener su compatibilidad sin comprometer el rendimiento. Hasta la fecha, no existe un estándar universal para cuantificar y evaluar la portabilidad del rendimiento, lo que dificulta a los desarrolladores el diseño de software.
La definición y medición de la portabilidad del rendimiento es objeto de un acalorado debate. Algunos argumentan que lo más importante es la portabilidad de las aplicaciones, mientras que otros insisten en que la portabilidad del código fuente es la clave. Especialmente en la situación actual, donde el hardware cambia cada día, los desarrolladores deben considerar cómo permitir que sus productos sigan funcionando en múltiples plataformas. El Programa de Supercomputación del Departamento de Energía de EE. UU. (ECP) enfatiza este punto, ya que necesitan crear un ecosistema informático compatible para diferentes arquitecturas de hardware.La portabilidad del rendimiento representa la suposición de que la base de código única de un desarrollador funcionará bien en nuevas arquitecturas y mantendrá límites de rendimiento aceptables en una variedad de arquitecturas actuales que aún no se han probado.
En general, se cree que "un código puede ejecutarse bien en múltiples arquitecturas, lo que se conoce como portabilidad del rendimiento".
Al evaluar la portabilidad del rendimiento, los desarrolladores generalmente consideran dos factores: portabilidad y rendimiento. La portabilidad se puede medir observando las líneas de código utilizadas en diferentes arquitecturas, mientras que el rendimiento se puede determinar comparando versiones optimizadas para la plataforma con versiones portátiles. A pesar de estos métodos de medición, la industria aún carece de estándares transparentes, lo que dificulta que los desarrolladores comprendan claramente cómo lograr la mejor portabilidad de rendimiento.
En la Conferencia de Portabilidad del DOE (Departamento de Energía de EE. UU.) de 2016, los participantes participaron en un acalorado debate sobre la portabilidad del rendimiento. Numerosos desarrolladores y científicos conocidos asistieron a la reunión para compartir nuevos conocimientos y requisitos para la portabilidad del rendimiento. Vale la pena señalar que existe la opinión de que la portabilidad del rendimiento proporcionada por los futuros modelos de programación paralela será más significativa que la que las propias aplicaciones pueden proporcionar.
Como se mencionó en la reunión, "Un código es portable cuando el equipo de aplicación lo considera portable".
Ante la diversidad de plataformas de hardware, los desarrolladores necesitan encontrar un marco adecuado para soportar su código. Marcos conocidos como OpenCL, SYCL y OpenMP afirman facilitar la portabilidad de la funcionalidad. Estos marcos admiten la programación paralela en múltiples plataformas, lo que permite a los desarrolladores programar en múltiples lenguajes. Sin embargo, además de los frameworks, también existen soluciones que no son frameworks, como lenguajes de autoajuste y específicos de dominio, que también pueden ayudar a mejorar la portabilidad del rendimiento.
En resumen, la cuestión de la portabilidad del rendimiento está adquiriendo cada vez más importancia en la informática de alto rendimiento porque afecta directamente a la eficiencia del trabajo del desarrollador y al desarrollo sostenible de las aplicaciones. A medida que las necesidades informáticas cambian en el futuro y la tecnología informática avanza rápidamente, ¿cómo deberían los desarrolladores adaptarse y enfrentar estos desafíos?