Simple Science

La science de pointe expliquée simplement

# Informatique# Informatique distribuée, parallèle et en grappes

Évaluation de l'autotuning pour les GPU : une nouvelle approche

Une nouvelle suite évalue les algorithmes d'optimisation pour la performance des GPU.

― 14 min lire


Suite de BenchmarkSuite de Benchmarkd'Autotuning GPU Sortielogicielles pour les GPU.l'optimisation des performancesLa nouvelle suite améliore
Table des matières

À mesure que les ordinateurs deviennent plus complexes, avec un mélange d'unités de traitement comme les CPU et les GPU, il devient plus difficile pour les programmeurs de maintenir leur logiciel performant. Les autotuners sont des outils conçus pour aider en gérant les détails d'Optimisation afin que les utilisateurs puissent faire tourner leur code correctement sur différents types de systèmes. Plusieurs frameworks d'auto-optimisation ont été développés, mais il n'y a pas beaucoup de recherches comparant ces outils parce que transférer un morceau de code optimisable d'un framework à un autre nécessite généralement beaucoup de travail manuel.

Cet article parle d'une nouvelle suite de benchmarking destinée à évaluer comment différents algorithmes d'optimisation fonctionnent avec les autotuners modernes qui ciblent les GPU. Cette nouvelle suite inclut des kernels GPU optimisables qui reflètent des tâches réelles. Elle permet de comparer divers algorithmes d'optimisation tout en examinant des aspects comme comment le code peut être optimisé et à quel point il peut fonctionner facilement sur différents systèmes.

La suite de benchmarks a cinq caractéristiques clés : la rapidité avec laquelle elle peut atteindre des Performances optimales, les défis pour trouver les meilleures Configurations, l'amélioration de performance maximale possible, l'importance des différentes caractéristiques pour la performance, et à quel point les configurations fonctionnent bien sur différents systèmes. Les résultats montrent que les réglages pour l'optimisation peuvent avoir un impact considérable sur la performance, et il y a un besoin fort de méthodes d'optimisation complètes. Bien que la pertinence de chaque réglage reste constante entre différents types de GPU, les meilleures valeurs pour ces réglages varient d'un type à l'autre.

Nos résultats soulignent aussi l'importance de régler chaque application pour une configuration matérielle spécifique. Copier simplement la meilleure configuration d'un type de GPU à un autre peut conduire à une performance qui n'est que de 58,5 % à 99,9 % aussi bonne que la performance optimale sur le nouveau système. Cela montre que l'Autotuning est essentiel pour l'informatique moderne et souligne l'utilité de notre suite de benchmarks dans l'étude des méthodes d'optimisation et de leur efficacité.

Contexte sur les GPU et les défis de performance

Ces dernières années, les ordinateurs ont fait des avancées significatives en termes de capacités. Les unités centrales de traitement (CPU) restent la colonne vertébrale des machines modernes, mais il y a eu une augmentation notable de l'utilisation des unités de traitement graphique (GPU) et d'autres accélérateurs pour booster la performance. Ces outils sont assez efficaces, mais ils compliquent aussi l'optimisation des logiciels.

Les systèmes de calcul haute performance (HPC), que beaucoup des meilleurs supercalculateurs au monde utilisent, combinent CPU et GPU. Ce mélange peut compliquer le processus d'optimisation du logiciel puisque les différents composants peuvent évoluer rapidement. Les programmeurs passent beaucoup de temps à s'assurer que leur logiciel fonctionne bien sur ces systèmes, mais à mesure qu'ils deviennent plus complexes, comprendre comment tout fonctionne ensemble devient plus difficile.

Pour aider à résoudre ce problème, des techniques comme l'optimisation par compilateur sont souvent utilisées. Ces méthodes aident à comprendre les systèmes et à établir des règles sur comment améliorer le code. Bien que ces règles puissent aider à faire de grands ajustements sans changer la fonction globale du logiciel, elles dépendent aussi de stratégies générales qui ne donnent pas toujours les meilleurs résultats sur tous les systèmes.

Dans de nombreux cas, une règle générale ne convient pas bien à tous les types d'architectures. Au lieu de ça, une approche d'essai-erreur, connue sous le nom d'autotuning, peut parfois être la meilleure option. Elle vise à minimiser le besoin pour l'utilisateur de connaître tous les détails de l'optimisation matérielle afin que le code puisse fonctionner efficacement à travers plusieurs générations de systèmes.

Limitations des benchmarks existants

