Simple Science

La science de pointe expliquée simplement

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

Améliorer le traitement des données avec PIM-STM

Une nouvelle bibliothèque améliore les performances dans les systèmes de calcul centrés sur la mémoire.

― 8 min lire


Bibliothèque PIM-STM pourBibliothèque PIM-STM pourun traitement des donnéesplus rapideprogrammation concurrente.traitement de mémoire efficace et laUne nouvelle solution pour un
Table des matières

Le besoin de traiter les données plus vite a augmenté avec l'avancée de notre technologie et de nos besoins en données. Les systèmes de mémoire traditionnels rencontrent des défis, surtout quand il faut transférer de grandes quantités de données entre le CPU et la mémoire. Ça cause des ralentissements, souvent appelés goulets d'étranglement dans le mouvement des données. Le Processing-In-Memory (PIM) propose une nouvelle approche pour répondre à ces défis en intégrant des capacités de traitement directement dans les puces de mémoire. Ça permet de faire des calculs plus près de là où les données sont stockées, réduisant le besoin de transferts fréquents entre le CPU et la mémoire.

Ce travail se concentre sur le développement de systèmes logiciels efficaces qui profitent des architectures PIM. Un domaine d'intérêt majeur est la Software Transactional Memory (STM), qui simplifie la programmation pour les systèmes concurrents. Dans les systèmes standard, gérer plusieurs threads accédant à des données partagées peut être complexe et sujet à des erreurs. La STM offre un moyen simple de gérer ça, permettant aux développeurs de marquer des sections de code qui doivent s'exécuter de manière atomique, simplifiant le processus de synchronisation.

On vous présente PIM-STM, une bibliothèque conçue pour UPMEM, le premier système PIM commercial. Cette bibliothèque offre diverses implementations de STM spécifiquement adaptées au PIM, permettant aux applications de bénéficier du traitement concurrent. On évalue la performance de ces conceptions de STM par rapport aux implémentations CPU traditionnelles et on explore comment différentes configurations peuvent optimiser la performance.

Contexte sur le Processing-In-Memory

Le PIM amène les capacités de traitement directement dans les puces de mémoire, réduisant le besoin de déplacer les données entre des composants distincts. Il y a deux principales approches dans le paysage PIM : Processing Using Memory (PUM) et Processing Near Memory (PNM).

  • Processing Using Memory (PUM) : Cette méthode utilise la technologie DRAM existante pour effectuer des opérations de données directement dans la mémoire. Bien que efficace, cette approche peut avoir des limitations en flexibilité.

  • Processing Near Memory (PNM) : Ce design intègre des unités de traitement dédiées près de la mémoire, permettant des calculs plus complexes par rapport au PUM.

UPMEM a développé un système PNM qui intègre des unités de traitement dans des modules de mémoire dual in-line standards (DIMMs), permettant une accélération dans divers domaines comme l'apprentissage machine et la bioinformatique.

L'architecture d'UPMEM comporte plusieurs Unités de Traitement de Données (DPU), chaque DPU ayant sa propre mémoire locale. Ce montage permet à plusieurs threads de fonctionner en parallèle. La communication directe entre les threads au sein d'un DPU est rapide, tandis que la communication entre différents DPUs nécessite l'intervention du CPU, ajoutant un potentiel de latence.

Aperçu de la Mémoire Transactionnelle

La Mémoire Transactionnelle (TM) simplifie les complexités liées à la programmation concurrente. Au lieu de traiter des mécanismes de verrouillage complexes, les développeurs peuvent marquer des sections de code comme des transactions, que la TM gère de manière à garantir la sécurité.

Il existe deux types principaux de TM :

  • Software Transactional Memory (STM) : Cette implémentation repose sur le logiciel pour gérer les transactions.
  • Hardware Transactional Memory (HTM) : Cette version utilise le support matériel pour gérer les transactions.

La STM a été largement étudiée et est connue pour permettre à plusieurs threads de travailler sur des données partagées avec moins de risque de conflits et d'erreurs.

Choix de Conception de PIM-STM

PIM-STM a été créé pour fonctionner de manière optimale avec les caractéristiques spécifiques de l'architecture PIM. Plusieurs décisions clés ont été prises :

  1. Portée de la Transaction : Les transactions sont limitées à l'accès aux données au sein du même DPU. Cette limitation aide à maximiser les performances puisque la communication inter-DPU est plus lente.

  2. Stockage des Métadonnées : Les métadonnées associées aux transactions peuvent être stockées soit dans une WRAM rapide et limitée, soit dans une MRAM plus lente et plus grande. L'endroit où ces métadonnées sont stockées affecte considérablement les performances. Tandis que la WRAM permet un accès plus rapide aux métadonnées, elle réduit la mémoire disponible pour les données spécifiques à l'application.

  3. Design à Version Unique, Basé sur les Mots : PIM-STM cible la programmation en C, qui ne prend pas en charge plusieurs versions de mémoire, se concentrant plutôt sur des transactions à version unique.

Algorithmes STM dans PIM-STM

PIM-STM implémente divers algorithmes STM pour explorer différents aspects de performance :

