This is update from Install TensorFlow on ODROID-C2 to run Tensorflow 0.12 branch on ODROID-C2. Here is a steps to run tensorflow latest(around v0.12.1) only CPU build on ODROID-C2. Patches are more simple than past way.
In addition, I knew ODOROID-C2 can't run with 2GHz...
- http://forum.odroid.com/viewtopic.php?f=141&t=23044&start=50
- http://www.cnx-software.com/2016/08/28/amlogic-s905-and-s912-processors-appear-to-be-limited-to-1-5-ghz-not-2-ghz-as-advertised/
References
- http://cudamusing.blogspot.jp/2015/11/building-tensorflow-for-jetson-tk1.html
- https://github.com/samjabrahams/tensorflow-on-raspberry-pi
- https://github.com/tensorflow/tensorflow/issues/851
- https://github.com/tensorflow/tensorflow/issues/254
- https://github.com/bazelbuild/bazel/issues/1264
- https://github.com/bazelbuild/bazel/issues/1353
- https://github.com/bazelbuild/bazel/wiki/Building-with-a-custom-toolchain
- https://github.com/grpc/grpc-java/issues/2202#issuecomment-250764314
- http://www.yuthon.com/2016/12/04/Installation-of-TensorFlow-r0-11-on-TX1/
Contents
Use virtualenv to build modules.
- Build protobuf v3.0.2
- Build grpc-java compiler v1.0.3 with patch
- Build bazel v0.4.3 with patch
- Build tensorflow r0.12 branch
Pre Conditions
It is same as past environment See Install TensorFlow on ODROID-C2
virtualenv -p python3 --system-site-packages work
cd work
source bin/activate
Some Patches are uploaded https://github.com/neo-titans/odroid/tree/master/build_tensorflow
Build protobuf
See https://github.com/bazelbuild/bazel/tree/master/third_party/protobuf
git clone https://github.com/google/protobuf.git
cd protobuf
git checkout tags/v3.0.2
./autogen.sh
./configure --prefix=$(pwd)/../
make -j4
make install
cd ..
Build grpc-java compiler
See https://github.com/grpc/grpc-java/blob/v1.0.3/compiler
I build v1.0.3 with protoc(v3.0.2) which is installed under work/bin.
git clone https://github.com/grpc/grpc-java.git
cd grpc-java/
git checkout tags/v1.0.3
Patch
patch -p0 < ../../grpc-java.v1.0.3.patch
Build and install under bin directory
CXXFLAGS="-I$(pwd)/../include" LDFLAGS="-L$(pwd)/../lib" ./gradlew java_pluginExecutable -Pprotoc=$(pwd)/../bin/protoc
cp compiler/build/exe/java_plugin/protoc-gen-grpc-java ../bin/
cd ..
Build bazel
Buld bazel 0.4.3 with protoc and grpc-java
git clone https://github.com/bazelbuild/bazel.git
cd bazel
git checkout tags/0.4.3
patch -p0 < ../../bazel.0.4.3.patch
PROTOC=$(pwd)/../bin/protoc GRPC_JAVA_PLUGIN=$(pwd)/../bin/protoc-gen-grpc-java ./compile.sh
Copy bazel into bin
cp output/bazel ../bin/
cd ..
Build tensorflow
Get source 0.12 branch and build. It does not need patch so far. If you use tags/v0.12.1, you have to fix the zlib address.
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
cd tensorflow
git checkout origin/r0.12
Configure and build
PYTHON_BIN_PATH=$(pwd)/../bin/python PYTHON_LIB_PATH=$(pwd)/../lib/python3.5/site-packages \
TF_NEED_GCP=0 TF_NEED_CUDA=0 TF_NEED_HDFS=0 TF_NEED_OPENCL=0 ./configure
bazel build -c opt --local_resources 1536,0.5,1.0 --verbose_failures //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
cd ..
Finally install my build package and run example.
pip install /tmp/tensorflow_pkg/tensorflow-0.12.1-cp35-cp35m-linux_aarch64.whl
python lib/python3.5/site-packages/tensorflow/models/image/mnist/convolutional.py