Wie verwende ich Octave aus Repositories mit auf meinem Computer kompiliertem OpenBLAS?

Wie verwende ich Octave aus Repositories mit auf meinem Computer kompiliertem OpenBLAS?

Es ist gewesenempfohlendass die Verwendung von Octave mit OpenBLAS, das auf meinem eigenen Computer kompiliert wurde (anstatt vorkompiliertem OpenBLAS aus Repositories), die Berechnungen schneller macht. Ich habe GNU Octave (4.2.2) aus Repositories mit apt installiert und die neueste Version von OpenBLAS vonhttps://www.openblas.net/.

Wie kann Octave dieses OpenBLAS verwenden?

Was ich bisher versucht habe.

Nachdem ich OpenBLAS kompiliert hatte, habe ich es in installiert opt/openblas.

Dann gab ich die Befehle ein

sudo update-alternatives --install /usr/lib/libblas.so libblas.so /opt/openblas/lib/libopenblas.so 50

sudo update-alternatives --install /usr/lib/libblas.so.3 libblas.so.3 /opt/openblas/lib/libopenblas.so 50

sudo update-alternatives --install /usr/lib/liblapack.so liblapack.so /opt/openblas/lib/libopenblas.so 50

sudo update-alternatives --install /usr/lib/liblapack.so.3 liblapack.so.3 /opt/openblas/lib/libopenblas.so 50

Anschließend habe ich die Verwendung des neuen OpenBLAS konfiguriert mit

update-alternatives --config libblas.so 
update-alternatives --config libblas.so.3 
update-alternatives --config liblapack.so 
update-alternatives --config liblapack.so.3 

Schließlich habe ich Octave mit dem neuen OpenBLAS ausgeführt, aber es trat dieser Fehler auf.

$ LD_PRELOAD=/opt/openblas/lib/libopenblas.so octave-cli
octave-cli: symbol lookup error: /usr/lib/x86_64-linux-gnu/libblas.so.3: undefined symbol: gotoblas

Antwort1

Ich würde empfehlen, mit allem aus dem Ubuntu-Repository zu beginnen. Als Erstes sollten Sie versuchen, libopenblas-basedas Paket zu installieren und es als Alternative zu BLAS und LAPACK bereitzustellen. So einfach geht das:

sudo apt-get install octave
sudo apt-get install libopenblas-base

Mit unseremTestskriptwir haben folgende Timings für Octave auf meinem i7-3537u:

  • 0,42 s - mit einfacher Vorgabe libblas3,liblapack3
  • 0,26 s - mit libopenblas-baseaus dem Repository

Wenn Sie es noch weiter optimieren möchten, kompilieren Sie OpenBLAS lokal wie folgt:

sudo apt-get build-dep libopenblas-dev

cd /tmp
apt-get source libopenblas-base
cd openblas-0.2.20+ds
DEB_CFLAGS_SET="-march=native -mtune=native" DEB_CFLAGS_SET="-march=native -mtune=native" dpkg-buildpackage  -uc -us -j8

sudo apt-get install ../libopenblas-base_0.2.20+ds-4_amd64.deb ../libopenblas-dev_0.2.20+ds-4_amd64.deb

Dadurch ändern sich die Benchmark-Ergebnisse wie folgt:

  • 0,25 s - mit libopenblas-baseselbst zusammengestellten

Daher ist es nicht sinnvoll, die optimierte Bibliothek mit zusätzlicher manueller Optimierung zu kompilieren.


Abschluss:Ich empfehle, zunächst Ihren Octave-Code zu optimieren, indem Sie For-Schleifen vermeiden und so weit wie möglich vektorisierte Funktionen verwenden. Dies wird die Leistung enorm steigern.

verwandte Informationen