Intel MKL ist eine von Intel entwickelte Hochgeschwindigkeitsbibliothek für die numerische Verarbeitung, die nur auf Intel-CPUs ausgeführt wird. Sie enthält lineare Algebra, FFT usw. Numpy / SciPy verwendet standardmäßig Openblas für lineare Algebra. Intel MKL ist schneller.
Der Inhalt dieses Artikels wurde mit Debian 10 (native / WSL) unter Verwendung von Python 3.8.0 überprüft. * Offiziell wird Debian nur für 8 oder 9 und Debian 10 nicht unterstützt. [Unter CentOS 7.7 Das Ergebnis wurde hinzugefügt. 2019-11-13]
Folgen Sie den Links "Auswählen und herunterladen", "Linux *", "Registrieren und herunterladen" von Intel MKL und geben Sie über das Formular Ihren Namen und Ihre E-Mail-Adresse ein. Füllen Sie die erforderlichen Elemente aus und senden Sie sie ab. Unmittelbar danach erhalten Sie einen Download-Link per E-Mail (die angehängte Datei enthält den Schlüssel, hat ihn jedoch nicht verwendet). Öffnen Sie den Link und wählen Sie den für Ihre Umgebung geeigneten aus und laden Sie ihn herunter.
Es gibt auch eine Option zur Installation mit apt oder yum. Ich persönlich denke jedoch, dass die eigenständige Version in Ordnung ist.
Die tgz-Datei wird heruntergeladen, entpackt und in sie verschoben. Dann finden Sie zwei Dateien darin, . / Install.sh
und. / Silent.cfg
. Einfach sudo ./install. Wenn Sie sh
ausführen, wird die interaktive Installation gestartet. Wenn Sie jedoch . / Silent.cfg
entsprechend umschreiben und sudo ./install.sh -s. / Silent.cfg
ausführen, wird die Installation automatisch durchgeführt. Werde gehen.
Gemäß dem Artikel So installieren Sie mkl numpy ist der Registrierungsschlüssel erforderlich, aber als ich ihn ausgeführt habe, wurde er nicht angefordert. Das Bearbeiten von . / Silent.cfg
muss also nur als ACCEPT_EULA = accept
umgeschrieben werden, ohne dass ein Feld für den Aktivierungsschlüssel erstellt wird.
Stellen Sie die erforderlichen Umgebungsvariablen um ~ / .profile
oder ~ / .bashrc
ein.
export MKL_ROOT_DIR=/opt/intel/mkl
export LD_LIBRARY_PATH=$MKL_ROOT_DIR/lib/intel64:/opt/intel/lib/intel64_lin:$LD_LIBRARY_PATH
export LIBRARY_PATH=$MKL_ROOT_DIR/lib/intel64:$LIBRARY_PATH
export PKG_CONFIG_PATH=$MKL_ROOT_DIR/bin/pkgconfig:$PKG_CONFIG_PATH
PKG_CONFIG_PATH
ist für den aktuellen Zweck nicht erforderlich, aber es ist nützlich, wenn Sie eine andere Intel MKL als Python verwenden möchten. Stellen Sie sie daher gleichzeitig ein.
Erstellen Sie zunächst eine Datei mit dem Namen "~ / .numpy-site.cfg" und schreiben Sie den folgenden Inhalt.
:.numpy-site.cfg
[mkl]
library_dirs = /opt/intel/mkl/lib/intel64/
include_dirs = /opt/intel/mkl/include
mkl_libs = mkl_rt
lapack_libs =
Installieren Sie dann mit pip. Um die Kompilierung zu erzwingen, anstatt Binärpakete herunterzuladen
$ pip install --no-binary :all: numpy
$ pip install --no-binary :all: scipy
Das Erstellen dauert lange (insbesondere SciPy, ca. 12 Minuten auf dem Desktop), sodass Sie geduldig warten müssen.
__ [Addition 2019-11-13] __ Als ich es unter CentOS 7.7 ausführte, war es so alt wie gcc 4.8 und ich musste den C99-Modus aktivieren. Sie können es wie folgt kennzeichnen.
$ CFLAGS="-std=c99" pip3 install --no-binary :all: numpy
$ CFLAGS="-std=c99" pip3 install --no-binary :all: scipy
$ python3.8
iPython 3.8.0 (default, Oct 15 2019, 23:02:58)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import numpy as np
>>> np.show_config()
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', 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), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/mkl/include']
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/mkl/include']
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/mkl/include']
>>>
>>> from scipy import show_config
>>> show_config()
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/mkl/include']
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', 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), ('HAVE_CBLAS', 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), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/mkl/include']
>>>
Recommended Posts