У меня есть R на моем Mac, установленном через CRAN. У меня также есть openblas, установленный через homebrew. Я могу переключаться между реализациями BLAS следующим образом:R и nvblas.dynlib (на mac)
Reference Блас (Netlib я думаю):
ln -sf /Library/Frameworks/R.framework/Resources/lib/libRblas.0.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib
vecLib (BLAS компании Apple):
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 является очень близким дир).
Однако, я хочу попробовать больше власти:
I installed CUDA 6.5 from 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
.
Это происходит независимо от того, что CPU BLAS I указывает libnvblas.dylib
на (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)
Хороший вопрос. Вы проверили 'otool -L/Library/Frameworks/R.framework/Resources/lib/libRblas.dylib'? –
@MaratTalipov Добавлен вывод. Не уверен, как интерпретировать. – Zach
Это всего лишь способ убедиться, что rBlas может видеть библиотеки, от которых он зависит. 'otool' скажет« не найден »в отношении отсутствующих библиотек. –