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 lapack
y blas
"manualmente" en lugar de ejecutar el apt-get
comando?
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