CRAN経由で Mac に R をインストールしました。homebrewを介して openblas もインストールしています。次のように BLAS 実装を切り替えることができます。
参照blas(私が思うnetlib):
ln -sf /Library/Frameworks/R.framework/Resources/lib/libRblas.0.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib
vecLib (Apple の BLAS):
ln -sf /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Versions/Current/libBLAS.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib
openblas (自作で提供):
brew link openblas --force
ln -sf /usr/local/lib/libopenblas.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib
3 つのオプションのうち、openblas が最速のオプションのようです (ただし、vecLib は 2 番目に非常に近い)。
ただし、もっと力を試したい:
NVIDIA の CUDA 6.5をインストールしました。これにより、一連のファイルが にダウンロードされ/Developer/NVIDIA/
、それらの一部が にリンクされ/usr/local/cuda
ます。cuda環境変数を次の場所に設定しました~/.profile
:
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
理論的には、これはに含まれていない BLAS 関数をnvblas.dylib
指すはずです。libopenblas.dylib
nvblas.dylib
ここまでは順調ですね。次のステップは、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
。
これは、BLAS I が指している CPU libnvblas.dylib
(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 が openblas に転送していないように見え_dasum_
ます。
/編集:
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)