【问题标题】:TensorFlow Bazel build failingTensorFlow Bazel 构建失败
【发布时间】:2017-03-26 03:26:29
【问题描述】:

按照 TensorFlow 'installing from sources' instructions 的指示,我正在使用 bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer 使用 Bazel 构建 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:  

...

堆栈:运行 Ubuntu 14.04.2 的 EC2 g2.8xlarge 机器。 Bazel 0.1.5 版(使用bazel-0.1.5-jdk7-installer-linux-x86_64.sh 安装)。

我已经尝试过 Bazel 0.1.4 和 0.2.3,但我得到了同样的错误。

【问题讨论】:

  • 我最近遇到了同样的错误。就我而言,我正在升级到 TensorFlow 7.1(从 6.0)。最后,我最终升级了 CUDA(从 7.0 到 7.5)和 cuDNN(从 v2 到 v4),这样我就不必从源代码构建了。 (我只是从源代码构建,因为 TensorFlow 7.1 期望找到 CUDA 7.5 而我只有 7.0。)无论如何,我知道这不是一个真正的答案,但取决于你想要完成的事情,也许类似的方法会起作用给你。
  • 我只是做了同样的事情。但我仍然希望能够从源代码构建!
  • 升级 CUDA/cuDDN 后,您是否尝试从源代码构建?我认为构建失败可能是与 CUDA 7.0 或 cuDNN pre-v4 不兼容的结果,但升级后我没有费心尝试从源代码构建。
  • 是的,我在升级后尝试构建,我得到了同样的错误。

标签: tensorflow bazel


【解决方案1】:

我在 Ubuntu 16.04 中构建 tensorflow 时遇到了同样的问题。

首先确保您使用的是 gcc 版本

就我而言,我必须安装它:

对于 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

对于 g++

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" }

【讨论】:

  • gcc 4.8.4 是否太高?我在 Ubuntu 14.04、Bazel 0.3.0、TensorFlow 0.8、aws g2.2xlarge 上遇到同样的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多