首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R和nvblas.dynlib (在mac上)

R和nvblas.dynlib (在mac上)
EN

Stack Overflow用户
提问于 2015-01-27 20:10:15
回答 1查看 973关注 0票数 4

我通过克拉恩在我的mac上安装了R。我还通过自制安装了openblas。我可以在BLAS实现之间切换如下:

参考blas (我认为netlib):

代码语言:javascript
复制
ln -sf /Library/Frameworks/R.framework/Resources/lib/libRblas.0.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib

苹果公司( vecLib ):

代码语言:javascript
复制
 ln -sf /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Versions/Current/libBLAS.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib

openblas (通过自制提供):

代码语言:javascript
复制
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环境变量

代码语言:javascript
复制
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“:

代码语言:javascript
复制
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连接起来

代码语言:javascript
复制
ln -sf /usr/local/cuda/lib/libnvblas.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib

然而,当我启动R时,libRlapack.dylib似乎无法找到它所寻找的所有BLAS函数:

代码语言:javascript
复制
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一起正常工作吗?

相关错误可能是:

代码语言:javascript
复制
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:

代码语言:javascript
复制
otool -L /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib

产量:

代码语言:javascript
复制
/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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-06 19:11:08

我和你有同样的问题。在OSX下,重写库而不是替换R.framework中的库为我解决了这个问题:

代码语言:javascript
复制
$ DYLD_FORCE_FLAT_NAMESPACE=y DYLD_INSERT_LIBRARIES=/Developer/NVIDIA/CUDA-7.0/lib/libnvblas.7.0.dylib R
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28179093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档