我通过克拉恩在我的mac上安装了R。我还通过自制安装了openblas。我可以在BLAS实现之间切换如下:
参考blas (我认为netlib):
ln -sf /Library/Frameworks/R.framework/Resources/lib/libRblas.0.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib苹果公司( vecLib ):
ln -sf /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Versions/Current/libBLAS.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylibopenblas (通过自制提供):
brew link openblas --force
ln -sf /usr/local/lib/libopenblas.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib在这三个选项中,openblas似乎是最快的选项(尽管vecLib是非常接近的第二个选项)。
然而,我想尝试更多的力量:

I 从NVIDIA安装CUDA 6.5。这将下载大量文件到/Developer/NVIDIA/,并将其中一些文件链接到/usr/local/cuda。我在~/.profile中设置了cuda环境变量
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib:$LD_LIBRARY_PATH"
export CUDA_ROOT="/usr/local/cuda/bin"
export CUDA_HOME="/usr/local/cuda"
export NVBLAS_CONFIG_FILE="/Users/me/nvblas.conf"然后,我使用以下条目创建了"/Users/me/nvblas.conf“:
NVBLAS_CPU_BLAS_LIB /usr/local/lib/libopenblas.dylib
NVBLAS_GPU_LIST ALL0
NVBLAS_TILE_DIM 2048
NVBLAS_AUTOPIN_MEM_ENABLED理论上,这应该将nvblas.dylib指向libopenblas.dylib,用于nvblas.dylib中不包含的BLAS函数。
到目前一切尚好。下一步是将R与nvblas.dylib连接起来
ln -sf /usr/local/cuda/lib/libnvblas.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib然而,当我启动R时,libRlapack.dylib似乎无法找到它所寻找的所有BLAS函数:
me:~ me$ R
[NVBLAS] Using devices :0
[NVBLAS] Config parsed
R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin13.4.0 (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/stats/libs/stats.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/stats/libs/stats.so, 6): Symbol not found: _dasum_
Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/lib/libRlapack.dylib
Expected in: /Library/Frameworks/R.framework/Versions/3.1/Resources/lib/libRblas.dylib
in /Library/Frameworks/R.framework/Versions/3.1/Resources/lib/libRlapack.dylib
During startup - Warning message:
package ‘stats’ in options("defaultPackages") was not found openblas本身工作得很好,并提供了R正在寻找的所有功能,所以我认为错误在于libnvblas.dylib没有正确地返回到libopenblas.dylib。
无论我将libnvblas.dylib指向哪个CPU BLAS (netlib、vecLib、openblas),都会发生这种情况。有人能帮我解决这个错误吗?还有什么需要添加到我的路径或链接中,才能让libnvblas.dylib在mac上与R一起正常工作吗?
相关错误可能是:
Symbol not found: _dasum_
Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/lib/libRlapack.dylib
Expected in: /Library/Frameworks/R.framework/Versions/3.1/Resources/lib/libRblas.dylib在我看来,nvblas并没有将_dasum_转发给openblas。
/edit:
otool -L /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib产量:
/Library/Frameworks/R.framework/Resources/lib/libRblas.dylib:
@rpath/libnvblas.6.5.dylib (compatibility version 0.0.0, current version 6.5.14)
@rpath/libcublas.6.5.dylib (compatibility version 0.0.0, current version 6.5.14)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.21.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)发布于 2015-06-06 19:11:08
我和你有同样的问题。在OSX下,重写库而不是替换R.framework中的库为我解决了这个问题:
$ DYLD_FORCE_FLAT_NAMESPACE=y DYLD_INSERT_LIBRARIES=/Developer/NVIDIA/CUDA-7.0/lib/libnvblas.7.0.dylib Rhttps://stackoverflow.com/questions/28179093
复制相似问题