2019年3月6日 星期三

Ubuntu & Windows 編譯 TensorFlow

因為X5650不支援AVX指令集,
官方安裝最高版本只能用到TF1.5,
同事寫的code用到TF1.12的函式就不會動了,
所以逼不得已又要自己編譯...
TensorFlow版本 1.12
Ubuntu版本18.04 一開始用16.04 預設python3.5 先要自己升到3.6,然後各種折騰還是編不過
Bazel版本0.18.1 用0.19編不過... 另外Bazel編譯路徑不能有中文

編譯前要先卸載舊版TensorFlow
pip uninstall tensorflow

Ubuntu灌好後python就是3.6了,
之後照著(sudo自己加)
apt install python-minimal (雖然指定用python3編譯還是會用到python2的東西...)
apt-get install python3-numpy python3-dev python3-pip python3-wheel
pip3 install keras
atp-get install libc-ares-dev (編一半說缺這個套件,每人狀況不同?)

安裝Bezel
apt-get install openjdk-8-jdk
Bezel抓對應版本解壓縮後
chmod +x bazel-<version>-installer-linux-x86_64.sh
./bazel-<version>-installer-linux-x86_64.sh --user
開啟~/.bashrc 加入 export PATH="$PATH:$HOME/bin"
裝完後可以輸入bazel看有沒有成功

進入TensorFlow資料夾
./configure
會問各種問題,依實際需求修改
老機器不支援AVX,指定SSE4.2編譯(支援GPU加上--config=cuda)
bazel build -c opt --copt=-msse4.2 //tensorflow/tools/pip_package:build_pip_package
 建立pip套件
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
建完就可以安裝了
pip install /tmp/tensorflow_pkg/tensorflow-<version-tags>.whl

ref:
Build from source  |  TensorFlow 官方編譯指南
Installing Bazel on Ubuntu 官方安裝指南
TensorFlow GPU compile flags? - Stack Overflow CPU支援指令旗標
linux下编译mosquitto出现的问题---“ares.h: No such file or directory” 缺ares
How to uninstall Bazel · Issue #838 · bazelbuild/bazel · GitHub 移除Bazel  rm -fr ~/.bazel ~/.bazelrc
How to build and install TensorFlow GPU/CPU for Windows from source code using bazel and Python 3.6
Ubuntu 16.04 安装CPU版tensorflow - 简书
【完】tensorflow提示未编译使用SSE4.1,SSE4.2等问题的解决方法

190307 追記
編好後想在16.04上用,
執行會出 'GLIBC_2.27' not found 的error,
自己編譯升級做了兩次後都是Segmentation Fault進不去系統....放棄

ref:
Linux系统源代码升级glibc到最新版本2.25.90(正在开发的版本)
CentOS6升级glibc库过程(glibc2.14)
【TensorFlow】完美解决使用 TensorFlow 时报错 ImportError: /lib64/libc.so.6: version `GLIBC_2.XX' not found
升级glibc挂了后可以救命的命令^o^ 千万不要在生产环境中升级glibc!!!

Ubuntu工具
open-vm-tools-desktop
indicator-multiload

190812 update Windows 編譯
Python3.6 &必要套件(six numpy wheel keras_applications keras_preprocessing)
安裝VS2015 UP3(2017也行?)、C++轉發套件
安裝MSYS2,加入PATH,完成後執行pacman -S zip unzip patch diffutils git
bazel同樣 0.18.1,丟到MSYS2後改名為bazel
加入PATH
 BAZEL_SH C:\msys64\usr\bin\bash.exe
 BAZEL_VS C:\Program Files (x86)\{VS的位置}
 BAZEL_VC C:\Program Files (x86)\{VS的位置}\VC
安裝JAVA JDK 11(向下相容)
TF同樣 1.12,到TF目錄執行
python ./configure.py
會問各種問題,依實際需求修改
老機器不支援AVX,指定SSE4.2編譯
bazel build -c opt --copt=-msse4.2 //tensorflow/tools/pip_package:build_pip_package
建立pip套件
bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

ref
Build from source on Windows
Installing Bazel on Windows
windows下 使用bazel 编译tensorflow 1.12 dll tensorflow动态链接库编译

190816 編譯TF2.0-beta1
Bazel 0.26
CUDA 10 cuDNN 7.6

Error Loading Package @io_bazel_rules_docker
修改WORKSPACE加入io_bazel_rules_docker
nvcc error : 'cudafe++' died with status 0xC0000005 (ACCESS_VIOLATION)
CUDA10.1 cudafe++.exe 取代 10.0
複製後更名cudart64_.dll cudnn64_.dll

沒有留言:

張貼留言