¿Cómo usar Octave desde repositorios con OpenBLAS compilado en mi computadora?

¿Cómo usar Octave desde repositorios con OpenBLAS compilado en mi computadora?

Ha sidosugirióQue usar Octave con OpenBLAS compilado en mi propia computadora (en lugar de OpenBLAS precompilado desde repositorios) hará que los cálculos sean más rápidos. Instalé GNU Octave (4.2.2) desde repositorios usando apt y compilé la última versión de OpenBLAS desdehttps://www.openblas.net/.

¿Cómo hacer que Octave use este OpenBLAS?

Lo que he probado hasta ahora.

Después de compilar OpenBLAS, lo instalé en formato opt/openblas.

Luego ingresé los comandos.

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

Luego configuré para usar el nuevo OpenBLAS con

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

Finalmente ejecuté Octave con el nuevo OpenBLAS, pero obtuve este error.

$ 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

Respuesta1

Recomendaría comenzar con todo el material del repositorio de Ubuntu. Lo primero que debe intentar es instalar libopenblas-baseel paquete y permitirle que proporcione la alternativa BLAS y LAPACK, tan simple como:

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

Usando nuestroguión de pruebatenemos los siguientes tiempos para Octave en mi i7-3537u:

  • 0,42 s - con valor predeterminado simple libblas3,liblapack3
  • 0,26 s - libopenblas-basedesde el repositorio

Si desea optimizarlo aún más, compile OpenBLAS localmente de la siguiente manera:

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

Y esto cambiará los resultados de las pruebas comparativas a:

  • 0,25 s - con libopenblas-baseautocompilado

Por lo tanto, no es útil compilar la biblioteca optimizada con optimización manual adicional.


Conclusión:Recomendaré optimizar su código Octave primero evitando bucles for y usando funciones vectorizadas tanto como sea posible. Esto aumentará enormemente el rendimiento.

información relacionada