Y a-t-il un avantage à compiler LAPACK à partir de la source par rapport à l'installation du paquet préconstruit à partir d'Ubuntu?

13

Je sais qu'ATLAS est en mesure de s'optimiser pour la machine sur laquelle il est compilé et donc les avantages maximaux sont trouvés en compilant à partir de la source. Y a-t-il un avantage à compiler LAPACK à partir de la source? Il serait beaucoup plus facile d'installer simplement le package précompilé.

OSE
la source
Il peut être utile d'essayer cette technique pour voir pourquoi le temps est dépensé. J'ai trouvé que si je travaille beaucoup avec des matrices peu volumineuses, les routines de bibliothèque passent plus de la moitié de leur temps à classer leurs drapeaux de caractères d'entrée et d'autres classifications d'entrée, vous pouvez donc obtenir beaucoup d'accélération en augmentant la bibliothèque avec quelques routines bien choisies codées à la main.
Mike Dunlavey

Réponses:

9

OpenBlas est assez rapide, vous pouvez donc le lier à LAPACK. Avez-vous essayé la version précompilée de LAPACK / BLAS de votre fournisseur de CPU? Par exemple AMD ACML (gratuit) ou Intel MKL (gratuit sur linux pour une utilisation non commerciale et non académique)? Il vous suffit de décompresser et d'exécuter le fichier d'installation.

À mon avis, le seul avantage d'utiliser ATLAS est alors lorsque vous utilisez un processeur inhabituel. Sinon, utilisez celui du fournisseur de CPU. Il existe également des versions nVIDIA CUDA et AMD OpenCL vraiment rock.

EDIT: rappelez-vous que vous pouvez toujours construire un paquet Ubuntu DEB à partir de la source, ce qui est généralement beaucoup plus facile que de compiler un logiciel à partir de la source.

Misère
la source
Je pense que je vais suivre votre suggestion et installer MKL. Merci également pour le conseil sur la construction de packages DEB, je ne savais pas que c'était possible.
OSE
2
N'oubliez pas que vous devez configurer ld (éditeur de liens de bibliothèques dynamiques pour pouvoir trouver ces bibliothèques). BLAS et LAPACK d'Intel MKL sont dans le libmkl_rt.sofichier généralement liés en utilisant:-L/opt/intel/mkl/lib/intel64 -lmkl_rt
Misery
2
Il convient de souligner que la licence non commerciale d'Intel est devenue de plus en plus restrictive avec chaque version, au point où ils sont désormais très explicites quant à l'utilisation académique non couverte par celle-ci dès que vous obtenez de l'argent pour votre recherche.
Christian Clason
Oui, cela mérite d'être mentionné. Mais on peut le tester gratuitement:] Et si cela s'avère utile, ce n'est pas la chose la plus chère au monde.
Misery
7

Le package de référentiel n'est pas sûr à utiliser avec le threading en raison de la façon dont il a été compilé. J'ai signalé le bogue sur le forum Lapack , mais il faudra beaucoup de temps pour que des solutions de contournement ou des solutions pénètrent dans le référentiel. Si vous le compilez vous-même, assurez-vous d'ajouter le "-frecursive" à gfortran.

Victor Liu
la source
6

D'après mon expérience, la meilleure façon d'utiliser blas / lapack sur les versions récentes d'ubuntu est d'utiliser les openblas emballés.

Pour ce que ça vaut, j'utilise principalement blas / lapack via python numpy / scipy, et l'utilisation de openblas accélère une partie de l'algèbre linéaire comme 200x par rapport à la valeur par défaut. J'ai essayé d'utiliser ATLAS personnalisé, mais c'était une énorme douleur et je n'ai pas donné grand-chose, sinon une accélération par rapport à openblas, mais je l'ai peut-être mal fait.

tondeuse
la source