Différences de performances entre ATLAS et MKL?

31

ATLAS est un remplacement BLAS / LAPACK gratuit qui s'accorde à la machine une fois compilé. MKL est la bibliothèque commerciale fournie par Intel. Ces deux bibliothèques sont-elles comparables en termes de performances, ou MKL a-t-il le dessus pour certaines tâches? Si oui, lesquels?

Stefano Borini
la source
4
Maintenant, il y a aussi OpenBLAS . Voir le benchmark vs MKL sur Sandybridge .
Mark Mikofski du

Réponses:

18

MKL (d'Intel) est optimisé pour les processeurs Intel et a probablement «l'avantage» dans de nombreux cas. Mais il est également "célèbre" pour avoir choisi les "pires" chemins de code pour les processeurs AMD, comme décrit ici .

Tommy
la source
13

BLAS n'est pas monlithique. BLAS1 et BLAS2 ont une bande passante mémoire limitée, et vous ne pouvez pas faire grand-chose pour les accélérer au-delà de l'évidence (déroulement de boucle, blocage du cache pour le niveau 2). BLAS3 est plus intéressant et la référence prototypique ici est la multiplication matrice-matrice. À ma connaissance, GOTOBlas a toujours été clairement le gagnant ici, voir par exemple cette comparaison ou celle-ci et cette justification .

C'est maintenant des années plus tard, et nous avons le projet BLIS . C'est la meilleure alternative gratuite à MKL.

Matt Knepley
la source
4
Matt a raison, mais le GotoBLAS n'est plus en cours de développement. Il fonctionne toujours assez bien pour certains processeurs modernes, mais le MKL le dépassera certainement pour DGEMM sur les futurs processeurs s'il ne le fait pas déjà. Nous ne l'avons pas testé sur Westmere, par exemple, mais je ne serais pas surpris si GotoBLAS a déjà perdu.
Bill Barth
2
Le Dr Goto a été acheté par M $. Tristesse . . .
meawoppl
2
OpenBLAS est le projet open source issu de GotoBLAS. github.com/xianyi/OpenBLAS
ShadowWarrior
Goto fonctionne maintenant sur MKL. Plus de tristesse :-)
Jeff
6

Profil, ne spéculez pas! (fonctionne également comme «Benchmark, ne spéculez pas!» )

Il n'y a rien de générique que l'on puisse dire, cela dépend fortement des tâches que vous souhaitez effectuer (BLAS 1/2/3, par exemple) et du matériel sur lequel vous vous trouvez (évidemment, Intel MKL ne fonctionne pas sur les processeurs ARM, par exemple). exemple; mais même parmi les processeurs Intel, vous pouvez vous attendre à des différences de performances).


Je pense qu'une autre chose mérite d'être mentionnée, c'est qu'AMD propose également des bibliothèques mathématiques adaptées à leurs processeurs, la bibliothèque mathématique AMD Core . Il n'est pas aussi riche en fonctionnalités que le MKL d'Intel, mais il inclut BLAS.

F'x
la source
Vrai. Il y a beaucoup de preuves anecdotiques (et de profilage réel) pour sauvegarder les autres réponses ici (comme en témoignent les liens). Cependant, votre kilométrage peut varier et il est toujours utile de profiler pour savoir que vous avez raison.
Geoff Oxberry
1
Il est cependant ennuyeux de profiler, car le MKL coûte 499 $. Cependant, ils offrent un essai d'un mois
Lyndon White
@LyndonWhite est-ce toujours le cas? La page de téléchargement semble montrer qu'elle est gratuite
Luciano
Oui, je crois que c'est maintenant gratuit, je vois beaucoup de gens l'utiliser maintenant.
Lyndon White
6

Les réponses précédentes à cette question ont couvert la plupart des points saillants, mais je voudrais ajouter un commentaire à ce sujet:

MKL a-t-il l'avantage sur certaines tâches?

L'équipe MKL est dans une position unique pour connaître les futurs jeux d'instructions Intel et leurs implémentations dans des processeurs spécifiques. De plus, ils ont accès à des simulateurs de processeur propriétaires et à du matériel de pré-production que personne en dehors d'Intel ne peut utiliser. Ainsi, MKL a le dessus en ce qui concerne le degré de connaissance des futurs produits et le moment où ils acquièrent cette connaissance. Ainsi, il ne devrait pas être trop surprenant s'ils produisent de meilleures implémentations du BLAS que quiconque, du moins au début de la vie d'un produit doté de nouvelles fonctionnalités.

D'un autre côté, Intel a été assez ouvert sur l'ensemble d'instructions AVX-512 et a fourni l' émulateur de développement logiciel Intel® (SDE) qui permet aux développeurs d'émuler des instructions AVX-512 sur des processeurs qui ne les prennent pas en charge de manière native. Pour cette raison, il ne sera pas trop surprenant que des implémentations open source de haute qualité du BLAS soient disponibles pour les processeurs Intel qui prennent en charge AVX-512 au début de la vie de ces produits.

Bien sûr, la différence que cela fait d'avoir des informations détaillées sur un processeur particulier par rapport aux principes fondamentaux des algorithmes d'algèbre linéaire dense n'est pas entièrement résolue. La citation suivante résout ce problème mieux que moi:

En théorie, il n'y a pas de différence entre la théorie et la pratique. Mais, en pratique, il y en a.

Divulgation complète: je travaille pour Intel.

Jeff
la source
Y a-t-il une chance d'avoir MKL open source?
Royi
Dans quel but? MKL est déjà gratuit comme dans la bière. La lecture du code source de BLIS a une valeur éducative bien plus grande. Si vous voulez lire l'assembly, essayez OpenBLAS.
Jeff
1

Je pense que la principale différence entre les bibliothèques BLAS des fournisseurs et les bibliothèques BLAS open source est le temps qu'il faut à l'open source pour prendre en charge les dernières fonctionnalités matérielles.

Étant donné que BLAS est largement utilisé, il est dans l'intérêt du fournisseur de prendre en charge les dernières fonctionnalités matérielles. Par exemple, considérons les extensions vectorielles AVX d'Intel qui ont été introduites avec le processeur "sandy-bridge" en janvier 2011. MKL avait le support AVX avant même que le CPU ne soit disponible, mais ce n'est que récemment qu'ATLAS (fin 2011) a commencé à déployer le support pour AVX .

De plus, si votre application a vraiment besoin de performances et avant de commencer à comparer différentes bibliothèques BLAS ou à commencer à pirater pour optimiser quoi que ce soit: profilez votre application. Il est courant que l'intuition humaine ne soit pas un prédicteur de profileur très efficace, du moins je sais que la mienne ne l'est pas! Ainsi, au lieu de passer du temps à optimiser au hasard, profilez votre application et abordez systématiquement chaque goulot d'étranglement.

fcruz
la source