HyperAIHyperAI

Command Palette

Search for a command to run...

Accélération ultrarapide de la décompression de données avec nvCOMP et le moteur de décompression Blackwell d’NVIDIA

La compression est une technique courante pour réduire les coûts de stockage et accélérer les transferts de données dans les bases de données, les communications entre centres de données, le calcul haute performance (HPC), l’apprentissage profond, et bien d’autres domaines. Toutefois, le décompresseur de ces données introduit souvent une latence et consomme des ressources calculatoires précieuses, ralentissant ainsi les performances globales. Pour relever ce défi, NVIDIA a introduit dans l’architecture Blackwell un moteur de décompression matériel (Decompression Engine, DE), associé à la bibliothèque nvCOMP. Ensemble, ils déplacent le traitement de la décompression hors du calcul généraliste, accélèrent les formats courants comme Snappy, et facilitent une adoption transparente. Le DE est un bloc matériel à fonction fixe conçu pour accélérer la décompression de flux Snappy, LZ4 et Deflate. En déléguant cette tâche au matériel, il libère les unités de traitement (SM) pour des opérations de calcul, plutôt que de les surcharger avec des opérations de déplacement de données. Intégré au moteur de copie, le DE élimine la nécessité de copier séquentiellement les données du host vers le device, puis de les décompresser en logiciel. Il permet désormais une décompression en transit, via PCIe ou C2C, réduisant ainsi un goulot d’étranglement majeur. Grâce à ce moteur, les travaux à haut débit peuvent exécuter en parallèle la décompression et le calcul. Les applications intensives en données — comme l’entraînement de grands modèles linguistiques, l’analyse de données génomiques massives ou les simulations HPC — peuvent maintenant tirer pleinement parti de la bande passante des GPU Blackwell sans être bloquées par les I/O. La bibliothèque nvCOMP fournit des routines accélérées par GPU pour la compression et la décompression. Elle prend en charge de nombreux formats standards, ainsi que des formats optimisés spécifiquement pour le GPU. Pour les formats standards, les CPU ou les blocs matériels fixes ont souvent un avantage architectural, mais le DE de Blackwell permet de surmonter cette limitation. Pour tirer parti du DE, les développeurs doivent utiliser les API nvCOMP. Comme le DE n’est disponible que sur certains GPU (B200, B300, GB200, GB300), nvCOMP assure la portabilité : si le DE est disponible, il est automatiquement utilisé ; sinon, la bibliothèque bascule vers des implémentations accélérées sur les SM. Pour garantir cette compatibilité, les tampons doivent respecter des contraintes strictes. Les allocations via cudaMalloc sont simples pour la décompression device-to-device. Pour les transferts host-to-device ou host-to-host, il faut utiliser cudaMallocFromPoolAsync ou cuMemCreate avec les indicateurs cudaMemPoolCreateUsageHwDecompress ou CU_MEM_CREATE_USAGE_HW_DECOMPRESS. Pour une performance optimale, les tampons dans un lot doivent provenir de la même allocation mémoire, afin d’éviter les surcoûts de lancement. De plus, les API asynchrones de nvCOMP synchronisent avec le flux appelant en raison des contraintes de synchronisation du DE. Les résultats sont disponibles en ordre de flux pour le GPU, mais une synchronisation explicite est nécessaire pour accéder aux données host. Sur le B200, toute mémoire supérieure à 4 Mo entraîne un retour à l’implémentation sur SM, une limite susceptible d’évoluer. Des mesures sur le benchmark Silesia montrent que le DE surpasse largement les SM en débit pour Snappy, LZ4 et Deflate, surtout pour des tailles de blocs de 64 KiB et 512 KiB. La version 5.0 de nvCOMP inclut une optimisation spécifique pour Snappy, avec des améliorations logicielles possibles pour les autres formats. En résumé, le moteur de décompression matériel de Blackwell, combiné à nvCOMP, transforme la gestion des données dans les applications intensives. Il accélère la décompression, libère les ressources GPU pour le calcul, et permet aux développeurs d’obtenir des performances optimales sans modifier leur code. Pour commencer, les développeurs peuvent exploiter les ressources disponibles sur NVIDIA Developer pour intégrer ces fonctionnalités dans leurs pipelines.

Liens associés