Portabilité des performances : comment faire fonctionner votre programme de manière transparente sur différentes plates-formes matérielles ? 

À l'ère numérique hautement interconnectée d'aujourd'hui, la portabilité des performances est devenue un problème important dans le développement de logiciels. La portabilité des performances fait référence à la capacité d'une application à s'exécuter efficacement sur différentes plates-formes matérielles. Lorsque les développeurs conçoivent des applications portables et performantes, ils doivent prendre en charge plusieurs plates-formes sans compromettre les performances, idéalement tout en minimisant le code spécifique à la plate-forme.

La portabilité des performances est considérée comme une fonctionnalité très recherchée dans la communauté du calcul haute performance (HPC), mais il n'existe actuellement aucune norme de mesure universelle ou cohérente.

Les performances sont mesurées de deux manières : l'une consiste à comparer les performances d'une version optimisée de l'application avec sa version portable ; l'autre est basée sur le nombre d'opérations en virgule flottante (FLOP) effectuées et déplacées depuis la mémoire principale pendant l'exécution ; . Données sur la fréquence du processeur pour comparer les performances maximales théoriques de l'application. À mesure que la diversité du matériel augmente, il devient de plus en plus critique de développer des logiciels pouvant fonctionner sur un large éventail de machines, ce qui affecte l'utilisation à long terme de l'application et la possibilité de la mettre à jour.

Débat sur la portabilité des performances

La portabilité des performances est largement mentionnée dans l'industrie et fait généralement référence : premièrement, à la capacité d'exécuter la même application sur plusieurs plates-formes matérielles ; deuxièmement, à l'atteinte de certains objectifs de performances sur ces plates-formes ; Lors de la conférence Performance Portability organisée par le Département américain de l’énergie (DOE) en 2016, un expert a déclaré qu’« une application peut être considérée comme une application si elle peut atteindre un niveau de performance cohérent sur chaque plate-forme par rapport à la mise en œuvre la plus connue ». Pour l’efficacité et la portabilité.

Jeff Larkin (NVIDIA) a souligné directement que la portabilité des performances signifie que « le même code source peut s'exécuter de manière productive sur plusieurs architectures différentes ».

Par conséquent, la portabilité des performances est devenue un sujet de discussion important dans la communauté du calcul haute performance. Des partenaires de l'industrie, du monde universitaire et des laboratoires nationaux du DOE organisent régulièrement le « Forum sur les performances, la portabilité et la productivité informatique à haute efficacité » depuis 2016 pour promouvoir la recherche et le développement de la portabilité des performances.

La clé de la portabilité des performances

À mesure que l'architecture informatique continue d'évoluer, la portabilité des performances reste importante. Les développeurs supposent que leur base de code unique permettra d'atteindre des performances acceptables sur les architectures les plus récentes, ainsi que sur une variété d'architectures actuelles qui n'ont pas encore été testées. À mesure que la diversité matérielle augmente, il deviendra nécessaire de développer des logiciels pouvant fonctionner sur plusieurs plates-formes. Cela est lié à la vitalité et à la pertinence continue des applications.

Le projet Exascale Computing (ECP) du ministère américain de l'Énergie souligne que la portabilité des performances est une préoccupation constante, en particulier dans un environnement multiplateforme.

Depuis 2016, le DOE a organisé plusieurs ateliers pour discuter de l'importance croissante de la portabilité des performances. La conférence de 2017 a invité à la participation de nombreuses institutions renommées, notamment le Centre national de calcul scientifique pour la recherche énergétique (NERSC) et le Laboratoire national de Los Alamos (LANL).

Mesure de la portabilité des performances

Pour quantifier le moment où un programme a atteint la portabilité des performances, deux facteurs doivent être pris en compte. Premièrement, la portabilité des performances peut être mesurée en comparant le nombre de lignes de code utilisées dans les architectures au nombre de lignes de code utilisées uniquement pour une seule architecture. Deuxièmement, la performance peut être mesurée de diverses manières. Par exemple, pour comparer les performances d'une version optimisée pour la plate-forme d'une application avec une version portable, une méthode de mesure efficace consiste à utiliser un modèle de performance du toit, qui peut obtenir les performances théoriques maximales de l'application.

Lors de la conférence de 2016, un participant a déclaré : « Lorsque l'équipe chargée de l'application prétend qu'il est portable en termes de performances, ce code est considéré comme portable en termes de performances. »

Ces dernières années, des recherches ont montré que le code portable écrit pour diverses architectures informatiques parallèles doit être conforme aux modèles de programmation standard ouverts, et que le code doit être développé et amélioré simultanément sur plusieurs plates-formes. Ces stratégies peuvent aider les développeurs à trouver des paramètres adaptés à différentes plateformes.

Solutions cadres et non-cadres

Il existe une variété d'applications et de systèmes de programmation sur le marché conçus pour aider les développeurs à atteindre la portabilité des performances. Certains frameworks courants incluent OpenCL, SYCL, Kokkos, RAJA, etc. Ces interfaces de programmation prennent en charge la programmation multi-plateforme et multi-processus. Certaines solutions non-framework incluent des langages à réglage automatique et spécifiques à un domaine.

À mesure que la technologie progresse, sommes-nous prêts pour une nouvelle ère de programmation qui porte les possibilités de portabilité des performances vers de nouveaux sommets ?

Trending Knowledge

Pourquoi la communauté HPC est-elle si obsédée par la « portabilité des performances » ?
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 applicat
Les défis cachés du calcul haute performance : savez-vous à quel point il est difficile de mesurer la portabilité des performances ?
Dans le monde du calcul haute performance (HPC), la portabilité des performances est un objectif poursuivi par de nombreux développeurs. Cependant, avec la diversification des plateformes informatique
nan
La définition et l'application des chemins de fer de passagers varient considérablement dans chaque région.Ces différences reflètent non seulement le développement des systèmes de transport public da

Responses