Math Kernel Library (mkl), une bibliothèque de matrices hautes performances conçue par Intel, est désormais disponible gratuitement. Je vais vous expliquer comment rendre cela disponible à partir de numpy. La cible est Linux (je suis Ubuntu 14.04).
Cliquez sur "cliquez ici maintenant pour vous inscrire et télécharger" sur le site suivant.
https://software.intel.com/en-us/articles/free_mkl
Entrez votre nom, votre adresse e-mail, le nom de votre entreprise, etc. Vous recevrez un e-mail d'inscription que vous pourrez suivre pour télécharger. Il n'y a pas de version Mac. C'est environ 1 Go. Notez la clé d'enregistrement dont vous aurez besoin lors de l'installation.
J'ai téléchargé l_mkl_11.3.0.109.tgz
Extrayez le fichier téléchargé. Puisqu'il contient «install.sh», exécutez-le. La destination d'installation est / opt / intel
par défaut, et vous serez invité à entrer la clé d'enregistrement en cours de route, alors entrez-la. (
Si vous ne souhaitez pas utiliser interactif, modifiez la partie suivante du fichier silent.cfg
dans le répertoire décompressé.
ACCEPT_EULA=accept
ACTIVATION_SERIAL_NUMBER=XXXX-XXXXXXXX
ACTIVATION_TYPE=serial_number
ʻInstall.sh -s silent.cfg` ne peut être installé que sur la ligne de commande.
Mettez LD_LIBRARY_PATH '' dans
/ opt / intel / mkl / lib / intel64``.
Pour les paramètres lors de l'installation de numpy, allez dans `` ~ / .numpy-site.cfg ''. Le modèle de ce fichier se trouve dans la source. https://github.com/numpy/numpy/blob/master/site.cfg.example Modifiez le fichier et conservez-le dans votre répertoire personnel. Le contenu est le suivant.
[mkl]
library_dirs = /opt/intel/mkl/lib/intel64/
include_dirs = /opt/intel/mkl/include
mkl_libs = mkl_rt
lapack_libs =
Pour plus de détails, consultez le site suivant. https://software.intel.com/en-us/articles/numpyscipy-with-intel-mkl
Dans cet état, pip install --no-binary: all: numpy
installera numpy en utilisant mkl sans permission. Si numpy est inclus à l'origine, désinstallez-le une fois.
Vous pouvez voir quelle bibliothèque de matrices vous utilisez en regardant `` numpy.show_config () ''. Il semble que Chainer fonctionne environ 1,5 fois plus vite qu'OpenBLAS lorsqu'il est exécuté à titre d'exemple.
$ python
>>> import numpy
>>> numpy.show_config()
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64/']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['/opt/intel/mkl/include']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64/']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['/opt/intel/mkl/include']
openblas_lapack_info:
NOT AVAILABLE
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64/']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['/opt/intel/mkl/include']
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64/']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['/opt/intel/mkl/include']
mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64/']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['/opt/intel/mkl/include']
Recommended Posts