¿Cómo construir y vincular bibliotecas BLAS y LAPACK manualmente para usarlas en un clúster?

¿Cómo construir y vincular bibliotecas BLAS y LAPACK manualmente para usarlas en un clúster?

Estoy haciendo uso de una función de pivote parcial llamada gesv. Para que las bibliotecas hicieran esto en C++ utilicé un comando de una línea deInstalación de paquetes BLAS y LAPACK.

sudo apt-get install libblas-dev liblapack-dev

Luego pude vincular las bibliotecas agregando lo siguiente a las instrucciones de compilación

g++ main.cpp -llapack -lblas

Obtuve una enorme velocidad en mi computadora portátil (Linux 2020), pero cuando comencé a ejecutar en un clúster, el método es extremadamente lento cuando ejecuto el mismo caso (grande). No creo que ambas bibliotecas estén instaladas en el clúster. El código se ejecuta, por lo que parece que el que proporciona el aumento de velocidad no está en el clúster que estoy usando.

¿Es posible construir y luego vincular las bibliotecas lapacky blas"manualmente" en lugar de ejecutar el apt-getcomando?

Gracias por tu tiempo.

Respuesta1

BLAS

  • Descargue la última versión de BLAS

  • Abre una terminal y ve al directorio donde lo tienes guardado

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

  • Descargue la última versión deLAPACK
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

Ahora que las bibliotecas se han creado y están almacenadas en path/to/lib, se puede compilar el breve código de ejemplo de la pregunta.

g++ main.cpp -L/path/to/lib -llapack -lblas -lgfortran  # compiles the code
./a.out  # runs the code

información relacionada