Можно ли переключаться между библиотеками BLAS без перекомпиляции программы?
3 ответа
Конечно, вы должны установить их и использовать команду выпуска Ubuntu/Debian
update-alternatives --config libblas.so.3
Вы получите нумерованный список альтернатив и сможете легко переключаться между ними.
Ссылка: https://wiki.debian.org/DebianScience/LinearAlgebraLibraries
Вы также можете сделать это без изменения общесистемных настроек, например, добавив библиотеку, которую вы хотите использовать в LD_PRELOAD
или же LD_LIBRARY_PATH
переменные среды Первая библиотека на этом пути будет той, которая используется для разрешения символов.
Например, вы можете запустить с
LD_PRELOAD=/path/to/blas/lib.so ./my_executable_using_caffe
Вы можете видеть, что этот подход был бы чрезвычайно полезен как часть сценария сравнения для различных реализаций, поскольку он не влияет на саму среду тестирования. Например (в bash):
my_libraries=/path/to/blas1.so /path/to/blas2.so
for lib in $my_libraries
do
LD_PRELOAD=${lib} ./my_executable_using_caffe
done
Этот подход, основанный на динамическом компоновке, применяется к любой другой разделяемой библиотеке, с которой ваша программа компилируется.
Да, ты можешь. Вам просто нужно использовать динамическое связывание библиотек. libblas.so.3
это мягкая ссылка на /etc/alternatives/libblas.so.3
Что в свою очередь указывает на BLAS
реализация библиотеки
Например, если вы устанавливаете Atlas
(sudo apt-get install libatlas3-base
):
/usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3
/etc/alternatives/libblas.so.3 -> /usr/lib/atlas-base/atlas/libblas.so.3
пока после установки Openblas
(sudo apt-get install libopenblas-base
):
/usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3
/etc/alternatives/libblas.so.3 -> /usr/lib/openblas-base/libblas.so.3
Конечно, вы можете использовать свою собственную мягкую ссылку на ваши сборки библиотеки.