Сбой сборки TensorFlow Bazel

Я создаю TensorFlow с Bazel, используя bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer в соответствии с инструкциями TensorFlow инструкции по установке из исходников.

Я получаю следующую ошибку:

    ERROR: /home/ubuntu/tensorflow/tensorflow/stream_executor/BUILD:5:1: C++ compilation of rule '//tensorflow/stream_executor:stream_e
xecutor' failed: crosstool_wrapper_driver_is_not_gcc failed: error executing command third_party/gpus/crosstool/clang/bin/crosstool
_wrapper_driver_is_not_gcc -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -fPIE -Wall -Wunused-but-set-parameter -Wno-fr
ee-nonheap-object ... (remaining 87 argument(s) skipped): com.google.devtools.build.lib.shell.BadExitStatusException: Process exite
d with status 1.   

tensorflow/stream_executor/cuda/cuda_dnn.cc: In function 'cudnnConvolutionFwdAlgo_t perftools::gputools::cuda::{anonymous}::ToConvF
orwardAlgo(perftools::gputools::dnn::AlgorithmType)':                                                                              
tensorflow/stream_executor/cuda/cuda_dnn.cc:269:10: error: 'CUDNN_CONVOLUTION_FWD_ALGO_FFT' was not declared in this scope         
     case CUDNN_CONVOLUTION_FWD_ALGO_FFT:  

...

Стек: машина EC2 g2.8xlarge под управлением Ubuntu 14.04.2. Bazel версии 0.1.5 (устанавливается с bazel-0.1.5-jdk7-installer-linux-x86_64.sh).

Я пробовал Bazel 0.1.4 и 0.2.3 и получаю ту же ошибку.


person rafaelcosman    schedule 19.05.2016    source источник
comment
Недавно я столкнулся с точно такими же ошибками. В моем случае я обновлялся до TensorFlow 7.1 (с 6.0). В конце концов, я обновил CUDA (с 7.0 до 7.5) и cuDNN (с версии 2 до версии 4), чтобы мне не пришлось собирать исходный код. (Я собирал только из исходного кода, потому что TensorFlow 7.1 ожидал найти CUDA 7.5, а у меня была только 7.0.) В любом случае, я знаю, что это не совсем ответ, но в зависимости от того, чего вы пытаетесь достичь, возможно, аналогичный подход сработает. для тебя.   -  person Aenimated1    schedule 19.05.2016
comment
Я только что сделал то же самое. Но я все еще хотел бы иметь возможность строить из исходников!   -  person rafaelcosman    schedule 19.05.2016
comment
Вы пытались собрать из исходников после обновления CUDA/cuDDN? Я решил, что сбой сборки, вероятно, был результатом некоторой несовместимости с CUDA 7.0 или cuDNN pre-v4, но я не стал пытаться собирать из исходного кода после обновления.   -  person Aenimated1    schedule 19.05.2016
comment
Да, я пытался собрать после обновления и получил ту же ошибку.   -  person rafaelcosman    schedule 19.05.2016


Ответы (1)


У меня была такая же проблема при создании тензорного потока в Ubuntu 16.04.

Прежде всего убедитесь, что вы используете версию gcc ‹= 4.8.

В моем случае мне пришлось установить его, выполнив:

Для gcc

sudo apt-get install gcc-4.8
sudo update-alternatives --remove-all gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10

Для г++

sudo apt-get install g++-4.8
sudo update-alternatives --remove-all g++
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10

Как только у меня появилась правильная версия gcc и g++, мне пришлось отредактировать файл CROSSTOOL следующим образом:

gedit tensorflow_sources_folder/third_party/gpus/crosstool/CROSSTOOL

Поиск каждого вхождения этой конкретной строки:

tool_path { name: "gcc" path: "clang/bin/crosstool_wrapper_driver_is_not_gcc" }

И вставьте следующую строку прямо над ним:

cxx_flag: "-D_FORCE_INLINES"

Итак, результат должен быть:

cxx_flag: "-D_FORCE_INLINES"
tool_path { name: "gcc" path: "clang/bin/crosstool_wrapper_driver_is_not_gcc" }
person Martinez Mariano    schedule 02.06.2016
comment
gcc 4.8.4 слишком высок? Я получаю ту же ошибку с Ubuntu 14.04, Bazel 0.3.0, TensorFlow 0.8, aws g2.2xlarge - person Streblo; 27.06.2016