Я пытаюсь настроить среду Python и TensorFlow с поддержкой CUDA на OSx 10.11.6.
Все прошло довольно гладко. Сначала я установил следующее:
- CUDA-7.5
- cuDNN — 5.1
Я убедился, что LD_LIBRARY_PATH и CUDA_HOME установлены правильно, добавив следующее в мой файл ~/.bash_profile:
export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$DYLD_LIBRARY_PATH"
export LD_LIBRARY_PATH="$CUDA_HOME/lib:$LD_LIBRARY_PATH"
export PATH="$CUDA_HOME/bin:$PATH"
Затем я использовал Brew для установки следующего:
- питон — 2.7.12_2
- базель - 0,3,2
- протобуф - 3.1.0
Затем я использовал Pip для установки только ЦП TensorFlow из: https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.11.0rc0-py2-none-any.whl
Я проверил проект Magenta с: https://github.com/tensorflow/magenta и запустил все протестировать с помощью:
bazel test //magenta/...
И все они прошли.
Все идет нормально. Поэтому я решил попробовать версию TensorFlow с поддержкой графического процессора и установил ее из: https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.11.0rc0-py2-none-any..whl
Теперь все тесты завершаются со следующей ошибкой:
import tensorflow as tf
File "/usr/local/lib/python2.7/site-packages/tensorflow/__init__.py", line 23, in <module>
from tensorflow.python import *
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
_pywrap_tensorflow = swig_import_helper()
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10): Library not loaded: @rpath/libcudart.7.5.dylib
Referenced from: /usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so
Reason: image not found
Таким образом, очевидно, что скрипт, запущенный из Bazel, не может найти библиотеку libcudart.7.5.dylib.
Я попытался запустить вычисления на GPU из Python без Bazel, и все вроде бы в порядке.
Я также создал тестовый сценарий и запустил его с помощью Bazel, и кажется, что каталог, содержащий библиотеку libcudart.7.5.dylib, доступен, однако LD_LIBRARY_PATH не установлен.
Я просмотрел документацию и нашел флаги --action_env и --test_env, но ни один из них на самом деле не устанавливает LD_LIBRARY_PATH для выполнения.
Это параметры, загруженные из файлов .bazelrc.
Inherited 'common' options: --isatty=1 --terminal_columns=80
Inherited 'build' options: --define=allow_oversize_protos=true --copt -funsigned-char -c opt --spawn_strategy=standalone
'run' options: --spawn_strategy=standalone
Как правильно сообщить Bazel о зависимостях времени выполнения?
ОБНОВЛЕНИЕ
Проблема, по-видимому, вызвана тем фактом, что команда «env» является частью цепочки выполнения и, похоже, очищает переменные окружения LD_LIBRARY_PATH и DYLD_LIBRARY_PATH. Есть ли обходной путь, отличный от отключения SIP?