[PYTHON] Verwenden von Intel MKL mit NumPy / SciPy (Version November 2019)

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]

Intel MKL installieren

herunterladen

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.

Installation

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.

Umgebungsvariablen einstellen

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.

Installieren von NumPy und SciPy

Bauen

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

Funktionsprüfung

$ 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']
>>> 

Verweise

Recommended Posts

Verwenden von Intel MKL mit NumPy / SciPy (Version November 2019)
Verwenden Sie OpenBLAS mit numpy, scipy
Harmonischer Mittelwert von Python (mit SciPy)
Installieren Sie NumPy, SciPy, Matplotlib in OS X mit Homebrew (Stand November 2015).
Verwenden Sie BLAS / LAPACK mit mehreren Threads mit numpy / scipy
Ich möchte mkl mit numpy und scipy unter pyenv + Poesie verwenden
Beschleunigung der numerischen Berechnung mit NumPy / SciPy: Anwendung 2
[Rust / Python] Behandle Numpy mit PyO3 (Version August 2020)
Beschleunigung der numerischen Berechnung mit NumPy / SciPy: Anwendung 1
LPC mit Scipy
Versuchen Sie es mit scipy
ICA mit Scipy
CORDIC mit Scipy
FFT-Verarbeitung mit numpy und scipy bis Tiefpassfilter