Ces dernières années, plusieurs études ont présenté des améliorations des méthodes d'optimisation pour l’autotuning. Cependant, il existe peu d'analyses comparatives dans ce domaine. Cela est principalement dû à l'énorme effort nécessaire pour adapter des kernels ajustables d'un cadre de tuning à un autre. Pour une recherche efficace sur la performance des algorithmes d'optimisation, une suite de benchmark compatible est cruciale.

Les suites de benchmarks actuelles, comme Rodinia, SHOC et PolyBenchGPU, ne sont pas adaptées à cet usage. Elles présentent souvent des réglages codés en dur, ce qui peut les rendre moins flexibles. Leur dépendance à des dimensions de blocs de threads fixes et à des hypothèses sur la manière d'exécuter le code rend le tuning de ces benchmarks très gourmand en ressources.

Les tentatives précédentes pour créer des suites de benchmarks ajustables ont également rencontré des défis lorsqu'il s'agissait d'étudier l'efficacité des algorithmes d'optimisation. Par exemple, une suite ne fonctionne qu'avec un seul cadre de tuning, tandis que d'autres offrent des gains de performance limités. La nouvelle suite de benchmarks BAT 2.0 vise à encourager la recherche dans l'autotuning en présentant des kernels ajustables plus représentatifs d'applications réelles, comme l'apprentissage automatique et le traitement d'images.

La suite supporte les comparaisons entre les algorithmes d'optimisation en établissant un cadre de problème commun pour les outils de tuning et les benchmarks. Elle intègre des configurations plus larges et des classes simples qui permettent une intégration facile avec diverses méthodes de tuning, favorisant ainsi la recherche sur la performance et les sujets connexes.

Caractéristiques de la suite de benchmarking

La suite de benchmarking se concentre sur plusieurs caractéristiques clés qui aident à évaluer son efficacité. Ces aspects clés incluent :

  1. Taux de convergence : À quelle vitesse les algorithmes d'optimisation peuvent atteindre des réglages optimaux.
  2. Centralité des minima locaux : Cela indique à quel point il est difficile de trouver de bonnes configurations dans l'espace de recherche.
  3. Amélioration de performance optimale : L'amélioration de performance maximale réalisable par rapport à une configuration médiane.
  4. Importance des caractéristiques par permutation (PFI) : Cette métrique aide à établir comment les différents paramètres affectent la performance.
  5. Portabilité de performance : Le degré auquel une configuration optimisée pour un GPU fonctionnera sur un autre.

Les résultats des tests montrent un impact notable des paramètres d'optimisation sur la performance du logiciel et soulignent la nécessité d'une optimisation globale. Bien que la pertinence de chaque paramètre ait tendance à être stable à travers divers types de GPU, les réglages spécifiques qui donnent les meilleurs résultats doivent être ajustés pour chaque architecture.

L'importance de la portabilité dans le tuning

Le besoin d'autotuning devient encore plus clair lorsqu'on considère la portabilité de la performance. La performance d'un programme peut varier considérablement selon les systèmes, même si le logiciel réel se comporte de la même manière. Une configuration qui fonctionne bien sur un GPU peut ne pas bien performer sur un autre. Il est important d'utiliser le matériel efficacement pour obtenir les meilleurs résultats.

Des bibliothèques comme ATLAS aident à cela en ajustant automatiquement leurs configurations en fonction du matériel utilisé. Cela réduit le travail manuel nécessaire pour peaufiner les réglages pour chaque nouveau système.

Pour évaluer à quel point les configurations sont transférables, on peut déterminer les réglages optimaux pour le système GPU d'origine, puis évaluer comment ces réglages performent sur d'autres systèmes. Cette analyse peut identifier à quel point les configurations sont sensibles aux changements matériels et illustrer les différences de performance entre diverses architectures.

Analyser les caractéristiques des benchmarks

Une méthode pour évaluer quels paramètres influencent le plus la performance du logiciel est l'analyse de l'importance des caractéristiques. Cette idée aide à identifier quelles caractéristiques dans un ensemble de données ont un effet significatif sur le résultat du modèle. Différentes méthodes peuvent calculer l'importance des caractéristiques, et des techniques comme l'Importance des Caractéristiques par Permutation (PFI) peuvent être particulièrement informatives.

Pour cette étude, la PFI est utilisée pour évaluer l'importance des caractéristiques. Le processus consiste à mesurer comment la performance d'un modèle diminue lorsque les valeurs d'un paramètre sont mélangées aléatoirement. En entraînant un modèle sur les données d'origine, puis en mélangeant et en réentraînant, on peut comparer les métriques de performance pour voir comment chaque paramètre affecte le résultat.

