L’interface de programmation d’application (API) DirectStorage de Microsoft promet d’améliorer l’efficacité des transferts de données GPU vers SSD pour les jeux dans un environnement Windows, mais Nvidia et ses partenaires ont trouvé un moyen de faire fonctionner les GPU de manière transparente avec les SSD sans API propriétaire. La méthode, appelée Big Accelerator Memory (BaM), promet d’être utile pour diverses tâches de calcul, mais elle sera particulièrement utile pour les charges de travail émergentes qui utilisent de grands ensembles de données. Essentiellement, à mesure que les GPU se rapprochent des CPU en termes de programmabilité, ils ont également besoin d’un accès direct aux grands périphériques de stockage.
Les unités de traitement graphique modernes ne sont pas réservées aux graphiques ; ils sont également utilisés pour diverses charges de travail lourdes telles que l’analyse, l’intelligence artificielle, l’apprentissage automatique et le calcul haute performance (HPC). Pour traiter efficacement de grands ensembles de données, les GPU ont besoin soit de grandes quantités de mémoire spéciale coûteuse (par exemple, HBM2, GDDR6, etc.) localement, soit d’un accès efficace au stockage à semi-conducteurs. Les GPU de calcul modernes disposent déjà de 80 Go à 128 Go de mémoire HBM2E, et les GPU de calcul de nouvelle génération étendront la capacité de mémoire locale. Mais la taille des ensembles de données augmente également rapidement, il est donc important d’optimiser l’interopérabilité entre les GPU et le stockage.
Il existe plusieurs raisons principales pour lesquelles l’interopérabilité entre les GPU et les SSD doit être améliorée. Tout d’abord, les appels NVMe et les transferts de données imposent une charge importante au processeur, ce qui est inefficace du point de vue des performances et de l’efficacité globales. Deuxièmement, la surcharge de synchronisation CPU-GPU et/ou l’amplification du trafic d’E/S limitent considérablement la bande passante de stockage effective requise par les applications avec d’énormes ensembles de données.
« L’objectif de Big Accelerator Memory est d’étendre la capacité de mémoire GPU et d’améliorer la bande passante d’accès au stockage efficace tout en fournissant des abstractions de haut niveau pour les threads GPU afin de faciliter l’accès à la demande et à grain fin aux structures de données massives dans la hiérarchie de la mémoire étendue. « , une description du concept par Nvidia, IBM et l’Université Cornell citée par The Register lit.
BaM permet essentiellement au GPU Nvidia de récupérer des données directement à partir de la mémoire et du stockage du système sans utiliser le processeur, ce qui rend les GPU plus autonomes qu’ils ne le sont aujourd’hui. Les GPU de calcul continuent d’utiliser la mémoire locale comme cache géré par logiciel, mais déplaceront les données à l’aide d’une interface PCIe, RDMA et d’un pilote de noyau Linux personnalisé qui permet aux SSD de lire et d’écrire directement dans la mémoire GPU en cas de besoin. Les commandes pour les SSD sont mises en file d’attente par les threads GPU si les données requises ne sont pas disponibles localement. Pendant ce temps, BaM n’utilise pas la traduction d’adresses de mémoire virtuelle et ne subit donc pas d’événements de sérialisation comme les échecs TLB. Nvidia et ses partenaires prévoient d’ouvrir le pilote pour permettre à d’autres d’utiliser leur concept BaM.
« BaM atténue l’amplification du trafic d’E/S en permettant aux threads GPU de lire ou d’écrire de petites quantités de données à la demande, comme déterminé par le calcul », lit-on dans le document de Nvidia. « Nous montrons que le logiciel d’infrastructure BaM exécuté sur des GPU peut identifier et communiquer les accès à grain fin à un débit suffisamment élevé pour utiliser pleinement les périphériques de stockage sous-jacents, même avec des SSD grand public, un système BaM peut prendre en charge des performances d’application compétitives. par rapport à une solution DRAM uniquement beaucoup plus chère, et la réduction de l’amplification des E/S peut apporter des avantages significatifs en termes de performances. »
Dans une large mesure, le BaM de Nvidia est un moyen pour les GPU d’obtenir un grand pool de stockage et de l’utiliser indépendamment du CPU, ce qui rend les accélérateurs de calcul beaucoup plus indépendants qu’ils ne le sont aujourd’hui.
Les lecteurs astucieux se souviendront qu’AMD a tenté de marier des GPU avec un stockage à semi-conducteurs avec sa carte graphique Radeon Pro SSG il y a plusieurs années. Alors que l’apport de stockage supplémentaire à une carte graphique permet au matériel d’optimiser l’accès à de grands ensembles de données, la carte Radeon Pro SSG a été conçue uniquement comme une solution graphique et n’a pas été conçue pour des charges de travail de calcul complexes. Nvidia, IBM et d’autres vont encore plus loin avec BaM.