Wenn Sie das Gefühl haben, dass Numpy und Scipy langsam sind, überprüfen Sie die Blas-Einstellungen. Die Umgebung, die ich ausprobiert habe, war Ubuntu 14.04.
Starten Sie zur Überprüfung Python
>>> import numpy
>>> numpy.show_config()
lapack_opt_info:
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
extra_compile_args = ['-msse3']
define_macros = [('NO_ATLAS_INFO', 3)]
blas_opt_info:
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
define_macros = [('NO_ATLAS_INFO', 3)]
Überprüfen Sie bei.
Als Ergebnis der Untersuchung kamen verschiedene Methoden heraus, beispielsweise die Verwendung von Update-Alternativen, die jedoch ein seltsames Verhalten aufwiesen. Daher wird die Methode zum direkten Festlegen von OpenBLAS und zum Kompilieren von Numpy als Memorandum bezeichnet.
--Verwenden von BLAS mit Ubuntu 14.04 (Link)
Installieren Sie Python-Dev und Gfortran als Vorbereitung, bevor Sie OpenBLAS installieren.
~$ sudo apt-get install git python-dev gfortran
Laden Sie OpenBLAS von git herunter und erstellen und installieren Sie es mit gfortran. Stellen Sie sicher, dass es in / opt / openblas /
installiert ist.
~$ git clone https://github.com/xianyi/OpenBLAS
~$ cd OpenBLAS
~$ make FC=gfortran
~$ sudo make PREFIX=/opt/openblas install
Stellen Sie danach den Pfad zu OpenBLAS ein. Es wird empfohlen, es in ~ / .bashrc
usw. zu beschreiben.
~$ export LD_LIBRARY_PATH=/opt/OpenBLAS/lib:$LD_LIBRARY_PATH
Bei Verwendung mit mehreren Benutzern
~$ sudo -s "echo '/opt/OpenBLAS/lib' > /etc/ld.so.conf.d/openblas.conf"
Nachdem die Einstellung abgeschlossen ist
~$ sudo ldconfig
Wird ausgeführt.
Laden Sie numpy von git herunter und beschreiben Sie die openblas-Einstellungen in site.cfg
~$ git clone https://github.com/numpy/numpy
~$ cd numpy
~$ cp site.cfg.example site.cfg
~$ vi site.cfg
Kommentieren Sie den folgenden Teil von site.cfg aus.
[openblas]
libraries = openblas
library_dirs = /opt/OpenBLAS/lib
include_dirs = /opt/OpenBLAS/include
Überprüfen Sie anschließend mit ~ $ python setup.py config
, ob die Einstellungsänderung erfolgreich ist.
openblas_info:
FOUND:
libraries = ['openblas', 'openblas']
library_dirs = ['/opt/openblas/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
FOUND:
libraries = ['openblas', 'openblas']
library_dirs = ['/opt/openblas/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
Nachdem Sie das oben Gesagte bestätigt haben, erstellen und installieren Sie mit ~ $ python setup.py build && python setup.py install
.
Überprüfen Sie die Geschwindigkeit mit Code hier. Die Anzahl der zu verwendenden Threads wird durch "OMP_NUM_THREADS" angegeben (das folgende Beispiel ist eine 5000 * 5000-Matrixberechnung).
~$ OMP_NUM_THREADS=1 python test_numpy.py
version: 1.12.0.dev0+3c394f7
maxint: 9223372036854775807
BLAS info:
* libraries ['openblas', 'openblas']
* library_dirs ['/opt/openblas/lib']
* define_macros [('HAVE_CBLAS', None)]
* language c
dot: 4.537050 sec
~$ OMP_NUM_THREADS=8 python test_numpy.py
version: 1.12.0.dev0+3c394f7
maxint: 9223372036854775807
BLAS info:
* libraries ['openblas', 'openblas']
* library_dirs ['/opt/openblas/lib']
* define_macros [('HAVE_CBLAS', None)]
* language c
dot: 1.855611 sec
Wenn Sie oben numpy installieren können, müssen Sie scipy nur mit pip installieren.
pip install scipy
Recommended Posts