Une autre métrique utile est la proportion de centralité, qui aide à quantifier la difficulté de tuning pour les GPU. Cette métrique analyse le graphe de flux d'adéquation qui représente tous les points de l'espace de recherche, révélant à quel point il peut être facile ou difficile pour les algorithmes de recherche locale de trouver de meilleures configurations.

Travaux connexes en autotuning

Les travaux précédents dans le domaine de l'autotuning, y compris les suites de benchmarks développées par divers chercheurs, ont montré des limitations qui entravent leur efficacité. Par exemple, beaucoup de benchmarks actuellement disponibles tendent à avoir de petits espaces de recherche, qui peuvent ne pas être assez larges pour soutenir des études d'autotuning intéressantes.

Certaines frameworks sont limités à une seule méthode de tuning, et d'autres ne donnent pas d'améliorations de performance significatives. Pour remédier à cela, la nouvelle suite BAT a été conçue pour inclure des benchmarks avec des espaces de recherche plus larges et de meilleures performances potentielles.

Le cadre de Connaissance Collective (CK) est une autre approche notable qui vise à améliorer le benchmarking et la reproductibilité dans ce domaine. De plus, plusieurs suites de benchmarks faites pour l'Optimisation d'Hyperparamètres (HPO) existent, bien qu'elles ne répondent pas totalement aux besoins spécifiques de l'autotuning pour GPU.

Kernels GPU communs dans la suite de benchmarks

La suite de benchmarks BAT inclut plusieurs kernels GPU bien connus qui sont largement utilisés dans diverses applications, ce qui facilite l'évaluation de la performance des algorithmes d'optimisation alternatifs.

GEMM (Multiplication de Matrices Généralisée)

Le kernel GEMM effectue la multiplication de matrices et fait partie des spécifications d'algèbre linéaire connues sous le nom de BLAS. La suite BAT inclut une version ajustable d'un kernel GEMM, permettant de modifier divers paramètres pour optimiser la performance.

N-body

Le kernel N-body calcule les interactions gravitationnelles entre plusieurs corps. Il est particulièrement utile dans les simulations astrophysiques en raison de son intensité computationnelle. Les paramètres ajustables dans ce kernel affectent la quantité de travail assignée à chaque thread et la manière dont les données sont stockées.

Hotspot

Le kernel Hotspot évalue les distributions de température dans les processeurs en fonction des entrées de puissance. La suite BAT propose une version améliorée qui permet plus d'options ajustables, facilitant ainsi l'optimisation de ce kernel pour différents types de GPU.

Pnpoly (Point dans un Polygone)

Ce kernel est utilisé dans les bases de données géospatiales pour déterminer si des points tombent dans une zone donnée. La version de la suite BAT inclut uniquement le kernel GPU et est conçue pour s'adapter efficacement à l'autotuning.

Convolution

Le kernel Convolution utilise des poids pour calculer les pixels de sortie pour les images, ce qui en fait un benchmark courant dans le traitement d'images. Les paramètres qui peuvent être ajustés dans ce kernel affectent comment il traite les entrées et stocke les valeurs.

Expdist

Le kernel Expdist fait partie d'un algorithme de fusion de particules utilisé en microscopie de localisation. Il calcule efficacement la distance entre les particules tout en prenant en compte leurs incertitudes.

Dedispersion

Le kernel Dedispersion est impliqué dans le traitement des signaux radio reçus de l'espace. Il est optimisé dans la suite BAT pour aider à détecter des événements astronomiques transitoires en corrigeant la dispersion du signal.

Conception expérimentale

Pour tester les benchmarks de la suite, des expériences ont été menées sur quatre systèmes équipés de différents GPU Nvidia, y compris le RTX 2080Ti, RTX 3060, RTX 3090 et RTX Titan. L'approche impliquait à la fois des recherches exhaustives des configurations possibles pour certains benchmarks et un échantillonnage aléatoire pour d'autres. De cette manière, les chercheurs pouvaient évaluer comment différents réglages performent à travers diverses architectures.

Résultats et discussion

Distribution de performance

L'analyse a révélé différents schémas de distribution pour les configurations à travers divers benchmarks. Chaque benchmark a exhibé des caractéristiques uniques, mais a montré des similitudes relatives dans la distribution de performance à travers différents types de GPU.

La plupart des benchmarks avaient une forte densité de configurations regroupées autour de la performance médiane, avec moins de configurations offrant d'excellentes performances. Le benchmark Hotspot s'est démarqué, montrant un nombre significatif de configurations avec des performances très élevées.

Convergence vers des performances optimales

