Jetson NANO B01の基本的な環境構築


前回に続き、Jetson NANOの環境構築についてです。
このページを見て頂ければ、最低限の環境設定と構造を理解することができます。

#GPUとCPUの使用について
Jetson Nanoといえば、Raspiと比較すると料金が高めの設定になっていますが、それはGPUが組み込まれているからです。GPUは、CPUと違い並列処理に特化しているため高速にプログラムを処理することができます。また、プログラムを実行しているときに、本当にGPUを使用しているか確認する必要があります。

GPUやCPU等のJetson Nanoのステータスを確認できるコマンドがPython3にて実装されているため、以下に使用方法を記載します。
まず、Python3が導入されているか確認します。

```
jetson-nano@jetsonnano-desktop:~$ python3 -V
Python 3.6.9
```

次に、以下のモジュールをインストールし、"jtop"コマンドを実行します。

```
sudo pip3 install jetson-stats
sudo jtop
```
"jtop"を実行すると、CPU/GPU、メモリなど様々なものを確認することができます。
また、"2"を押すことでGPUの状態のみを確認することができます。
![Screenshot from 2020-05-09 21-28-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396218/48c97e48-cc99-7952-cb01-56bd705c2c04.png)
![Screenshot from 2020-05-09 21-28-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396218/b989d1f9-49e7-9ee8-0ba3-abc5f4f36962.png)

また、"tegrastats"コマンドでもステータスを確認できますがわかりづらいのでおすすめはしません。

```
jetson-nano@jetsonnano-desktop:~$ tegrastats
RAM 2136/3964MB (lfb 107x4MB) SWAP 0/8126MB (cached 0MB) CPU [19%@307,14%@307,16%@307,12%@307] EMC_FREQ 0% GR3D_FREQ 7% PLL@24C CPU@27.5C iwlwifi@30C PMIC@100C GPU@25C AO@35.5C thermal@26.5C POM_5V_IN 1935/1935 POM_5V_GPU 80/80 POM_5V_CPU 282/282
```

※注意※
Jetson Nanoには、5Wと10Wの2種類の電源モードがあります。
5Wで動作している場合、CPUは4コアのうち2コアしか動作せず、CPU3とCPU4が"OFF"となります。
![Screenshot from 2020-05-09 21-41-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396218/999c4a4c-51ba-d94d-61df-869df082088f.png)


#10Wで起動するためには

以下のコマンドを実行することで、10Wモードに切り替えることができます。

```
sudo nvpmodel -m 0
```

画面右上に、消費電力が表示されているため変更後は"5W"から"MAXN"となります。
初期設定はどっちの仕様か忘れましたが、crontab等にて起動時に実行するようにすると良いと思います。

![Screenshot from 2020-05-09 21-57-45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396218/b909c284-a289-78c4-6cb9-eefb6091e0a0.png)


#SWAPの拡張について
初期設定のSWAPサイズは"2GB"となっており、少ないため拡張します。
実際は、手動にて全て設定が良いのですが、公開してあったプログラムを使用しました。
※AIのモデルを読み込む時など、メモリ( 基本(4GB) + SWAP(2GB))使用します。

```
jetson-nano@jetsonnano-desktop:~/installSwapfile$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        1.8G        1.7G         25M        326M        2.3G
Swap:          1.9G        794M        1.2G
```

以下に手順を記載します。

```
git clone https://github.com/JetsonHacksNano/installSwapfile
vi ./installSwapfile/installSwapfile.sh 

※現在のSWAPサイズ+指定したサイズになります
###########################
Swapfile Size:  6G      <---ここの値を変更し保存します
###########################

#設定の変更を適用
jetson-nano@jetsonnano-desktop:~/installSwapfile$ ./installSwapfile.sh 
Creating Swapfile at:  /mnt
Swapfile Size:  6G
Automount:  Y
[sudo] jetson-nano のパスワード: 
-rw-r--r-- 1 root root 6.0G  4月 26 16:23 swapfile
-rw------- 1 root root 6.0G  4月 26 16:23 swapfile
スワップ空間バージョン 1 を設定します。サイズ = 6 GiB (6442446848 バイト)
ラベルはありません, UUID=c1b9974a-8b84-4a38-98de-c97621b68205
ファイル名				タイプ		サイズ	使用済み	優先順位
/dev/zram0                             	partition	506408	203436	5
/dev/zram1                             	partition	506408	203300	5
/dev/zram2                             	partition	506408	203472	5
/dev/zram3                             	partition	506408	203228	5
/mnt/swapfile                          	file    	6291452	0	-1
Modifying /etc/fstab to enable on boot
/mnt/swapfile
Swap file has been created
Reboot to make sure changes are in effect
```

再起動後に、SWAPの拡張が反映されます。
再度、SWAPサイズを確認すると拡張していることが確認できます。

```
jetson-nano@jetsonnano-desktop:~/installSwapfile$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        1.8G        1.7G         25M        332M        2.3G
Swap:          7.9G        792M        7.2G
```

#CUDAのPATH設定
JetPackには、CUDAが準備されていますがPATHが設定されていないため"nvcc"コマンドが使用できません。そのため、PATHの設定をします。
".bashrc"を開き、以下の記述を一番最後に追記します。
設定反映のため、"source"コマンドを実装します。

```
#設定ファイル開く
sudo vi ~/.bashrc

#以下を追記する
export PATH=/usr/local/cuda/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}

#設定反映する
source ~/.bashrc
```

上記を実行後に、以下のコマンドが実行できれば問題ありません。

```
jetson-nano@jetsonnano-desktop:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Mon_Mar_11_22:13:24_CDT_2019
Cuda compilation tools, release 10.0, V10.0.326
```

#日本語入力
日本語入力を可能にするには、以下の方法です。

```
ibus + mozc + 日本語(mozc)インストール
```

今回はここまでです。
サンプルプログラムまで書こうと思いましたが、結構長くなったので次回にします。
次回は、DeepStreamについて記載します。

以上です。

#参考サイト
https://github.com/JetsonHacksNano/installSwapfile