3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Jetson AGX Xavier developer kit で aarch64 + Vulkan 開発環境を整える

Last updated at Posted at 2019-12-03

背景

Android + Vulkan 開発案件, aarch64 で機械学習やグラフィックス(可視化, レンダリング, 描画)開発案件などがある.
AWS などのクラウドでは, グラフィックスの確認が困難(画像を転送して手元で確認しなくてはならない).
エミュレータでは実行が遅すぎる.
性能のよい x86 でクロスコンパイルする手もあるが, いろいろなライブラリの cross-compile がめんどい.

RockPro64 は 4 core a72 + 2 core で CPU 性能はそこそこ良いが, Vulkan 対応していない(GLES も mesa の llvmpipe で CPU 実行?)
Raspberry Pi 4 も Vulkan 非対応(GLES は HW 対応らしいが).

いずれにせよ, 両者ともグラフィックス開発マシンとしてはメモリが少なく(4GB)コンパイルが out-of-memory でこけやすい.

Jetson AGX Xaviar developer kit は 8 core ARMv8.2(A72 相当?) + メモリ 16GB + Volta グラフィックス(Vulkan 対応)があるのでよい.

AGX Xavier の廉価版(?) Jetson Xavier NX が 2020/03 くらいから販売予定ですが, メモリ 8GB です.

そのうち RTX core 搭載 Xavier 出てほしいですね(優秀な小学生さま向けレイトレーシング学習キット用, リアルタイムレイトレーシングで自律運転用)

HW まとめ情報

利点

  • 8 core AARCH64 + 16 GB mem で開発(C++ コンパイル)が快適なことが予想される
  • Vulkan 1.1 が使える
  • 一応 NVIDIA が定期的にドライバアップデートなどしてくれているので, 2,3 年くらいは使えそう.
  • 2019/12/02 時点では, 税込み 10 万円以下で買えるので, 消耗品費として扱えよい.

欠点, 注意事項

セットアップ

初期状態では, 4 コアのみで有効クロック低め(1.2 GHz)なので, リミットを外します.

Jetson Xavier を動かしてみた。
http://takesan.hatenablog.com/entry/2018/09/13/233334

を参考にします.

$ sudo nvpmodel -m 0

# optional
sudo jetson_clocks

jetson_clocks は optional です. 設定すると最高性能モード(?)になるようですが, そのかわり URL 先のようにファンがうるさくなります.

nvpmodel -m 0 だけでもいいかもしれません. 冬場だとほんのりあったかで多少 Jetson 暖房としても活用できます.

Vulkan

vulkaninfo で version 1.1.70 でした.
また, vulkan-smoketest が動作するのを確認しました.
ただし, 使える NV 拡張はさほど多くはありません.

アップデート

そのままでは CUDA などが入っておらず, firmware も古いので,
開発を始める前にまずはアップデートをおすすめします.

GUI があるのでアップデートは楽です.
 
ただ, OS image をアップデートする場合, 内臓 disk 初期化されてしまいますのでご注意ください

コンパイル速度

embree-aarch64 を Release でコンパイルしてみました.

RockPro64 : 5 分ほど
AGX Xavier : 2 分ほど(4 コア低消費電力モードだと 10 分)

なかなか良いのではないでしょうか.
ちなみに Threadripper 1900X(8 cores)だと 42 秒でした.

NVMe 速度

Crucial SSD M.2 1000GB P1(1 TB. Gen3 x 4)を追加しました.

hdparm でテストしてみます.

$ sudo hdparm -t /dev/nvme0n1

/dev/nvme0n1:
 Timing buffered disk reads: 4038 MB in  3.00 seconds = 1345.92 MB/sec

1.3 GB/s でした. 仕様上は read 2 GB/s ですのでいくらか遅いようですが, 実務上は十分な速度かと思います. NVMe(SSD)に適した計測ツール変えたらより正確に速度を算出できるかもしれません.

TODO

  • 最新ドライバ, 最新 JetPack インストール
  • Sascha 先生の Vulkan サンプル https://github.com/SaschaWillems/Vulkan など, 各種 Vulkan アプリの動作検証
  • 今後のドライバアップデートで Vulkan cooperative matrix にもし対応したら, Vulkan から Tensor core を叩けるか試す
  • Jetson PyTorch(arm64 + CUDA 対応) を試す
    • とりあえず動くの確認しました.
  • PyTorch のコンパイルを試す
    • non-CUDA ビルドは確認しました.
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?