Maison > Article > développement back-end > Pourquoi BLAS est-il tellement plus rapide que les implémentations de multiplication matricielle personnalisée ?
Comment BLAS atteint des performances exceptionnelles
Écart de vitesse impressionnant
Une comparaison entre une matrice personnalisée la mise en œuvre de la multiplication et BLAS révèlent une disparité de performances remarquable. BLAS exploite des techniques hautement optimisées pour dépasser considérablement les implémentations personnalisées.
Niveaux d'optimisation de BLAS
BLAS est structuré en trois niveaux en fonction de la portée des opérations :
Niveau 1 : Opérations vectorielles bénéficiant de la vectorisation et des capacités SIMD.
Niveau 2 : Opérations matricielles-vecteurs pouvant exploiter les architectures multiprocesseurs et la mémoire partagée.
Niveau 3 : Opérations matricielles qui effectuent un grand nombre d'opérations sur une quantité relativement petite de données. Ce niveau utilise l'optimisation du cache, améliorant considérablement les performances.
Implémentation et impact sur le compilateur
Contrairement à la croyance populaire, la plupart des implémentations BLAS hautes performances ne sont pas écrites en Fortran. Des bibliothèques comme ATLAS et OpenBLAS utilisent le C ou même l'assembleur pour les composants critiques en termes de performances. Fortran est principalement utilisé pour l'implémentation de référence et l'interface avec LAPACK.
Pourquoi les implémentations personnalisées échouent
Les implémentations personnalisées ne disposent généralement pas des techniques d'optimisation sophistiquées utilisées par BLAS. Plus précisément, ils ne parviennent souvent pas à tirer parti de l'optimisation du cache, qui contribue de manière significative aux performances exceptionnelles de BLAS.
Innovative BLIS Papers
Les progrès récents dans ce domaine sont mis en évidence dans le révolutionnaire BLIS. papiers. Ces articles donnent un aperçu des subtilités de l'optimisation BLAS et présentent une implémentation concise d'un produit matrice-matrice. Les variantes utilisant des éléments intrinsèques et du code assembleur améliorent encore les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!