Estou fazendo uso de uma função de pivotamento parcial chamada gesv
. Para fazer com que as bibliotecas fizessem isso acontecer em C++, usei um comando de uma linha deInstalando pacotes BLAS e LAPACK.
sudo apt-get install libblas-dev liblapack-dev
Então consegui vincular as bibliotecas adicionando o seguinte às instruções de compilação
g++ main.cpp -llapack -lblas
Obtive uma velocidade tremenda em meu laptop (Linux 2020), mas quando comecei a rodar em um cluster, o método fica extremamente lento ao executar o mesmo caso (grande). Não acho que ambas as bibliotecas estejam instaladas no cluster. O código é executado, então parece que aquele que fornece o aumento de velocidade não está no cluster que estou usando.
É possível construir e vincular as bibliotecas lapack
e blas
"manualmente" em vez de executar o apt-get
comando?
Obrigado pelo seu tempo.
Responder1
BLAS
Baixe a versão mais recente do BLAS
Abra um terminal e vá para o diretório onde você o salvou
tar -xvf blas-3.8.0.tgz # unzip the blas source files
cd BLAS-3.8.0/
make
mv blas_LINUX.a libblas.a
mv *.a path/to/lib # move the blas lib to the library you will be including at compile
LAPACK
- Baixe a versão mais recente doLAPACK
tar -xvf lapack-3.9.0.tar.gz
cd lapack-3.9.0/
cp make.inc.example make.inc # use example make as make
make
cp *.a path/to/lib
Agora que as bibliotecas foram construídas e armazenadas em path/to/lib
, o pequeno código de exemplo da pergunta pode ser compilado.
g++ main.cpp -L/path/to/lib -llapack -lblas -lgfortran # compiles the code
./a.out # runs the code