R и nvblas.dynlib (на Mac)
У меня R на моем Mac установлен через CRAN. У меня также есть openblas, установленный через доморощенный. Я могу переключаться между реализациями BLAS следующим образом:
Ссылка блас (нетлиб я думаю):
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 (предоставляется через homebrew):
brew link openblas --force
ln -sf /usr/local/lib/libopenblas.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib
Из 3-х вариантов openblas кажется самым быстрым (хотя vecLib - очень близкая секунда).
Тем не менее, я хочу попробовать больше силы:
Я установил CUDA 6.5 от NVIDIA. Это загружает кучу файлов в /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
В теории это должно указывать nvblas.dylib
вернуться к libopenblas.dylib
для функций BLAS, которые не включены в 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 указывает libnvblas.dylib
at (netlib, vecLib, openblas). Может кто-нибудь помочь мне разобраться с этой ошибкой? Что-нибудь еще, что я должен добавить к своему пути или ссылке, чтобы получить libnvblas.dylib
правильно работает с R на Mac?
Вероятно, соответствующая ошибка:
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.
/редактировать:
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)
1 ответ
У меня была такая же проблема, как и у вас. При переопределении OSX библиотека вместо замены библиотеки в R.framework решила проблему для меня:
$ DYLD_FORCE_FLAT_NAMESPACE=y DYLD_INSERT_LIBRARIES=/Developer/NVIDIA/CUDA-7.0/lib/libnvblas.7.0.dylib R