C++の最近のブログ記事

Opp TensorFlow 2.16.2 Lite C++ library build.

Opp(Obstacl Path Planner) TensorFlow 2.16.2 Lite C++ library build.

TensorFlow 2.16.2 Lite C++ library build. の続き。

前回に続いて、今回は、本題の ROS2 自作 Turtlebot3 による 草刈りロボット開発。#9 LSTM で経路計画をする。
で作成した学習モデルを、C++ 及び ROS2 C++ で簡単に predict できるライブラリーを作成する。

環境
PC and Orange Pi 5 Armibian Jummy
Ubuntu 22.04
Tensorflow 12.6.2
ROS2 Humble

/home/nishi --> /home/your-id に変えとうせ。

1. ROS2 のプログラムから使える、opp_tflie.cpp を作成する。
ROS2 global costamap の一部を、cv::Mat に取り込んで、class Opp_Tflite に渡せば、
opp_with_lstm または、opp_with_transformer のモデルで、predict して、その結果を、
std::vector<u_int8_t> y_pred に返してくれるもので、これをライブラリとして使えるようにする。

1.1 ライブラリ libopp_tflite.a のビルド。

$ make -fMakefile-Archive-opp_tflite
$ make -fMakefile-Archive-opp_tflite install
$ make -fMakefile-Archive-opp_tflite clean

1.2 CMakeLists.txt で、
find_package(Tflite REQUIRED)
find_package(Opp_tflite REQUIRED)
をすれば、同じく簡単にリンケージができるようにします。
cmake/FindOpp_tflite.cmake

TensorFlow 2.16.2 Lite C++ library build.

TensorFlow 2.16.2 Lite C++ library build.

TensorFlow 2.16.2 Lite C++ library をソースからビルドしてみた。

ROS2 自作 Turtlebot3 による 草刈りロボット開発。#9 LSTM で経路計画をする。 で、Tensorflow Lite 用の a.model.tflite が出来たので、C++ から実行する事になるので、試してみた。

ソースのダウンロードは、TensorFlow 2.16.2 C++ library build と同じなので、そちらを参考にしてください。

環境:
PC and Orange Pi 5 Armibian Jummy
Ubuntu 22.04
Tensorflow 12.6.2
Bazel 6.4

参考にしたのは、
CMake を使用した TensorFlow Lite の構築

1. build
ソースが、
~local/tensorflow/tensorflow-2.16.2
に展開済みとします。
$ cd ~local/tensorflow/tensorflow-2.16.2
$ mkdir build-nishi
$ cd build-nishi
$ cmake ../tensorflow/lite
$ cmake --build . -j3

注) build-essential が必要。まだの場合は。
$ sudo apt install build-essential

これで、libtensorflow-lite.a が、カレントディレクトリーにできる。

TensorFlow 2.16.2 C++ library build for GPU.

TensorFlow 2.16.2 C++ library build for GPU.

TensorFlow 2.16.2 C++ library build の GPU対応版です。

1. 開発環境
PC: Ubuntu Mate 22.04
Virtual_env
python 3.10.12
bazel 6.4.0
clang-14(llvm-14) <--- NG
clang-17(llvm-17) <--- needed

GPU: GeForce GTX1070 Compute Capability 6.1
GPU 本体のドライバー
  nvidia-driver-525
GPUプログラム開発用のライブラリー群
 CUDA Toolkit 12.3
 cuDNN v8.9.6
Nvidia 提供のライブラリー
 TensorRT 8.6.1.6


1.1 ドライバーのインストールから、簡単におさらいする。
i) GPU 本体のドライバーをインストールする。
$ sudo apt install nvidia-driver-525

ii) GPUソフトウエア 開発用に、CUDA 12.3 を使うので、
CUDA Toolkit 12.3 を、Nvidia のサイトからダウンロード&インストールする。
google で、 CUDA Toolkit 12.3 を検索すると出てくると思う。

cuda-12-3-0-download-archive
Linux -> x86_64 -> Ubuntu -> 22.04 -> deb(network)
> Base Installer の欄を実行する。

