Как собрать Tensorflow 1.4 с CUDNN 5.0?

Пытаюсь установить Tensorflow 1.4 из исходников с CUDA 8.0 и CUDNN 5.0.5, на Centos 7. В документации указано, что он должен работать с CUDNN 3 и выше. Я работаю в виртуальной среде с Python 3.4.5, используя Bazel 0.7.0, с GCC 4.9. Во время настройки я установил версию CUDNN 5.0.5, и библиотека была найдена.

К сожалению, это не работает и заканчивается ошибкой, которая, по-видимому, указывает на то, что требуется CUDNN v6 (я могу ошибаться в причине ошибки).

Вот команда, которую я использую:

bazel build --config=opt --config=cuda --config=mkl //tensorflow/tools/pip_package:build_pip_packag

Вот ошибка:

ERROR: /home/localuser/tensorflow/tensorflow/stream_executor/BUILD:52:1: C++ compilation of rule '//tensorflow/stream_executor:cuda_platform' failed (Exit 1).
tensorflow/stream_executor/cuda/cuda_dnn.cc: In member function 'cudnnStatus_t perftools::gputools::cuda::wrap::WrapperShim__cudnnSetRNNDescriptor_v6::operator()(perftools::gputools::cuda::CUDAExecutor*, Args ...)':
tensorflow/stream_executor/cuda/cuda_dnn.cc:140:30: error: '::cudnnSetRNNDescriptor_v6' has not been declared
       cudnnStatus_t retval = ::__name(args...);                    \
                              ^
tensorflow/stream_executor/cuda/cuda_dnn.cc:235:3: note: in expansion of macro 'PERFTOOLS_GPUTOOLS_CUDNN_WRAP'
   __macro(cudnnSetRNNDescriptor_v6)                           \
   ^
tensorflow/stream_executor/cuda/cuda_dnn.cc:240:1: note: in expansion of macro 'CUDNN_DNN_ROUTINE_EACH_R5'
 CUDNN_DNN_ROUTINE_EACH_R5(PERFTOOLS_GPUTOOLS_CUDNN_WRAP)

Вот результат настройки (.tf_configure.bazelrc):

build --action_env PYTHON_BIN_PATH="/home/localuser/venvs/tensorflow14-opt/bin/python"
build --action_env PYTHON_LIB_PATH="/home/localuser/venvs/tensorflow14-opt/lib/python3.4/site-packages"
build --define PYTHON_BIN_PATH="/home/localuser/venvs/tensorflow14-opt/bin/python"
build --define PYTHON_LIB_PATH="/home/localuser/venvs/tensorflow14-opt/lib/python3.4/site-packages"
build --force_python=py3
build --host_force_python=py3
build --python_path="/home/localuser/venvs/tensorflow14-opt/bin/python"
test --force_python=py3
test --host_force_python=py3
test --define PYTHON_BIN_PATH="/home/localuser/venvs/tensorflow14-opt/bin/python"
test --define PYTHON_LIB_PATH="/home/localuser/venvs/tensorflow14-opt/lib/python3.4/site-packages"
run --define PYTHON_BIN_PATH="/home/localuser/venvs/tensorflow14-opt/bin/python"
run --define PYTHON_LIB_PATH="/home/localuser/venvs/tensorflow14-opt/lib/python3.4/site-packages"
build:gcp --define with_gcp_support=true
build:hdfs --define with_hdfs_support=true
build:s3 --define with_s3_support=true
build:xla --define with_xla_support=true
build:gdr --define with_gdr_support=true
build:verbs --define with_verbs_support=true
build --action_env TF_NEED_OPENCL="0"
build --action_env TF_NEED_CUDA="1"
build --action_env CUDA_TOOLKIT_PATH="/usr/local/cuda"
build --action_env TF_CUDA_VERSION="8.0"
build --action_env CUDNN_INSTALL_PATH="/usr/local/cuda-8.0"
build --action_env TF_CUDNN_VERSION="5.0.5"
build --action_env TF_CUDA_COMPUTE_CAPABILITIES="3.7,3.7,3.7,3.7"
build --action_env TF_CUDA_CLANG="0"
build --action_env GCC_HOST_COMPILER_PATH="/opt/rh/devtoolset-3/root/usr/bin/gcc"
build --config=cuda
test --config=cuda
build:opt --cxxopt=-march=native --copt=-march=native
build:mkl --define using_mkl=true
build:mkl -c opt
build:mkl --copt="-DEIGEN_USE_VML"
build:monolithic --define framework_shared_object=false
build --define framework_shared_object=true

Могу ли я что-нибудь сделать, чтобы установить TF 1.4 с помощью CUDNN 5?


person Baptiste Wicht    schedule 08.11.2017    source источник
comment
Я лично не пробовал это, но кажется, что его можно построить с помощью cuDNN 5. Не могли бы вы поделиться журналом ./configure?   -  person Smit Shilu    schedule 08.11.2017
comment
@SmitShilu Я добавил .tf_configure.bazelrc с информацией о настройке.   -  person Baptiste Wicht    schedule 09.11.2017


Ответы (3)


В примечаниях к выпуску Tensorflow r1.4 предлагается использовать cuDNN6. Вы можете найти всю информацию о выпуске здесь.

Все наши готовые двоичные файлы были созданы с использованием CUDA 8 и cuDNN 6. Мы ожидаем выпуска TensorFlow 1.5 с CUDA 9 и cuDNN 7.

До версии r1.4 cuDNN 5 работал нормально.

person Muhammad Hannan    schedule 09.11.2017
comment
Да, но они также предполагают, что компиляция из исходного кода должна работать с CUDNN 3 и выше. - person Baptiste Wicht; 09.11.2017

Проблема заключалась в ошибке в Tensorflow, где они действительно использовали функции CUDNN V6 в сборке V5. Теперь это исправлено путем применения PR #12355 к ветке 1.4 (только PR обратился к мастеру).

person Baptiste Wicht    schedule 09.11.2017
comment
Теперь вы умеете успешно строить? - person Muhammad Hannan; 09.11.2017
comment
@MuhammadHannan Да, как только я применил git к исходному коду, сборка прошла хорошо. - person Baptiste Wicht; 09.11.2017
comment
Я могу полностью поддержать этот ответ, у меня была такая же проблема при установке Tensorflow 1.4 с CUDA 8.0, CuDNN 5.1 в нашем кластере RHEL 7.4. Была такая же проблема, и это было ее исправлением. - person Fex; 13.11.2017

Некоторые модули в Tensorflow 1.4 плохо работали с библиотекой cuda, я рекомендую вам использовать более старую версию Tensorflow с 1.2.1 или 1.3. Меня устраивает.

person Vinh Trieu    schedule 09.11.2017