jetson tk1 - nvidiaon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdftask #0: power on jetson...

31
JETSON TK1 7/16/2014

Upload: others

Post on 04-Jun-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

JETSON TK1 7/16/2014

Page 2: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

JETSON TK1 世界初の組み込みスーパーコンピューター

Tegra K1 開発キット

CUDA

VisionWorks

完結した開発ツールスイート

Page 3: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

5 Watts

x 1,640,000

x 12

x 5

Page 4: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。
Page 5: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Getting Connected

1つ以上の繋げ方:

Traditional display, keyboard, and mouse

Over the network like SSH, VNC, web browser

Gigabit Ethernet ポート Network is DHCP by default

Wi-Fi は追加アダプターで有効化

PCIe-based or

USB-based

デフォルトのユーザネーム: ubuntu

デフォルトのパスワード: ubuntu

Page 6: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #0: Power on Jetson TK1

Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task: 電源アダプタを Jetson TK1 に接続して初回起動します

電源ボタンはボード上にあります:

日本語キーボード用に変更: setxkbmap –layout jp

Page 7: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

CUDA Parallel Computing Platform

Hardware

Capabilities

GPUDirect SMX Dynamic Parallelism HyperQ

Programming

Approaches Libraries

“Drop-in” Acceleration

Programming

Languages Directives

Maximum Flexibility Easily Accelerate Apps

Development

Environment

Nsight IDE Linux, Mac and Windows

GPU Debugging and Profiling

CUDA-GDB debugger

NVIDIA Visual Profiler

Open Compiler

Tool Chain Enables compiling new languages to CUDA platform, and

CUDA languages to other architectures

www.nvidia.com/getcuda

Page 8: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #1: Write Simple CUDA C Program

Goal: CUDA版の “Hello World” プログラムを書く

Task:

CTRL+ALT+T で端末を起動

以下を実行:

gedit hello.cu &⏎

右記のコードを入力

ファイルを保存してコンパイル

nvcc –o hello hello.cu⏎

実行する

./hello⏎

#include <stdio.h>

__global__ void hello() {

printf(“Hello from %d.%d\n”,

blockIdx.x, threadIdx.x);

}

int main() {

hello<<<2,2>>>();

cudaDeviceSynchronize();

return 0;

}

Page 9: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #1 – 結果例

$ ./hello

Hello from 0.1

Hello from 1.1

Hello from 1.0

Hello from 0.0

これらは並列で実行されているように行の順序は変更になる場合があります

Page 10: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

CUDA Samples

NVIDIA’s CUDA Toolkit には有用なサンプルコードが含まれています

GPUをフル活用するための方法

コンピュートとグラフィックスの組み合わせ方

デバイスのクエリー方法

等々…

本セッションで利用する Jetson TK1 には既にCUDA 6 がインストールされています

Page 11: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #2: Compile & Run CUDA Samples

Goal: いくつかのCUDAサンプルをコンパイルして実行する

Task:

サンプルをコピー (実行は一度のみ):

cuda-install-samples-6.0.sh .⏎

smokeParticlesを試す:

cd NVIDIA_CUDA-6.0_Samples/5_Simulations/smokeParticles/⏎

make⏎

../../bin/armv7l/linux/release/gnueabihf/smokeParticles⏎

他のサンプルも試してみましょう

NVIDIA_CUDA-6.0_Samples/1_Utilities/deviceQuery/⏎

Page 12: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #2 – 結果例

Page 13: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

OpenCV

Introduction

コンピュータビジョン、画像処理、機械学習用のオープンソース・ライブラリ

使いやすいBSD ライセンス

自由に使える (www.opencv.org)

Portability

リアルタイム・コンピュータビジョン (x86 MMX/SSE, ARM NEON, CUDA)

C (11 years), now C++ (3 years since v2.0), Python and Java

Windows, OS X, Linux, Android and iOS

Page 14: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Usage

利用実績:

600万以上のダウンロード, 47,000 以上のユーザーグループ

Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota

Applications:

Street view image stitching

Automated inspection and surveillance

Robot and driver-less car navigation and control

Medical image analysis

Video/image search and retrieval

Movies - 3D structure from motion

Interactive art installations

Page 15: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Functionality

Desktop

x86 single-core (Intel started, now Itseez.com) - v2.4.5 >2500 functions (multiple algorithm

options, data types)

CUDA GPU (Nvidia) - 250 functions (5x – 100x speed-up)

http://docs.opencv.org/modules/gpu/doc/gpu.html

OpenCL GPU (3rd parties) - 100 functions (launch times ~7x slower than CUDA*)

Mobile (Nvidia):

Android (not optimized)

Tegra – 50 functions NEON, GLSL, multi-core (1.6 – 32x speed-up)

*Shengen Yan, AMD Fusion Developer Summit 2012.

Page 16: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

OpenCV Basics

異なる機能のために複数のモジュール

モジュールごとにヘッダーとライブラリーのインクルードが必要

一般には core と highgui モジュールを使う

名前空間

関数/オブジェクト名の衝突を避けるため、cv 名前空間を使用する:

using namespace cv;

Mat オブジェクト

CPU上のビデオの画像やフレームの情報/データを保持

MOG2

混合ガウスモデルベースの前景・背景分離アルゴリズム

