Можно ли переключаться между библиотеками BLAS без перекомпиляции программы?

Например, я могу одновременно установить Atlas, OpenBlas, MKL на Ubuntu 14.04 и переключаться между ними без перекомпиляции Caffe?

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

Конечно, вы можете использовать свою собственную мягкую ссылку на ваши сборки библиотеки.

Другие вопросы по тегам