【问题标题】:Compile r with mkl (With mulithreads support)使用 mkl 编译 r(支持多线程)
【发布时间】:2013-02-06 10:46:03
【问题描述】:
【问题讨论】:
标签:
multithreading
r
compilation
intel-mkl
【解决方案1】:
我想添加我的程序来用 MKL 库编译 R 3.0.1。我在核心 i7 英特尔处理器、8G RAM 上使用 Debian 7.0。首先我安装了 MKL 库,在我用这个命令设置了 MKL 相关的环境变量(MKLROOT 和 LD_LIBRARY_PATH)之后:
>source /opt/intel/mkl/bin/mklvars.sh intel64
所以我在./configure中使用了以下参数:
>./configure --enable-R-shlib --enable-threads=posix --with-lapack --with-blas="-fopenmp -m64 -I$MKLROOT/include -L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lpthread -lm"
并使用 make 和 make install 完成安装。
作为基准,我在没有 MKL 的情况下做了两个 5000 x 5000 矩阵产品之间的产品并得到:
用户系统已过
57.455 0.104 29.033
编译后:
用户系统已过
15.993 0.176 4.333
真正的收获!
【解决方案2】:
现在所有这一切都变得容易多了——简短的blog post is here 详细讨论了以下步骤。
但简而言之,您所需要的只是:
## get archive key
cd /tmp
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
## add MKL to apt's repo list
sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list'
## update and install (500+ mb download, 1.9gb installed)
apt-get update
apt-get install intel-mkl-64bit-2018.2-046
## make it system default via update alternatives
update-alternatives --install /usr/lib/x86_64-linux-gnu/libblas.so libblas.so-x86_64-linux-gnu /opt/intel/mkl/lib/intel64/libmkl_rt.so 50
update-alternatives --install /usr/lib/x86_64-linux-gnu/libblas.so.3 libblas.so.3-x86_64-linux-gnu /opt/intel/mkl/lib/intel64/libmkl_rt.so 50
update-alternatives --install /usr/lib/x86_64-linux-gnu/liblapack.so liblapack.so-x86_64-linux-gnu /opt/intel/mkl/lib/intel64/libmkl_rt.so 50
update-alternatives --install /usr/lib/x86_64-linux-gnu/liblapack.so.3 liblapack.so.3-x86_64-linux-gnu /opt/intel/mkl/lib/intel64/libmkl_rt.so 50
## tell ldconfig
echo "/opt/intel/lib/intel64" > /etc/ld.so.conf.d/mkl.conf
echo "/opt/intel/mkl/lib/intel64" >> /etc/ld.so.conf.d/mkl.conf
ldconfig
就是这样。没有其他的。不重新编译或链接。例如,R 现在显示在 sessionInfo() 中:
Matrix products: default
BLAS/LAPACK: /opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/lib/intel64_lin/libmkl_rt.so