在 CentOS 6.9 上安装 Tensorflow(GCC、GLIBC 和 binutils 问题)

在 CentOS 6.9 上安装 Tensorflow(GCC、GLIBC 和 binutils 问题)

我在 CentOS 6.9 上安装 Tensorflow 时遇到了巨大的麻烦。

我尝试按照使用 Anaconda3 在 CentOS 上安装 Tensorflow 的说明进行操作(当然对于 Python 3,确切地说是 Python 3.5.3)。除 Tensorflow 外,大多数软件包均已正确安装。我必须将 GCC 版本从 4.4.7 升级到 6.3.0 才能安装某些软件包,但 Python 屏幕上仍然显示 4.4.7。

无论如何,我确实按照说明安装了 Tensorflow,只是无法使用它,因为它抛出了此消息ImportError: /lib64/libc.so.6: version 'GLIBC_2.14' not found (required by /home/k/anaconda3/envs/h/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so)

因此,我尝试将 GLIBC 升级到比 2.14 新的版本,因此我将 binutils 升级到 2.25,因为 binutils 2.20 不会运行较新的 GLIBC 文件之一的配置。然而,我在配置 GLIBC 时遇到了另一个问题,它是过时的 Linux 版本。它需要 Linux 3.2.0,而我有 Linux 2.6。

这是我的约束。

  • 我无法更改 Linux 版本。它是一台服务器机器,我必须使用 CentOS 6.9 Linux。

这些是我想问大家的问题:

  1. 我很想将我的 GCC 版本从 6.3.0 更改为 5.0 ~ 5.2 之间的某个位置,因为显然 CUDA 8.0 不支持 5.3.1 之后的 GCC 版本。当我输入 时gcc --version,我看到 GCC 版本 6.3.0,但是当我进入 python 3 时,它显示了[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux。我该怎么办?

  2. 我想升级我的 GLIBC,以便它可以在我的平台上运行 Tensorflow。我相信我需要超越的 GLIBC 版本是 GLIBC_2.14,但我不确定这是否足以运行 Tensorflow。请帮助我升级 GLIBC,以便我可以在我的服务器上运行 Tensorflow。

  3. 为了完成上述任务,我需要哪个 binutil 包?我下载了 devtools-4-binutils 以获得最新的 binutils 软件包,但我担心最新的软件包可能与 Linux 2.6 版本不同步。

  4. 如果这些都不起作用,您能否告诉我如何将 GCC 重置回出厂版本 4.4.7,并将 binutils 重置回 2.20?如果我可以撤消对计算机应用的所有修改,我相信我将能够安装 GCC 版本 < 5.3.1 并为 Tensorflow 安装配置较新的 GLIBC。

答案1

我必须从源代码重建tensorflow pip 包才能使其在 CentOS 6 中工作,因为默认 pip 包以及使用 glibc 为 CentOS6 构建它存在一些基本问题。这是我根据它做的一份备忘录。 (注意我一个月前这样做了)

  1. 下载 bazel-4.5-dist.zip 并按照以下步骤进行安装,自 2017-09-04 起,较新版本的 bazel 无法运行

    ~$ cd  
    ~$ wget https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel-0.4.5-dist.zip  
    ~$ cd /usr/src  
    ~$ mkdir bazel-0.4.5-dist.zip  
    ~$ cd bazel-0.4.5-dist  
    ~# mv ~/bazel-0.4.5-dist.zip ./  
    ~# unzip bazel-0.4.5-dist.zip  
    ~# ./compile.sh
    
  2. 修改 ~/.bashrc 以激活 devtoolset-2 而不是 devtoolset-6。 Tensorflow 不会使用较新的 gcc 构建,最多只能使用 gcc 4

    在~/.bashrc中

    source /opt/rh/devtoolset-2/enable
    #source /opt/rh/devtoolset-6/enable
    
  3. 将tensorflow克隆到/usr/src中

    ~$ cd /usr/src  
    ~# git clone https://github.com/tensorflow/tensorflow
    
  4. 配置张量流

    ~$ cd tensorflow  
    ~# ./configure
    

对于除 CUDA 之外的所有支持选项,请选择“否”。其他一切都应该是默认的

  1. 转到 /usr/src/tensorflow/third_party/gpus/crosstool 修改 CROSSTOOL_clang.tpl 和 CROSSTOOL_nvcc.tpl 将以下行添加到标记为“工具链”的部分

    linker_flag : "-B/opt/rh/devtoolset-2/root/usr/bin"
    
  2. 构建张量流

    ~$ cd /usr/src/tensorflow  
    ~# bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    
  3. 创建pip包

    ~# bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    
  4. 安装自定义 pip 包

    ~# sudo pip install /tmp/tensorflow_pkg/tensorflow-1.3.0-cp34-cp34m-linux_x86_64.whl
    

相关内容