Como usar o Octave de repositórios com OpenBLAS compilados no meu computador?

Como usar o Octave de repositórios com OpenBLAS compilados no meu computador?

Tem sidosugeridoque usar o Octave com OpenBLAS compilado em meu próprio computador (em vez de OpenBLAS pré-compilado de repositórios) tornará os cálculos mais rápidos. Instalei o GNU Octave (4.2.2) a partir de repositórios usando o apt e compilei a versão mais recente do OpenBLAS emhttps://www.openblas.net/.

Como fazer o Octave usar este OpenBLAS?

O que eu tentei até agora.

Depois de compilar o OpenBLAS, instalei-o no formato opt/openblas.

Então eu digitei os 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

Então configurei para usar o novo OpenBLAS com

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

Finalmente executei o Octave com o novo OpenBLAS, mas recebi este erro.

$ 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

Responder1

Eu recomendaria começar com todo o material do repositório Ubuntu. A primeira coisa a tentar é instalar libopenblas-baseo pacote e permitir que ele forneça alternativas BLAS e LAPACK, tão simples quanto:

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

Usando nossoroteiro de testetemos os seguintes tempos para Octave no meu i7-3537u:

  • 0,42 s - com padrão simples libblas3,liblapack3
  • 0,26 s - com libopenblas-basedo repositório

Se você quiser otimizá-lo ainda mais - compile o OpenBLAS localmente:

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

E isso mudará os resultados do benchmark para:

  • 0,25 s - com libopenblas-baseautocompilado

Portanto, não é útil compilar a biblioteca otimizada com otimização manual adicional.


Conclusão:Vou recomendar primeiro otimizar seu código Octave, evitando loops for e usando funções vetorizadas tanto quanto possível. Isso aumentará tremendamente o desempenho.

informação relacionada