Почему R может быть позже связан с общим BLAS, даже если он был построен с помощью --with-blas = lblas?

Раздел BLAS в руководстве по установке и администрированию R говорит, что, когда R построен из источника, с параметром конфигурации --without-blasон создаст эталонную BLAS Netlib в отдельной общей библиотеке по адресу R_HOME/lib/libRblas.soвместе со стандартной R общей библиотекой R_HOME/lib/libR.so, Это облегчает пользователю переключение и тестирование различных настроенных BLAS в среде R. Руководство предполагает, что исследователь может использовать символическую ссылку на libRblas.so чтобы достичь этого, и эта статья дает более подробную информацию об этом.

Напротив, при простой установке предварительно скомпилированной двоичной версии R, либо из зеркал R CRAN, либо из репозитория Ubuntu (для таких пользователей Linux, как я), в теории должно быть сложнее переключаться между различными BLAS без перестройки R, потому что предварительно -компилированная версия R настроена с --with-blas = (some blas library), Мы можем легко проверить это, либо прочитав файл конфигурации по адресу R_HOME/etc/Makeconfили проверьте результат R CMD config BLAS_LIBS, Например, на моей машине это возвращает -lblas, так что он связан со ссылкой BLAS во время сборки. В результате нет R_HOME/lib/libRblas.so, только R_HOME/lib/libR.so,

Однако в этом R-блоге говорится, что можно переключаться между BLAS различий, даже если R не установлен из исходного кода. Автор попробовал ATLAS и OpenBLAS из репозитория Ubuntu, а затем использовать update-alternatives --config обойти. Также можно настроить и установить настроенный BLAS из исходного кода, добавить их в "альтернативы" через update-alternatives --install, а затем переключаться между ними таким же образом. Библиотека BLAS (символическая ссылка) в этом случае будет найдена на /usr/lib/libblas.so.3, который находится под Ubuntu и R's LD_LIBRARY_PATH, Я проверил, и это работает! Но я очень удивлен тем, как R достигает этого. Как я уже сказал, R должен был быть привязан к библиотеке BLAS, настроенной во время сборки, т. Е. Я ожидал бы, что все подпрограммы BLAS интегрированы в R_HOME/lib/libR.so, Так почему же все еще можно изменить BLAS через /usr/lib/libblas.so.3?

Спасибо, если кто-то может объяснить это.

0 ответов

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