Я использую функцию частичного поворота под названием 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