Инструкции по компиляции R, OpenBLAS и связыванию R с OpenBLAS (GNU/Linux)
Я считаю, что вашей самой большой проблемой является привязка R к библиотеке OpenBLAS. Поэтому описанные ниже шаги помогут вам добиться успеха в этой ссылке.
Компиляция OpenBLAS
Первоначально загрузите исходные коды R и OpenBLAS (Open оптимизированная библиотека BLAS) в OpenBLAS. В каталоге файлов выполните следующие действия.
tar -zxvf OpenBLAS*
cd OpenBLAs*
make -j $nproc
sudo make install
export LD_LIBRARY_PATH=/opt/OpenBLAS/lib/
or
git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS*
make -j $nproc
sudo make install
export LD_LIBRARY_PATH=/opt/OpenBLAS/lib/
Примечание. Это ускорит компиляцию, используя все возможности вашего процессора. Чтобы узнать количество ядер, выполните: nproc
.
Компиляция Armadillo C++ с помощью OpenBLAS
Для тех, кто использует коды C++ в R с помощью библиотеки Rcpp, настройка Armadillo с помощью Библиотека OpenBLAS может оказаться полезной.
tar -xvf armadillo*
cd armadillo*
./configure -DCMAKE_PREFIX_PATH=/opt/OpenBLAS/lib/
cmake . -DCMAKE_PREFIX_PATH=/opt/OpenBLAS/lib/
make -j $nproc
sudo make install
Примечание. Дополнительные сведения о компиляции библиотеки Armadillo можно найти по адресу https://gitlab.com/conradsnicta/armadillo-code.
Компиляция R с помощью OpenBLAS
После компиляции OpenBLAS загрузите код R. Нет необходимости компилировать R для использования OpenBLAS, но компиляция языка может принести некоторые преимущества, которые могут быть незначительными в зависимости от того, что делается в R. . Таким образом, загрузите исходный код языка R.
Примечание. В моей операционной системе Arch Linux (OpenBLAS) был установлен в каталоге /opt
. Найдите каталог установки OpenBLAS в вашем дистрибутиве GNU/Linux.
В каталоге, в который был загружен R, выполните следующие действия:
tar -zxvf R*
cd R-* && ./configure --enable-R-shlib --enable-threads=posix --with-blas="-lopenblas -L/opt/OpenBLAS/lib -I/opt/OpenBLAS/include -m64 -lpthread -lm"
make -j $nproc
sudo make install
Скорее всего, библиотека OpenBLAS будет привязана к R. Чтобы проверить, запустите в R код sessionInfo()
. Должно появиться что-то вроде вывода ниже:
Matrix products: default
BLAS/LAPACK: /opt/OpenBLAS/lib/libopenblas_haswellp-r0.3.6.dev.so
Если связывание не происходит, выполните шаги, описанные в приведенном ниже коде.
Нам нужно связать R с файлом libopenblas_*
, созданным в процессе компиляции библиотеки OpenBLAS. В моем случае это файл ibopenblas_haswellp-r0.2.20.so. Найдите это в /opt/OpenBLAS/lib
или в каталоге, где был установлен OpenBLAS в вашей системе GNU/Linux. Также найдите каталог с файлами libRblas.so в R strong> каталог установки языка. В Arch это каталог /usr/local/lib64/R/lib
.
cd /usr/local/lib64/R/lib
mv libRblas.so libRblas.so.keep
ln -s /opt/OpenBLAS/lib/libopenblas_haswellp-r0.2.20.so libRblas.so
Начните раздел языка R и выполните sessionInfo()
. Вы должны отметить что-то вроде:
Matrix products: default
BLAS/LAPACK: /opt/OpenBLAS/lib/libopenblas_haswellp-r0.3.6.dev.so
Чтобы использовать многопоточную обработку, выполните export OPENBLAS_NUM_THREADS=1
перед запуском раздела R. .
ПРИМЕЧАНИЕ. Для процессоров Intel sudo cpupower frequency-set -g performance
может повысить производительность. Подробнее читайте на странице https://wiki.archlinux.org/index.php/CPU_frequency_scaling. .
person
Pedro Rafael
schedule
25.02.2019