覚え書きブログ

Jetson TX1の覚え書き(JetPackを用いたセットアップ)

研究室でJetsonTX1のセットアップを始めた。
まずは、電源、キーボード、マウス、モニターを繋いで、一度JetsonTX1を起動してみた。
f:id:hirotaka_hachiya:20170502104540j:plain

以下のようにセットアップ方法が表示されたので、内容に従ってセットアップスクリプトを実行し、再起動したところ普通にUbuntuが起動するようになった。
f:id:hirotaka_hachiya:20170502104557j:plain

しかし、これでは開発環境が最新ではなく、かつDeep Learningのツールに必要なCUDAやCUDNNがインストールされていないようなので、以下のように、Jetpackを用いてアップデートした。

以下は、JetsonTX1のアップデートの手順書:
http://developer.download.nvidia.com/embedded/L4T/r23_Release_v1.0/NVIDIA_Jetson_TX1_Developer_Kit_User_Guide.pdf

1)JetsonTXをシャットダウンして、電源コネクタを抜く

2)付属のUSBケーブルのBタイプ端子をTX1側、Aタイプ側をホストPC(Linux)に接続する。
f:id:hirotaka_hachiya:20170502111255j:plain
3)電源コネクタを接続する

4)電源ボタン(POWER BTN)を押した後すぐにリカバリーボタン(REC)を押しつづけて、リセットボタン(RST)を押して離してから、2秒後にリカバリーボタンを離す。

5)JetPackの最新版3.0をダウンロードする
https://developer.nvidia.com/embedded/jetpack

6)JetPack-L4T-3.0-linux-x64.runを実行する

> chmod +x JetPack-L4T-3.0-linux-x64.run
> ./JetPack-L4T-3.0-linux-x64.run

f:id:hirotaka_hachiya:20170502111230p:plain

しばらく手順に従って進む。
f:id:hirotaka_hachiya:20170502111845p:plain
まず、Hostにダウンロードしてから、Target(JetsonTX1)にインストールするようだ。
途中でconflictの警告がでたが、気にせず進める。
f:id:hirotaka_hachiya:20170502115925p:plain
f:id:hirotaka_hachiya:20170502115930p:plain

いきなりネットワークの設定に入る。
f:id:hirotaka_hachiya:20170502120857p:plain
f:id:hirotaka_hachiya:20170502120928p:plain

そして、ついにJetsonTX1に書き込みを始めるとのこと。
f:id:hirotaka_hachiya:20170502121000p:plain
f:id:hirotaka_hachiya:20170502121035p:plain
ここで、リカバリモードで立ち上げていることを確認し、Enterを押すと次のように書き込みが始まる。
f:id:hirotaka_hachiya:20170502121125p:plain

書き込みが終了したかと思うと今度は、JetsonTX1が起動し、JetsonTX1側のモニターにUbuntuの画面が表示される。
f:id:hirotaka_hachiya:20170502121632p:plain
f:id:hirotaka_hachiya:20170502124621j:plain

ここで、JetsonTX1をホストPCと同じサブネットLANに接続する必要がある。接続できないと次に進まないので要注意。
接続するとホストPC側のモニターに自動的に次の画面が表示される。
f:id:hirotaka_hachiya:20170502124834p:plain
f:id:hirotaka_hachiya:20170502124839p:plain

すると今度はLAN経由なのかわからないが、Post Installationが始まる。
f:id:hirotaka_hachiya:20170502124954p:plain

20,30分すると終了。JetsonTX1側の/home/ubuntuには、フォルダがたくさん出来ていた。

とりあえずCUDAの動作確認をする。

> cd NVIDIA_CUDA-8.0_Samples/bin/aarch64/linux/release
> ./oceanFFT

以下のようにちゃんと動作した。
f:id:hirotaka_hachiya:20170502131350j:plain

さらに、CUDNNの動作確認もしてみる。

> cd cudnn_samples_v5/mnistCUDNN
> ./mnistCUDNN
cudnnGetVersion() : 5105 , CUDNN_VERSION from cudnn.h : 5105 (5.1.5)
Host compiler version : GCC 4.9.2
There are 1 CUDA capable devices on your machine :
device 0 : sms  2  Capabilities 5.3, SmClock 72.0 Mhz, MemSize (Mb) 3994, MemClock 12.8 Mhz, Ecc=0, boardGroupID=0
Using device 0
...
Resulting weights from Softmax:
0.0000001 1.0000000 0.0000001 0.0000000 0.0000563 0.0000001 0.0000012 0.0000017 0.0000010 0.0000001 
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000720 0.0000000 0.0000000 0.0000000 0.0000000 
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006 

Result of classification: 1 3 5

これで、CUDAとCUDNNがインストールされたので、次はOpenCVとDLのツールをインストールする。

追記:調べてみたらOpenCVTegra版が既にインストールされていた。

> dpkg --list | grep opencv
ii  libopencv4tegra                             2.4.13-17-g5317135                                  arm64        Tegra optimized Open Computer Vision Library
ii  libopencv4tegra-dev                         2.4.13-17-g5317135                                  arm64        Development files for Tegra optimized Open Source Computer Vision Library
ii  libopencv4tegra-repo                        2.4.13-17-g5317135                                  arm64        Repository with Tegra optimized Open Source Computer Vision Library

> dpkg -L libopencv4tegra-dev
...
/usr/include/opencv2
/usr/include/opencv2/gpu
/usr/include/opencv2/gpu/gpu.hpp
/usr/include/opencv2/gpu/devmem2d.hpp
...
/usr/lib/libopencv_vstab.so
/usr/lib/libopencv_imgproc.so
/usr/lib/libopencv_video.so
/usr/lib/libopencv_ml.so
/usr/lib/libopencv_calib3d.so
/usr/lib/libopencv_stitching.so