/usr/local/cuda-12.3/ へ、インストールされる。
  include/cuda.h
  bin/nvcc <-- nvcc もある。

iii) cuDNN v8.9.6 for CUDA 12.x をダウンロード&インストールする。
注) $ sudo apt list 2>/dev/null | grep cudnn で、出てくれば、そちらがかんたん。
やり方は、上記と同じ。
cudnn-archive
-> Local Installer for Ubuntu22.04 x86_64 (Deb)

libcudnn8, libcudnn8-dev
インストール先は、/usr になる。
$ sudo dpkg -L libcudnn8-dev
/usr/include/cudnn.h
/usr/include/cudnn_version.h

iv) TensorRT 8.6.1.6 のインストール。
本当は、使いたくないが、configure で、指定しないと、うまくいかないので、使う。
注) $ sudo apt list 2>/dev/null | grep tensorrt で、出てくれば、そちらがかんたん。

TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz を、google で探して、
~/usr/local/share/ 下で展開しました。
/home/nishi/usr/local/share/TensorRT-8.6.1.6

注) ubuntu 24.04 の場合 の ii) - iv)
tensorflow 2.18.0 になるみたい。
NVIDIA Driver, CUDA, cuDNNのインストールをAPTでサクッと済ませる - Ubuntu Linux が参考になる。

ii) CUDA Toolkit 12.6 以降になる? 12.8 みたい。
CUDA Toolkit 12.8 Downloads
Linux -> x86_64 -> Ubuntu -> 24.04 -> deb(Network)
Base Installer を行う。

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
注) 12.6 、 12.8 の場合も同じ。

$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda-toolkit-12-8

iii) cudnn9.x.x になるのか?
$ sudo apt install cudnn9-cuda-12

iv) Tensor RT
$ sudo apt install tensorrt-dev
tensorrt-libs も必要か?

実際の中身は、一緒にインストールされる、付随パッケージの中にあるみたい。


$ sudo dpkg -L libnvinfer-headers-dev
/usr/include/x86_64-linux-gnu 下へ、header が入るみたい。

driver-525 への固定。
$ sudo apt-mark hold nvidia-driver-525
も必要か?


v) clang-17(llvm17) のインストール。(必須)
下記を参考にインストールする。
How to install Clang 17 or 16 in Ubuntu 22.04 | 20.04

$ wget https://apt.llvm.org/llvm.sh
$ chmod u+x llvm.sh
$ sudo ./llvm.sh 17

$ sudo apt list --installed >/dev/null | grep clang
$ dpkg -L clang-17

remove
$ sudo apt remove --purge clang-17
$ sudo apt autoremove --purge

もしかしたら、下記も必要かも?
$ sudo dpkg-reconfigure clang-14

下記は、参考にしたページの記載です。
$ sudo rm /etc/apt/sources.list.d/archive_uri-http_apt_llvm_org_*.list
sudo rm /etc/apt/trusted.gpg.d/apt.llvm.org.asc

TensorFlow 2.16.2 C++ library build

TensorFlow 2.16.2 C++ library build

TensorFlow 2.16.2 C++ library をソースからビルドしてみた。

ROS2 自作 Turtlebot3 による 草刈りロボット開発。#9 LSTM で経路計画をする。 で、最終的には、C++ から実行する事になるので、試してみた。

参考にしたのは、
ソースからビルドする
Ubuntu20.04 LTS上で、TensorFlow 2.3.1をソースからビルドし、C++言語の共有ライブラリを作成する
tensorflow 2.0 c++ apiをcmakeで利用する

1. 開発環境
PC: Ubuntu Mate 22.04
Virtual_env
python 3.10.12
bazel 6.4.0
llvm-14

追加パッケージのインストール。
下記エラーが出たので、


https://stackoverflow.com/questions/16661167/fatal-error-when-compiling-llvm-clang-cstddef-file-not-found より、
$ sudo apt install libstdc++-12-dev

このアーカイブについて

このページには、過去に書かれたブログ記事のうちC++カテゴリに属しているものが含まれています。

次のカテゴリはGPUです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