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