2019/10/20
Jetson Nano で TensorFlow の C 言語 API を使う
メモです。参考にしたページは下記の通り。TensorFlow の C言語用ライブラリを作るために実機上でビルドしています。
・TensorFlow: Build from source
・Building Tensorflow 1.13 on Jetson Xavier
・JK Jung's blog: Building TensorFlow 1.12.2 on Jetson Nano
bazel の install ができれば、あとは PC と同じように source からビルドできます。bazel の build も上記ページのスクリプトをそのまま利用させていただきました。
(1) 予め Jetson Nano に swap を設定しておきます。
・Jetson Nano関係のTIPSまとめ
・Setting up Jetson Nano: The Basics
(2) bazel を install します。
bazel の version は このページ下の表 に従い TensorFlow に合わせる必要があります。TensorFlow r1.12 の場合は 0.15.2 を使用します。こちら の script をそのまま利用させていただきました。
(3) TensorFlow の build
TensorFlow のソースを build します。ここ の情報に従い、若干ファイルを修正する必要があるようです。こちら の script を使うとビルド時にパッチを当ててくれます。
今回は C言語用 lib が欲しいので install_tensorflow-1.12.2.sh を下記のように修正します。
・「sudo apt-get」「sudo pip3」「bazel-bin」で始まる行をすべてコメントアウト。
・「bazel build」の実行を下記のように修正
↓
あとは script を実行すると $HOME/src/tensorflow-1.12.2 以下でビルドが行われます。
途中でエラーが出ても、$HOME/src/tensorflow-1.12.2/bazel-bin/tensorflow 以下に libtensorflow.so が出来ていれば成功です。lib とヘッダファイルは下記の場所にあるので、必要に応じて別の場所にコピーします。
あとは下記のような感じで使えるはずです。
関連ページ
・HYPERでんち: NVIDIA Jetson Nano
関連エントリ
・Jetson Nano / Clang の Version とコンパイル速度の比較
・TensorFlow: Build from source
・Building Tensorflow 1.13 on Jetson Xavier
・JK Jung's blog: Building TensorFlow 1.12.2 on Jetson Nano
bazel の install ができれば、あとは PC と同じように source からビルドできます。bazel の build も上記ページのスクリプトをそのまま利用させていただきました。
(1) 予め Jetson Nano に swap を設定しておきます。
・Jetson Nano関係のTIPSまとめ
・Setting up Jetson Nano: The Basics
(2) bazel を install します。
bazel の version は このページ下の表 に従い TensorFlow に合わせる必要があります。TensorFlow r1.12 の場合は 0.15.2 を使用します。こちら の script をそのまま利用させていただきました。
$ git clone https://github.com/jkjung-avt/jetson_nano.git $ cd jetson_nano $ ./install_bazel-0.15.2.sh
(3) TensorFlow の build
TensorFlow のソースを build します。ここ の情報に従い、若干ファイルを修正する必要があるようです。こちら の script を使うとビルド時にパッチを当ててくれます。
今回は C言語用 lib が欲しいので install_tensorflow-1.12.2.sh を下記のように修正します。
・「sudo apt-get」「sudo pip3」「bazel-bin」で始まる行をすべてコメントアウト。
・「bazel build」の実行を下記のように修正
bazel build --config=opt \
--config=cuda \
--local_resources=2048.0,1.0,1.0 \
//tensorflow/tools/pip_package:build_pip_package
--config=cuda \
--local_resources=2048.0,1.0,1.0 \
//tensorflow/tools/pip_package:build_pip_package
↓
bazel build --config=opt \
--config=cuda \
--config=monolithic \
--local_resources=2048.0,1.0,1.0 \
//tensorflow:libtensorflow.so
--config=cuda \
--config=monolithic \
--local_resources=2048.0,1.0,1.0 \
//tensorflow:libtensorflow.so
あとは script を実行すると $HOME/src/tensorflow-1.12.2 以下でビルドが行われます。
$ ./install_tensorflow-1.12.2.sh
途中でエラーが出ても、$HOME/src/tensorflow-1.12.2/bazel-bin/tensorflow 以下に libtensorflow.so が出来ていれば成功です。lib とヘッダファイルは下記の場所にあるので、必要に応じて別の場所にコピーします。
lib: $HOME/src/tensorflow-1.12.2/bazel-bin/tensorflow/libtensorflow.so include: $HOME/src/tensorflow-1.12.2/tensorflow/c
あとは下記のような感じで使えるはずです。
#include <tensorflow/c/c_api.h>
~
auto* graph= TF_NewGraph();
auto* option= TF_NewSessionOptions();
auto* status= TF_NewStatus();
auto* session= TF_NewSession( graph, option, status );
~
~
auto* graph= TF_NewGraph();
auto* option= TF_NewSessionOptions();
auto* status= TF_NewStatus();
auto* session= TF_NewSession( graph, option, status );
~
関連ページ
・HYPERでんち: NVIDIA Jetson Nano
関連エントリ
・Jetson Nano / Clang の Version とコンパイル速度の比較