4

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.dylibnvblas.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.dylibMac で 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)
4

1 に答える 1