Dans le domaine du calcul haute performance (HPC), les développeurs sont presque fanatiques de la « portabilité des performances ». Ce phénomène découle de la nécessité pour les programmes et applications informatiques de fonctionner efficacement sur différentes plateformes. À mesure que la technologie continue d’évoluer et que les architectures matérielles changent, la durabilité et la pertinence des applications de calcul haute performance sont menacées, obligeant les développeurs à se concentrer sur l’amélioration de la portabilité des performances.
La portabilité des performances fait référence à la capacité des programmes et des applications informatiques à fonctionner efficacement sur différentes plates-formes. Lorsque les développeurs développent des applications pour la portabilité des performances, ils espèrent prendre en charge plusieurs plates-formes sans affecter les performances et minimiser le code spécifique à la plate-forme.
À mesure que la diversité du matériel augmente, le développement de logiciels pouvant fonctionner sur une large gamme de machines est devenu une nécessité pour maintenir la viabilité des applications. Selon la conférence sur la portabilité des performances de 2016 du département américain de l'énergie (DOE), l'industrie s'accorde généralement à dire que la portabilité des performances peut être interprétée comme « la capacité d'exécuter la même application sur plusieurs plates-formes matérielles et d'obtenir les mêmes performances sur ces plates-formes ». de la performance."
Par exemple, John Penicuik d'Intel a déclaré lors de la même conférence que « une application est considérée comme portable en termes de performances si elle peut atteindre des niveaux de performances cohérents sur toutes les plateformes ». Cela signifie que la soi-disant portabilité ne concerne pas seulement l'application elle-même, mais également sur la portabilité du code source.
Il n’existe actuellement aucun moyen universellement accepté de mesurer la portabilité des performances, et les équipes individuelles peuvent définir le concept en fonction de leurs propres critères.
Comment quantifier avec précision la portabilité des performances est un problème difficile qui dépend principalement de deux facteurs. Le premier est la portabilité, qui peut être mesurée en comparant le nombre total de lignes de code utilisées sur plusieurs architectures au nombre total de lignes de code écrites spécifiquement pour une seule architecture. Le deuxième est la performance, qui consiste généralement à comparer les performances entre les versions optimisées pour une plate-forme spécifique et les versions portables.
Actuellement, il n’existe pas de norme universelle définissant ce qui est considéré comme du code ou des applications portables. Cette ambiguïté dans la définition conduit à des critères d’évaluation différents pour différentes équipes. Selon un intervenant lors de la conférence de 2016, la question de savoir si un projet est considéré comme portable ou non dépend entièrement de l'équipe de développement.
Pour aider les programmeurs à atteindre la portabilité des performances, il existe actuellement une variété d'applications et de systèmes de programmation qui peuvent atteindre cet objectif. Les frameworks de programmation tels que OpenCL, SYCL et Kokkos prétendent prendre en charge la portabilité fonctionnelle et faciliter la programmation parallèle sur plusieurs plates-formes. En outre, il existe certaines solutions non-framework, telles que la technologie d'auto-réglage et les langages dédiés, qui peuvent également améliorer la portabilité des performances.
Les développeurs doivent explorer les moyens d’assurer la portabilité des performances dans une architecture informatique en constante évolution, qui n’est pas seulement liée aux besoins actuels, mais également à la survie future.
Avec le développement rapide de la technologie informatique, la portabilité des performances futures pourrait être confrontée à de nouveaux défis. Les experts du secteur estiment que l’évolution des modèles de programmation parallèle deviendra un facteur clé affectant la portabilité des performances. Les recherches suggèrent que les futurs modèles de programmation parallèle seront en mesure de fournir une portabilité des performances supérieure à celle des applications elles-mêmes dans de nombreuses situations.
Ce changement signifie que les responsabilités que les programmeurs doivent assumer lors du développement d'applications se déplaceront progressivement vers la mise en œuvre du modèle de programmation et de son compilateur sous-jacent, ce qui modifiera considérablement le style technique du développement de programmes. Ces explorations et discussions continueront de promouvoir le progrès et le développement du calcul haute performance.
Alors, dans ce contexte technologique en constante évolution, comment les développeurs devraient-ils équilibrer efficacement la contradiction entre les caractéristiques de la plateforme et la portabilité des performances ?