Jetson Xavier NX セットアップ＋CUDAデモ

# はじめに

[Jetson Xavier NX](https://www.switch-science.com/catalog/6340/)が発売されました．

この記事ではJetson Xavier NX のセットアップから簡単な使い方を解説します．

以下のページおよび書籍を参考にしています．

- [Jetson Xavier NX Wiki](https://elinux.org/Jetson_Xavier_NX)
- [Getting Started With Jetson Xavier NX Developer Kit](https://developer.nvidia.com/embedded/learn/get-started-jetson-xavier-nx-devkit)
- [Jetson Nano超入門](https://www.amazon.co.jp/Jetson-Nano%E8%B6%85%E5%85%A5%E9%96%80-Japan-User-Group/dp/4800712513/ref=asc_df_4800712513/?tag=jpgo-22&linkCode=df0&hvadid=407550551951&hvpos=&hvnetw=g&hvrand=14832812729187699504&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009298&hvtargid=pla-1044960961872&psc=1&th=1&psc=1)

# 開封

外箱：

<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/ee3ae415-a655-46ee-0865-141f679c5f89.jpeg">

開封して内容物を確認します．Jetson Xavier NXモジュールと，スタートアップガイド，ACアダプタ，2本のケーブル，が同梱されています．

<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/fcd69ee8-a425-e9b7-b41e-44b7e5b73697.jpeg">

スタートアップガイドには，「テクニカルサポート，保証情報，ユーザーガイドについては[developer.nvidia.com/embedded/support](https://developer.nvidia.com/embedded/support)をご覧ください」とあるので，そちらを参照しながら準備を進めていきます．

## 1. イントロダクション

Jetson Xavier NXモジュールのコネクタやインタフェースの配置は[こちら](https://developer.nvidia.com/embedded/learn/get-started-jetson-xavier-nx-devkit)を参照してください．

Jetson Xavier NXのセットアップには，開発者キットのほかに以下が必要です．

- microSDカード（UHS-1対応, 16GB以上．16GBでは色んなことを試そうとしたときに全く足りなかったので，**64GBか128GBがコスパ的にオススメです**）
- キーボード,マウス
- モニタ（HDMIまたはDisplayPortで接続）
- microSDにイメージを書きこむためのPC（microSDと接続できる必要があります．PC側にコネクタがない場合，[メモリーカードリーダー](https://www.amazon.co.jp/3in1%E3%80%91%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%AB%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC-SD%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%BC%E3%82%AB%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC-USB%E3%83%9E%E3%83%AB%E3%83%81%E3%82%AB%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC-SD%E3%82%AB%E3%83%BC%E3%83%89%E4%B8%A1%E5%AF%BE%E5%BF%9C-Android%E5%AF%BE%E5%BF%9C%EF%BC%88%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF%EF%BC%89/dp/B07T1G1VLT/ref=sr_1_1_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1FHP76WPVH4Q1&dchild=1&keywords=%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%BC%E3%82%AB%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC&qid=1590657600&s=electronics&sprefix=memori%2Celectronics%2C242&sr=1-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUFJR1lJOU5TQjc0TkEmZW5jcnlwdGVkSWQ9QTA4MzQ2NTczRlM3UDA5NTI5QjRCJmVuY3J5cHRlZEFkSWQ9QUNBRjBXMUIyRjBIRiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=)があると便利です）

## 2. microSDへのイメージの書き込み

[こちら](https://developer.nvidia.com/embedded/learn/get-started-jetson-xavier-nx-devkit#prepare)にしたがって，[Jetson Xavier NX Developer Kit SD Card Image](https://developer.nvidia.com/jetson-nx-developer-kit-sd-card-image)をダウンロードし，イメージをmicroSDに書き込みます．

<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/17151525-a663-9fa2-2ef9-69134ffb0ad3.png">

microSDカードをJetson NXのスロットに差し込み，HDMIまたはDisplayPortでモニタと接続し，電源ケーブルを差し込むと，緑のランプが点灯してすぐに起動します．

最初に System Configuration をいくつか済ませる必要があります．

<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/42ec0fa3-3ebd-d5c5-aecc-b8943e4f2f55.jpeg">

ライセンスと規約についてチェックボックスを選択して次へ．

<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/5e127307-f7e0-a00c-7ee2-5199d303ab90.jpeg">

言語はEnglishを選択．

<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/7b82ad73-fe1a-5831-96ce-8c5bc80f7e62.jpeg">

キーボードは日本語配列を使っていたので Japanese - Japanese を選択しました．

あとはネットワーク設定をして，地域は東京を選択して，ユーザー設定を入力し，パーティションサイズを設定します．パーティションサイズはデフォルトの最大値で問題ありません．

初回起動時は下のような画面です．

<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/106b8af0-d044-238a-a806-a43878ffb2d7.png">

# 3. パワーモードの切り替え

右上の`MODE 10W 2CORE`をクリックして，`Power mode`からパワーモードが選択できます．

初期設定では`10W 2CORE`になっていますので，最もパフォーマンスの高い`15W 6CORE`にしておきます．

# 4. パッケージの更新

とりあえずパッケージを最新に更新します．

```
$ sudo apt update
$ sudo apt upgrade
```

# 5. メモリ, CPU, GPUの使用率を見る

`tegrastats`コマンドにより，メモリ, CPU, GPUの使用率など，現在のステータスを確認できます．



表示の意味は[こちら](https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3231/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/AppendixTegraStats.html)で解説されています．

### jtopコマンド

もう少し見やすくするために，[jetson-stats](https://github.com/rbonghi/jetson_stats)が便利です．

```:インストール
$ sudo apt install python-pip
$ sudo -H pip install jetson-stats
```

```:実行
$ sudo jtop
```

ここから先は，キーボードの`1`～`6`を選択することで，各種情報が参照できます．

### 1ALL

ボードに関するすべての情報が収集されています．CPU，メモリ，GPU，ディスク，ファン，jetson_clocks（CPUやGPUなど使えるものをすべて使ったうえで動作周波数を最大まで上げるコマンドの使用状況），NVPmodel（電力とCPUの利用に関する設定状況）など，すべてのステータス

![Screenshot from 2020-05-23 20-20-45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/49096a18-e064-98b4-0b53-e35cc40ed9e5.png)

### 2GPU

JetsonのリアルタイムのGPU負荷状況

![Screenshot from 2020-05-23 20-21-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/01edb89f-398b-02cf-31fb-39d3a367fed1.png)

### 3CPU

JetsonのリアルタイムのCPU負荷状況

![Screenshot from 2020-05-23 20-21-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/c3fc0f5d-7304-3f54-4363-d6648c7e4b55.png)

### 4MEM

リアルタイムのメモリチャートとスワップモニター

![Screenshot from 2020-05-23 20-21-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/9de32007-9685-97b5-acbf-898492af9f9c.png)

### 5CTRL

jetson_clocks，nvpmodelの設定，およびファンの有効/無効に関する情報．

![Screenshot from 2020-05-23 20-21-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/8dff7877-4271-5256-4447-03f514d0b750.png)

### 6INFO

ライブラリ, CUDA, シリアル番号, インターフェースなどに関するすべての情報

![Screenshot from 2020-05-23 20-21-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/13dea2af-2a6f-758c-3a28-617789794ae4.png)

# 5. CUDAのデモを動かしてみる

JetPackには，GPUを効率的に使うためのプラットフォームである`CUDA`が既にインストールされており，ここでは`CUDA`のサンプルファイルを実行します．

ホームティレクトリにサンプルファイルをコピー.

```
$ cp -a /usr/local/cuda-10.2/samples/ .
```

`~/samples/5_Simulations`ディレクトリ直下に，以下のフォルダが含まれており，これらがデモのファイルを含んでいます．

![Screenshot from 2020-05-28 18-40-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/e0122155-a606-f412-7f3c-8dd6994d035a.png)

### fluidsGL

ビルドして，`fluidsGL`のデモを実行してみます．

```
$ cd ~/samples/5_Simulations/fluidsGL
$ make
$ ./fluidsGL
```

![Screenshot from 2020-05-28 18-44-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/d0943747-fec9-7d14-716c-68ed994ea6a1.png)

左クリックしながらカーソルを動かすことで，流体のシミュレーションができます．

他のデモも同様に実行できますので，実行例をいくつか載せます．

### nbody

```
$ cd ~/samples/5_Simulations/nbody
$ make
$ ./nbody
```

![Screenshot from 2020-05-28 18-47-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/f9dd2cf6-e66b-9fe7-dde8-cbcab2b109ea.png)



### oceanFFT

```
$ cd ~/samples/5_Simulations/oceanFFT/
$ make
$ ./oceanFFT
```

![Screenshot from 2020-05-28 18-46-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/0fd36463-2a3c-e880-d231-42f9a1fa2cd7.png)


### smokeParticles

```
$ cd ~/samples/5_Simulations/smokeParticles/
$ make
$ ./smokeParticles
```

![Screenshot from 2020-05-28 18-54-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/948cfdb2-54b2-bcd4-e4d0-14b69a37a936.png)


### particles

```
$ cd ~/samples/5_Simulations/particles/
$ make
$ ./particles
```

![Screenshot from 2020-05-28 18-58-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/59fbda4e-a5b4-927d-8ecc-13ff5f8d99db.png)

# 最後に

セットアップから簡単なデモまでは以上です．

次回は[YOLOv4で物体検出](https://qiita.com/futakuchi0117/items/c26ade963d2e79d3f9cc)を行います．

# 免責

本記事の内容は個人的な主張であり，著者の属する企業・集団の公式見解ではありません．

掲載しているコードは著者のメモ程度で，動作を保証するものではありません．