En el campo de la computación de alto rendimiento (HPC), los desarrolladores son casi fanáticos de la "portabilidad del rendimiento". Este fenómeno surge de la necesidad de que los programas y aplicaciones informáticas se ejecuten de manera eficiente en diferentes plataformas. A medida que la tecnología continúa evolucionando y las arquitecturas de hardware cambian, la durabilidad y la relevancia de las aplicaciones informáticas de alto rendimiento se ven amenazadas, lo que obliga a los desarrolladores a centrarse en mejorar la portabilidad del rendimiento.
La importancia de la portabilidad del rendimientoLa portabilidad del rendimiento se refiere a la capacidad de los programas y aplicaciones de computadora de ejecutarse eficazmente en diferentes plataformas. Cuando los desarrolladores desarrollan aplicaciones para la portabilidad del rendimiento, esperan soportar múltiples plataformas sin afectar el rendimiento y minimizar el código específico de la plataforma.
A medida que aumenta la diversidad de hardware, el desarrollo de software que pueda ejecutarse en una amplia gama de máquinas se ha convertido en una necesidad para mantener la viabilidad de las aplicaciones. Según la Conferencia de Portabilidad del Rendimiento del Departamento de Energía (DOE) de EE. UU. de 2016, la industria generalmente coincide en que la portabilidad del rendimiento se puede interpretar como "la capacidad de ejecutar la misma aplicación en múltiples plataformas de hardware y lograr el mismo rendimiento en esas plataformas". de rendimiento."
Por ejemplo, John Penicuik de Intel dijo en la misma conferencia que "una aplicación se considera portátil en términos de rendimiento si puede alcanzar niveles de rendimiento consistentes en todas las plataformas". Esto significa que la llamada portabilidad no solo se refiere a la aplicación en sí, sino también a la plataforma. También sobre la portabilidad del código fuente.
Medición de la portabilidad del rendimiento Cómo cuantificar con precisión la portabilidad del rendimiento es un problema desafiante que depende principalmente de dos factores. La primera es la portabilidad, que se puede medir comparando el número total de líneas de código utilizadas en múltiples arquitecturas con el número total de líneas de código escritas específicamente para una sola arquitectura. El segundo es el rendimiento, que normalmente compara el rendimiento entre versiones optimizadas para una plataforma específica y versiones portátiles.Actualmente no existe una forma universalmente aceptada de medir la portabilidad del rendimiento, y cada equipo puede definir el concepto según sus propios criterios.
Actualmente no existe un estándar universal sobre lo que se considera código o aplicaciones portables. Esta ambigüedad en la definición da lugar a criterios de evaluación diferentes para los distintos equipos. Según un orador de la conferencia de 2016, si un proyecto se considera portable o no depende enteramente del equipo de desarrollo.
Los desarrolladores deben explorar formas de lograr portabilidad del rendimiento en una arquitectura informática en constante cambio, lo que no sólo está relacionado con las necesidades actuales, sino también con la supervivencia futura.
Con el rápido desarrollo de la tecnología informática, la portabilidad del rendimiento futuro puede enfrentar nuevos desafíos. Los expertos de la industria creen que la evolución de los modelos de programación paralela se convertirá en un factor clave que afectará la portabilidad del rendimiento. Las investigaciones sugieren que los futuros modelos de programación paralela podrán proporcionar una portabilidad de rendimiento mayor que las propias aplicaciones en muchas situaciones.
Este cambio significa que las responsabilidades que los programadores deben asumir al desarrollar aplicaciones se trasladarán gradualmente a la implementación del modelo de programación y su compilador subyacente, lo que cambiará significativamente el estilo técnico del desarrollo de programas. Estas exploraciones y discusiones continuarán promoviendo el progreso y el desarrollo de la computación de alto rendimiento.
Entonces, en este contexto tecnológico en constante cambio, ¿cómo deberían los desarrolladores equilibrar eficazmente la contradicción entre las características de la plataforma y la portabilidad del rendimiento?