2015-05-01 6 views
3

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

+0

Вы должны скомпилировать все, что связано с BLAS/ATLAS/MKL/OPENBLAS, то есть с самим R, а также со всеми пакетами, требующими компиляции. –

+0

Спасибо за комментарий Паскаль. Так будет ли улучшение скорости использовать существующий пакет кода C/C++ R, если я компилирую BLAS/ATLAS и т. Д.? –

+0

@Pascal: Это неверно, и я привел немного более подробно ниже. –

ответ

8

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

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

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

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

+0

Никогда не думал, что автор пакета «gcbd» сделал комментарий здесь. Я прочитал виньетку и ваш пакет, прежде чем задать вопрос. Наверное, я не очень хорошо ее понял. В любом случае, большое спасибо! : D –