使用替代BLAS for R有几个优点,参见例如https://cran.r-project.org/web/packages/gcbd/vignettes/gcbd.pdf
Microsoft R Open https://mran.revolutionanalytics.com/documents/rro/installation/#sysreq使用Intel的MKL而不是默认的Reference BLAS来加速计算。
我的问题是:
将英特尔MKL库**手动链接到R **在Windows上的最新版本(https://cran.r-project.org/bin/windows/base/)的确切步骤是什么?
更新20-07-2016: 下面是如何为R≥3.3.0为Windows构建基于OpenBLAS的64位R Rblas.dll的详细说明:http://www.avrahamadler.com/r-tips/build-openblas-for-windows-r64/
答案 0 :(得分:2)
我发现在Windows上如果在目录Program Files / R / R-3.3.3 / bin / x64中用你的Intel MKL counterpart覆盖文件Rblas.dll和Rlapack.dll,那么你将拥有多线程矩阵操作。对我来说,这通常会导致矩阵运算速度提高10倍,因此非常值得!如果这对您有用,请告诉我!
答案 1 :(得分:1)
仅尝试用于R 3.5.1安装。我与CRAN R一起安装了Microsoft R Open并复制libiomp5md.dll,并从MRO MKL对应者覆盖Rblas.dll,Rlapack.dll以链接到Windows上的CRAN R(类似于上面的另一个答案,但需要复制文件libiomp5md.dll以及)。根据Github(https://github.com/andrie/version.compare)上的version.compare包,这个工作很好,并且CRAN R的运行速度与MRO一样快。
答案 2 :(得分:0)
我能够将R 3.6.0与使用builder创建的自定义dll链接起来。基本上,您必须导出Rblas.dll
和Rlapack.dll
相同的符号。启动Compiler 19.0 Update 4 for Intel 64 Visual Studio 2017 environment
命令提示符:
获取符号:
dumpbin /exports Rblas.dll > Rblas_list
dumpbin /exports Rlapack.dll > Rlapack_list_R
编辑两个文件,删除“页眉”和“页脚”,并使所有带有符号名称(例如:248 F7 00138CE0 dgeevx_
)的行都像dgeevx_
(仅包含名称)。
将builder
目录复制到PC中的某个位置并在其中运行:
# blas links fine
nmake libintel64 export=..path..\Rblas_list name=Rblas
# save lapack errors in another list
nmake libintel64 export=..path..\Rlapack_list_R name=Rlapack 1> undefined_symbols_list
编辑undefined_symbols_list
仅在每行中保留名称并创建一个新
列出差异
findstr /v /g:undefined_symbols_list Rlapack_list_R > Rlapack_list
nmake libintel64 export=..path..\Rlapack_list name=Rlapack # this should link
使用dumpbin /dependents Rlapack.dll
,您可以看到它们取决于libiomp5md.dll
,
您可以在mkl安装的redist
文件夹中找到该文件。