Page 17: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #3: Compile & Run OpenCV Sample

Goal: OpenCV サンプルをコンパイルし実行する

Task:

cd ~/opencv-2.4.9/samples/c⏎ でディレクトリ移動

コンパイル:

g++ adaptiveskindetector.cpp -lopencv_highgui -lopencv_core -lopencv_contrib⏎

実行

./a.out --camera=0⏎

USBカメラで動作を確認する

Page 18: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

OpenCV + GPU

GPU モジュール

#include “opencv2/gpu/gpu.hpp”

-lopencv_gpu

名前空間:

using namespace cv::gpu;

GpuMat オブジェクト

Matに類似、ただGPU上の画像・フレームの保持用

GPUに画像を転送するには:

Mat h_image; // CPU image

GpuMat d_image; // GPU image

d_image.upload( h_image );

GPUから画像をダウンロードするには:

d_image.download( h_image );

Page 19: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

OpenCV + GPU

CPU上でMOG2モジュールを使う場合

#include "opencv2/video/background_segm.hpp"

BackgroundSubtractorMOG2 mog2;

GPU上でMOG2モジュールを使う場合

#include "opencv2/gpu/gpu.hpp"

MOG2_GPU mog2;

Page 20: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #4: Port CPU app to GPU

Goal: 計算量の多い部分についてOpenCVがGPUを利用するようにする

Task:

ディレクトリの変更: cd ~/lab/bgfg⏎

CPU版のコンパイル: make cpu⏎

実行して結果を確認: ./bgfg_segm_cpu –c 0⏎

CPU版からコピー: cp bgfg_segm_cpu.cpp bgfg_segm_gpu.cpp⏎

コピーしたファイルにGPU対応を追加

GPU版をコンパイル: make gpu⏎

実行して性能を確認: ./bgfg_segm_gpu –c 0⏎

ビデオファイルを使う場合: ./bgfg_segm_gpu⏎

回答はこちら bgfg_segm_solution.cpp

Page 22: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

OpenCV on the GPU

今回の BGFG サンプルの場合:

ARM CPU の約4倍早く実行された

16% 少ない電力で達成!

タスクに応じたプロセッサーの使用。 その他の電力効率に関する例:

elinux.org/Jetson/Computer_Vision_Performance

Page 23: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

GPIO

GPIO: General Purpose Input & Output(汎用入出力)

定義(Wikipedia英語版から):

入出力に使用する汎用の端子(ピン)。実行時にユーザによって操作でき、特定の目的は持たない。設定されるまで利用されない。

利用方法:

ソフトウェアで他のデバイス/回路/コンポーネントを操作可能にする

ソフトウェアで他のデバイス/回路/コンポーネントからの変化を検知可能にする

例:

USBカメラからの入力に応じてサーボを制御する

Page 24: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。
Page 25: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Working with J3A2 Header

接続するピンの場所に注意してください!

(Jetson TK1の場合)GPIOピンは1.8Vしか扱えません。 それ以上の場合、ボードを損傷する可能性があります。

今回はピン43, 45, 46, and 49 を利用します

ボード上のシルクスクリーンの「三角」がピン1を、「2」がピン2を表し、そこから数えていきます

Page 26: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #5: Connect Components & Test

Goal: basic_blink.py を実行してLEDを点滅させる

Task:

LED の抵抗の付いていない側の足をピン 43 (GPIO_PU1) に接続(済)

LED の抵抗の付いている側の足をピン45 (GND)に接続(済)

以下を実行:

sudo python ~/lab/gpio/basic_blink.py⏎

Result: LEDが10回点滅する

Page 27: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #6: Input & Output of GPIOs

Goal: advanced_blink.py を実行してスイッチの入力に応じてLED点滅

Task:

タクトスイッチの片方の足をピン 46 (GPIO_PU2) に接続(済)

タクトスイッチの片方の足をピン pin 49 (GPIO_PU3)に接続(済)

以下を実行:

sudo python ~/lab/gpio/advanced_blink.py⏎

Result: スイッチを押している間のみLEDが素早く点滅する

追加ポイント: advanced_blink.py を変更して点滅周期を早めてみる

Page 28: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #6 – 結果例

点滅速度を変更するには、次の行を変更 in advanced_blink.py

BLINK_INTERVAL = 100 #milliseconds

Page 29: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

GPIO Summary

ソフトウェアから1.8Vを作ったり検知したりできる

外部デバイスの制御

To learn more: http://elinux.org/Jetson/GPIO

誤接続に注意!

Page 30: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Learning More

Community Wiki: elinux.org/Jetson_TK1

Jetson TK1 Support Page: developer.nvidia.com/jetson-tk1-support

質問がある場合は:

Forum: devtalk.nvidia.com -> Embedded Systems

stackoverflow.com

Page 31: JETSON TK1 - NVIDIAon-demand.gputechconf.com/gtc/2014/jp/sessions/4006.pdfTask #0: Power on Jetson TK1 Goal: Jetson TK1 の電源をいれてデスクトップを表示する。Terminal(端末)を起動する。

Task #6: Power down system

以下を実行: sudo poweroff⏎

LEDとスイッチを取り外してから箱にしまって下さい

USBハブを USBカメラは差し上げますので、お持ち帰りください