编译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 编译后的包名 就可以了.