Ускорит ли установка BLAS/ATLAS/MKL/OPENBLAS пакет R, написанный на C/C++?

Я обнаружил, что использование одного из BLAS/ATLAS/MKL/OPENBLAS улучшит скорость в R. Однако улучшит ли он пакет R, написанный на C или C++? например, пакет R Glmnet реализован на FORTRAN, а пакет rpart R реализован на C++. Будет ли просто установка BLAS/...etc улучшать время выполнения? или нам нужно перестроить (создать новый код C) пакет на основе BLAS/... и т. д.?


person Tay Shin    schedule 01.05.2015    source источник
comment
Вы должны скомпилировать все против BLAS/ATLAS/MKL/OPENBLAS, то есть самого R, а также всех пакетов, которые необходимо скомпилировать.   -  person    schedule 01.05.2015
comment
Спасибо за комментарий Паскаль. Так будет ли улучшение скорости использования существующего пакета кода R C/C++, если я компилирую с BLAS/ATLAS и т.д.?   -  person Tay Shin    schedule 01.05.2015
comment
@Pascal: это неверно, и ниже я предоставил немного больше подробностей.   -  person Dirk Eddelbuettel    schedule 01.05.2015
comment
@DirkEddelbuettel Неверно только для Linux на основе Debian, верно?   -  person    schedule 01.05.2015
comment
Исправьте в каждой системе, где R создан для использования предоставленных системой LAPACK и BLAS. Я бы сказал почти все, кроме Windows.   -  person Dirk Eddelbuettel    schedule 01.05.2015


Ответы (1)


Часто указывается, в том числе в комментарии здесь, что «вы должны перекомпилировать R», чтобы использовать другую библиотеку BLAS или LAPACK. Это не правильно.

Вам не нужно перекомпилировать R при условии, что он собран с использованием версий общей библиотеки BLAS и LAPACK.

У меня есть пакет и виньетка на CRAN, в которых этот факт используется для создания системы сравнительного анализа, в которой различные BLAS и версии LAPACK синхронизируются друг с другом, просто устанавливая разные версии (одна команда в Debian/Ubuntu) и запуская тесты — это настолько просто, что может быть автоматизировано в таком пакете, как этот.

Результаты в этом пакете дадут представление о возможных различиях в скорости. То, как именно они сработают, зависит от вашего компьютера, ваших данных (размера), вашей проблемы и т. д. Но если, скажем, ваша проблема использует функции LAPACK, которые могут работать с преимуществами от многопоточности, тогда может помочь установка OpenBLAS. Это верно для любого пакета R, использующего LAPACK, поскольку они будут использовать ту же установку LAPACK, доступ к которой осуществляется через are, и их можно изменить.

person Dirk Eddelbuettel    schedule 01.05.2015
comment
Никогда не думал, что автор пакета gcbd прокомментировал здесь. Я прочитал виньетку и ваш пакет, прежде чем задать вопрос. Наверное, я не очень хорошо это понял. В любом случае, большое спасибо! :D - person Tay Shin; 02.05.2015