Как вручную создать и связать библиотеки BLAS и LAPACK для использования на кластере?

Как вручную создать и связать библиотеки BLAS и LAPACK для использования на кластере?

Я использую функцию частичного поворота под названием gesv. Чтобы заставить библиотеки сделать это в C++, я использовал однострочную команду изУстановка пакетов BLAS и LAPACK.

sudo apt-get install libblas-dev liblapack-dev

Затем я смог связать библиотеки, добавив следующее в инструкции по компиляции:

g++ main.cpp -llapack -lblas

Я получил колоссальное ускорение на своем ноутбуке (Linux 2020), но когда я начал работать на кластере, метод оказался чрезвычайно медленным при запуске одного и того же (большого) случая. Я не думаю, что обе библиотеки установлены на кластере. Код работает, так что похоже, что та, которая обеспечивает увеличение скорости, не находится на кластере, который я использую.

Можно ли создать и затем связать lapackбиблиотеки blas«вручную», а не выполнять apt-getкоманду?

Спасибо за ваше время.

решение1

БЛАС

  • Загрузите последнюю версию БЛАС

  • Откройте терминал и перейдите в каталог, где он сохранен.

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

ЛАПАК

  • Загрузите последнюю версиюЛАПАК
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

Теперь, когда библиотеки созданы и сохранены в path/to/lib, можно скомпилировать краткий пример кода в вопросе.

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

Связанный контент