Skip to content

编译tensorflow

为什么我们要去编译tensorflow呢? pip安装不香么? 那是因为有些cpu的指令集可能和pip安装的tensorflow的不一致, 这个时候可能会出现core dump的问题, 因此我们需要从新编译tensorflow.

安装必要的依赖

假设我们已经安装了python:

配置pip源:

mkdir ~/.pip
echo "[global]" >>  ~/.pip/pip.conf
echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >>  ~/.pip/pip.conf
pip install  pip six numpy wheel setuptools mock future>=0.17.1
pip install  keras_applications==1.0.6 --no-deps
pip install  keras_preprocessing==1.0.5 --no-deps

安装java

apt-get install openjdk-8-jdk

如果安装oracle的jdk, 也可以下载oracle jdk对应的版本.

安装bazel

./root/data/bazel-0.20.0-installer-linux-x86_64.sh --user
echo 'export PATH=$PATH:/root/bin' >> /etc/profile
source /etc/profile

编译tensorflow

我们需要去git上把tensorflow的源代码给clone下来:

cd /thd
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout --track origin/r1.12
./configure

这时候会有一堆需要选项, 根据需要去选就可以了.

不过这时候可能会有cuda版本安装的问题, 因为tensorflow对于不同版本的cuda是有要求的, 因此我们需要安装多个版本的cuda.

apt-get install -y libreoffice-common freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev  
sh /root/data/cuda_9.0.176_384.81_linux.run

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64' >> /etc/profile
echo 'export PATH=$PATH:/usr/local/cuda/bin' >> /etc/profile
echo 'export CUDA_HOME=$CUDA_HOME:/usr/local/cuda' >> /etc/profile
rm -f /usr/local/cuda
ln -s /usr/local/cuda-9.0 /usr/local/cuda
source /etc/profile

下载对应版本的cuda安装就可以了.

cudann的安装非常简单, 下载下来按照要求安装就可以了.

下面就是对于tensorflow的编译:

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

编译完到/tmp/tensorflow_pkg中执行pip install 编译后的包名 就可以了.