En la actual era digital altamente interconectada, la portabilidad del rendimiento se ha convertido en una cuestión importante en el desarrollo de software. La portabilidad del rendimiento se refiere a la capacidad de una aplicación para ejecutarse eficazmente en diferentes plataformas de hardware. Cuando los desarrolladores diseñan aplicaciones portátiles y habilitadas para el rendimiento, deben admitir múltiples plataformas sin comprometer el rendimiento, idealmente minimizando el código específico de la plataforma.
La portabilidad del rendimiento se considera una característica muy buscada en la comunidad de informática de alto rendimiento (HPC), pero actualmente no existe un estándar de medición universal o consistente.
El rendimiento se mide de dos maneras: una es comparando el rendimiento de una versión optimizada de la aplicación con su versión portátil, la otra se basa en la cantidad de operaciones de punto flotante (FLOP) realizadas y que se mueven desde la memoria principal durante la ejecución; Datos a frecuencia del procesador para comparar el rendimiento máximo teórico de la aplicación. A medida que aumenta la diversidad de hardware, se vuelve cada vez más crítico desarrollar software que pueda ejecutarse en una amplia gama de máquinas, lo que afecta el uso a largo plazo de la aplicación y la posibilidad de actualizarla.
La portabilidad del rendimiento se menciona ampliamente en la industria y generalmente se refiere a: primero, la capacidad de ejecutar la misma aplicación en múltiples plataformas de hardware; segundo, lograr ciertos objetivos de rendimiento en estas plataformas; En la Conferencia sobre Portabilidad del Rendimiento celebrada por el Departamento de Energía de EE. UU. (DOE) en 2016, un experto afirmó que “una aplicación puede considerarse una aplicación si puede alcanzar un nivel constante de rendimiento en cada plataforma en relación con la implementación más conocida”. Por eficiencia y portabilidad”.
Jeff Larkin (NVIDIA) señaló directamente que la portabilidad del rendimiento es "el mismo código fuente puede ejecutarse productivamente en múltiples arquitecturas diferentes".
Por lo tanto, la portabilidad del rendimiento se ha convertido en un importante tema de discusión en la comunidad informática de alto rendimiento. Socios de la industria, el mundo académico y los laboratorios nacionales del DOE han celebrado periódicamente el "Foro de rendimiento, portabilidad y productividad informática de alta eficiencia" desde 2016 para promover la investigación y el desarrollo de la portabilidad del rendimiento.
A medida que la arquitectura informática continúa evolucionando, la portabilidad del rendimiento sigue siendo importante. Los desarrolladores suponen que su base de código único logrará un rendimiento aceptable en arquitecturas más nuevas, así como en una variedad de arquitecturas actuales que aún no han sido probadas. A medida que aumenta la diversidad de hardware, será necesario desarrollar software que pueda ejecutarse en múltiples plataformas. Esto está relacionado con la vitalidad y la relevancia continua de las aplicaciones.
El Proyecto de Computación Exaescala (ECP) del Departamento de Energía de EE. UU. enfatiza que la portabilidad del rendimiento es una preocupación constante, especialmente en un entorno multiplataforma.
Desde 2016, el DOE ha realizado múltiples talleres para discutir la creciente importancia de la portabilidad del desempeño. La conferencia de 2017 invitó a participar a muchas instituciones reconocidas, incluido el Centro Nacional de Computación Científica de Investigación Energética (NERSC) y el Laboratorio Nacional de Los Álamos (LANL).
Para cuantificar cuándo un programa ha logrado la portabilidad del rendimiento, se deben considerar dos factores. En primer lugar, la portabilidad del rendimiento se puede medir comparando la cantidad de líneas de código utilizadas en todas las arquitecturas con la cantidad de líneas de código utilizadas solo para una única arquitectura. En segundo lugar, el desempeño se puede medir de diversas formas. Por ejemplo, para comparar el rendimiento de una versión optimizada para plataforma de una aplicación con una versión portátil, un método de medición eficaz es utilizar un modelo de rendimiento del techo, que puede obtener el rendimiento máximo teórico de la aplicación.
En la conferencia de 2016, un participante mencionó: "Cuando el equipo de la aplicación afirma que es de rendimiento portátil, este código se considera de rendimiento portátil".
En los últimos años, las investigaciones han señalado que el código portátil escrito para varias arquitecturas informáticas paralelas debe cumplir con modelos de programación estándar abiertos, y el código debe desarrollarse y mejorarse en múltiples plataformas simultáneamente. Estas estrategias pueden ayudar a los desarrolladores a encontrar parámetros adecuados para diferentes plataformas.
Existe una variedad de aplicaciones y sistemas de programación en el mercado diseñados para ayudar a los desarrolladores a lograr la portabilidad del rendimiento. Algunos marcos comunes incluyen OpenCL, SYCL, Kokkos, RAJA, etc. Estas interfaces de programación admiten programación multiproceso multiplataforma. Algunas soluciones que no son marco incluyen lenguajes de autoajuste y específicos de dominio.
A medida que avanza la tecnología, ¿estamos preparados para una nueva era de programación que lleve las posibilidades de portabilidad del rendimiento a nuevas alturas?