Algorithmes de Lectures Invisibles

  1. Tiny : Cet algorithme utilise le versionnage pour gérer les adresses mémoire. Chaque emplacement mémoire a un numéro de version, ce qui rend simple de déterminer si une valeur a changé durant une transaction.

  2. NOrec : Cet algorithme simplifie la mémoire transactionnelle en utilisant un seul verrou global au lieu de verrous individuels pour chaque adresse mémoire. Cela réduit la surcharge, mais nécessite plus de validation durant l'exécution de la transaction.

Algorithmes de Lectures Visibles

  1. Visible Reads (VR) : Cette nouvelle implémentation s'inspire des méthodes traditionnelles basées sur des verrous. Elle maintient des verrous sur les adresses mémoire, permettant une visibilité immédiate des lectures et écritures mais peut engendrer une surcharge supplémentaire à cause du suivi.

Évaluation Expérimentale

Pour évaluer l'efficacité de PIM-STM, divers benchmarks ont été développés. Ces benchmarks évaluent la performance sous différentes charges de travail, en se concentrant sur le Débit, les taux d'abandon et les temps de transaction globaux. Les benchmarks incluent :

  1. ArrayBench : Une configuration synthétique manipulant un tableau avec différents niveaux de contention.
  2. Linked-List : Une liste chaînée concurrente pour analyser les opérations d'ajout, de suppression et de contenu sous différents scénarios de contention.
  3. KMeans : Une adaptation de l'algorithme KMeans pour tester la performance sous diverses charges de travail en apprentissage machine.
  4. Labyrinth : Un benchmark pour évaluer les voies de routage sur une grille, fournissant des informations sur la gestion des transactions complexes.

Résultats de Performance

Métadonnées dans la MRAM

Quand les métadonnées sont stockées dans la MRAM plus lente, le débit varie en fonction de la charge de travail :

  • Dans des scénarios de faible contention, VR a bien mieux performé que les implémentations Tiny et NOrec, principalement grâce à sa gestion de verrou plus simple et à la réduction de l'overhead.
  • NOrec a montré les meilleures performances dans des scénarios de haute contention, où la réduction de l'overhead de gestion des verrous et des validations a aidé à maintenir le débit.

Métadonnées dans la WRAM

Stocker des métadonnées dans la WRAM plus rapide a conduit à des améliorations de performance notables dans tous les benchmarks. En général :

  • Les gains de vitesse sont beaucoup plus prononcés dans les charges de travail qui passent beaucoup de temps à exécuter des transactions.
  • Les avantages de l'utilisation de la WRAM l'emportent généralement sur les inconvénients de capacité limitée, permettant aux applications d'optimiser leur performance lorsqu'elles dépendent fortement des transactions concurrentes.

Considérations Énergétiques

En évaluant l'efficacité énergétique, on a trouvé des écarts entre les gains de performance et la consommation d'énergie :

  • Dans certains cas, un débit plus élevé a entraîné une consommation d'énergie accrue, suggérant que le système UPMEM n'est pas encore totalement optimisé pour l'efficacité énergétique.
  • Des améliorations attendues dans les futurs systèmes PIM aborderont ces problèmes, réalisant potentiellement de meilleures performances énergétiques sans sacrifier la vitesse.

Conclusions et Directions Futures

L'introduction de la bibliothèque PIM-STM offre une voie prometteuse pour améliorer la performance des systèmes de traitement parallèle. Les principales conclusions suggèrent que :

  • Aucune approche STM unique ne délivre les meilleurs résultats sur toutes les charges de travail. Le choix optimal dépend fortement des caractéristiques de la charge de travail et de la stratégie de gestion des données choisie.
  • La recherche future explorera des structures de données concurrentes non transactionnelles et leur distribution à travers plusieurs DPUs, étendant les capacités de PIM-STM et optimisant encore plus la performance.

En développant des solutions STM sur mesure pour le PIM, on ouvre la voie à de futures avancées dans l'informatique haute performance, en particulier dans les applications gourmandes en données.

Source originale

Titre: PIM-STM: Software Transactional Memory for Processing-In-Memory Systems

Résumé: Processing-In-Memory (PIM) is a novel approach that augments existing DRAM memory chips with lightweight logic. By allowing to offload computations to the PIM system, this architecture allows for circumventing the data-bottleneck problem that affects many modern workloads. This work tackles the problem of how to build efficient software implementations of the Transactional Memory (TM) abstraction by introducing PIM-STM, a library that provides a range of diverse TM implementations for UPMEM, the first commercial PIM system. Via an extensive study we assess the efficiency of alternative choices in the design space of TM algorithms on this emerging architecture. We further quantify the impact of using different memory tiers of the UPMEM system (having different trade-offs for what concerns latency vs capacity) to store the metadata used by different TM implementations. Finally, we assess the gains achievable in terms of performance and memory efficiency when using PIM-STM to accelerate TM applications originally conceived for conventional CPU-based systems.

Auteurs: André Lopes, Daniel Castro, Paolo Romano

Dernière mise à jour: 2024-01-17 00:00:00

Langue: English

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

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

Licence: https://creativecommons.org/licenses/by/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