Sous Linux le processus est infiniment plus simple et plus rapide.
Notre version de Linux: Ubuntu 16.04 LTS 64 bits. Ce qui suit doit être valable pour des distributions Linux de type Debian ou dérivées de celle-ci.
3.1- Installation des pré requis
3.1.1- OpenBLAS et compilateurs
Sur Linux on peut directement installer des binaires pour les librairies blas/lapack.
Pour compiler Numpy avec OpenBLAS, il faut installer les packages suivants (référence):
$ sudo apt-get install gcc gfortran python-dev libopenblas-dev liblapack-dev cython
3.1.2- Python
Dans mon cas il s’agit d’un environnement créé sous miniconda3 en python 3.7.5 (nommé labpy).
$ conda create –name labpy python=3.7.5
Pour la compilation de Numpy nous aurons besoin d’installer cython :
$ conda activate labpy
$ conda install cython
3.2- Compilation de Numpy avec OpenBLAS
Dans un dossier de travail :
$ cd Documents/Workdir
On clone les sources de Numpy :
$ git clone https://github.com/numpy/numpy.git
On se déplace dans le dossier créé :
$ cd numpy
On lance la compilation sans modifier quoi que ce soit aux sources :
$ conda activate labpy
$ python setup.py build
Les logs indiquent qu’openblas et openblas_lapack ont été détectés. Un sous dossier build est créé.
On créé une wheel d’installation de numpy+openblas :
$ python setup.py bdist_wheel
Un sous dossier dist est créé dans numpy, dans lequel on trouve notre wheel d’installation : numpy-1.19.0.dev0+4787918-cp37-cp37m-linux_x86_64.whl. La wheel pèse 11.3 Mo.
Il ne reste plus qu’à l’installer dans notre environnement de travail conda :
$ pip install /home/user/Documents/Workdir/numpy/dist/numpy-1.19.0.dev0+4787918-cp37-cp37m-linux_x86_64.whl
Vérification dans un nouveau terminal:
$ conda activate labpy
$ python
Python 3.7.5 (default, Oct 25 2019, 15:51:11)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.__config__.show()
blas_mkl_info:
NOT AVAILABLE
blis_info:
NOT AVAILABLE
openblas_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
NOT AVAILABLE
openblas_lapack_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
>>>
Résultat
Comme avec la version pc, une fois notre wheel numpy+openblas installée, le jeu fonctionne de manière bien plus fluide.
Wheel Numpy 1.19 compilée avec OpenBLAS pour Linux 64: Télécharger