先日Maker Faire Tokyo 2014というイベントに行ったところ、うっかりNVIDIAのTegra K1を搭載した開発キットJetson TK1を衝動買いしてしまいました。
せっかくなので色々遊んでみたいと思います。
接続
ACアダプターを接続すると起動します。LANケーブルを接続してから起動するとDHCPでネットワークに接続しますので、なんらかの方法で割り振られたIPアドレスを調べればSSHでシェルに接続できます。
OSは普通のUbuntu 14.04(ARMアーキテクチャ)になっています。
HDMI端子があるので、モニターとUSBのキーボード・マウスを繋げばスタンドアローンで使えるようです(試してません)。
アップデート
購入したJetson TK1にインストールされていたドライバーはR19というバージョンのものでした。
R19ではCUDA Toolkit 6.0(最新は6.5)までの対応のようなので、さっそくR21にアップデートしました。
アップデートにはUbuntu 14.04(x64)をインストールしたPCが必要になります(私は仮想マシンを使いました)。
下記のURLからJetson TK1 Development Pack (JetPack TK1)をダウンロードし、
下記のURLの手順に従ってインストールします。
内蔵Flash上のファイルシステムの更新のためにJetson TK1の接続を求められますので、USBケーブルでPCとJetson TK1を接続しましょう。
次にJetson TK1のIPアドレスとユーザ名・パスワードの入力が求められます。ユーザ名・パスワードはともに「ubuntu」になっています。
(デフォルトだと入力しなくていいような文言がありますが、ちゃんと入力しないとうまくインストールが行われませんでした。)
その後サンプルをインストールするか聞かれます。Yesを選ぶとサンプルがクロスコンパイルされ、Jetson TK1にインストールされます。
インストールが完了したらさっそくサンプルを実行してみましょう。
SSHで接続し、下記のコマンドを実行します。
ubuntu@tegra-ubuntu:~$ NVIDIA_CUDA-6.5_Samples/bin/armv7l/linux/release/gnueabihf/deviceQuery
以下のように、CUDAデバイスの情報が表示されます。
NVIDIA_CUDA-6.5_Samples/bin/armv7l/linux/release/gnueabihf/deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GK20A"
CUDA Driver Version / Runtime Version 6.5 / 6.5
CUDA Capability Major/Minor version number: 3.2
Total amount of global memory: 1743 MBytes (1827323904 bytes)
( 1) Multiprocessors, (192) CUDA Cores/MP: 192 CUDA Cores
GPU Clock rate: 852 MHz (0.85 GHz)
Memory Clock rate: 924 Mhz
Memory Bus Width: 64-bit
L2 Cache Size: 131072 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 32768
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: No
Integrated GPU sharing Host Memory: Yes
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Bus ID / PCI location ID: 0 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GK20A
Result = PASS
雑感
まだ触り始めたばかりですが、OSが普通のUbuntuなので非常に開発しやすい感がありますね!