Les résultats ont indiqué une large gamme dans la rapidité avec laquelle les benchmarks pouvaient atteindre des performances optimales. Certains benchmarks, comme Expdist et N-body, ont rapidement approché 90 % de la performance optimale avec moins d'évaluations. D'autres, comme Convolution et GEMM, ont nécessité beaucoup plus d'évaluations pour obtenir des résultats comparables.

Difficulté de recherche

La métrique de proportion de centralité a été appliquée pour évaluer à quel point il est difficile de trouver de bonnes configurations à travers les benchmarks. Certains benchmarks, comme Convolution, étaient plus faciles à optimiser, tandis que d'autres posaient de plus grands défis.

Performance par rapport aux pics théoriques

Lors des tests des benchmarks, la performance a été comparée au pic théorique pour chaque GPU. Cette analyse a aidé à mettre en évidence à quel point chaque benchmark performait dans des conditions réelles par rapport à sa capacité maximale.

Insights sur l'importance des caractéristiques

En utilisant la PFI, l'étude a mis en lumière quels paramètres avaient un impact significatif sur la performance. Dans de nombreux cas, il s'est avéré que tous les paramètres ne contribuaient pas de manière égale aux résultats. Cette information peut aider à concentrer les recherches futures sur les paramètres les plus critiques pour l'optimisation.

Portabilité de performance

La performance des configurations a été évaluée lorsqu'elles étaient transférées entre différents GPU. Les résultats ont montré que bien que certaines configurations fonctionnaient bien sur des types de GPU similaires, d'autres avaient des performances médiocres lorsqu'elles étaient déplacées vers une autre architecture.

Les résultats ont révélé que simplement déplacer la meilleure configuration d'un GPU à un autre pouvait avoir un impact significatif sur la performance, entraînant souvent des résultats sous-optimaux. Cela souligne le besoin d'un tuning spécifique adapté à chaque type de matériel.

Conclusion et orientations futures

À mesure que les systèmes HPC basés sur GPU deviennent plus complexes, le besoin de méthodes d'autotuning efficaces devient de plus en plus clair. La nouvelle suite de benchmarks BAT offre un outil complet pour étudier la performance des algorithmes d'optimisation dans les systèmes modernes qui utilisent des GPU.

Les résultats de l'analyse démontrent l'effet des paramètres d'optimisation sur la performance du logiciel et soulignent l'importance d'un tuning personnalisé pour chaque architecture. La suite BAT facilite davantage de recherches dans ce domaine, ouvrant des opportunités pour mieux comprendre comment optimiser le code pour divers systèmes de manière efficace.

Des travaux futurs pourraient explorer les différences entre les méthodes de tuning en C++ et en Python, ainsi que le développement ultérieur de l'interface pour améliorer les capacités de la suite BAT. Cette recherche continue vise à améliorer les façons dont les programmeurs peuvent optimiser leur logiciel pour des environnements de calcul complexes.

Source originale

Titre: Towards a Benchmarking Suite for Kernel Tuners

Résumé: As computing system become more complex, it is becoming harder for programmers to keep their codes optimized as the hardware gets updated. Autotuners try to alleviate this by hiding as many architecture-based optimization details as possible from the user, so that the code can be used efficiently across different generations of systems. In this article we introduce a new benchmark suite for evaluating the performance of optimization algorithms used by modern autotuners targeting GPUs. The suite contains tunable GPU kernels that are representative of real-world applications, allowing for comparisons between optimization algorithms and the examination of code optimization, search space difficulty, and performance portability. Our framework facilitates easy integration of new autotuners and benchmarks by defining a shared problem interface. Our benchmark suite is evaluated based on five characteristics: convergence rate, local minima centrality, optimal speedup, Permutation Feature Importance (PFI), and performance portability. The results show that optimization parameters greatly impact performance and the need for global optimization. The importance of each parameter is consistent across GPU architectures, however, the specific values need to be optimized for each architecture. Our portability study highlights the crucial importance of autotuning each application for a specific target architecture. The results reveal that simply transferring the optimal configuration from one architecture to another can result in a performance ranging from 58.5% to 99.9% of the optimal performance, depending on the GPU architecture. This highlights the importance of autotuning in modern computing systems and the value of our benchmark suite in facilitating the study of optimization algorithms and their effectiveness in achieving optimal performance for specific target architectures.

Auteurs: Jacob O. Tørring, Ben van Werkhoven, Filip Petrovic, Floris-Jan Willemsen, Jirí Filipovic, Anne C. Elster

Dernière mise à jour: 2023-03-15 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2303.08976

Source PDF: https://arxiv.org/pdf/2303.08976

Licence: https://creativecommons.org/licenses/by-sa/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires