- 追加された行はこの色です。
- 削除された行はこの色です。
[[labs.beatcraft.com]] ~
[[CUDA]] ~
#contents
* CUDA6/Jetson TK1 (Tegra K1 SOC) [#e67e67cf]
Kelper Core GPU を搭載した Tegra K1 SOC ボード ~
Jetson TK1 (以降 Jetson と記載)に Linux for Tegra と ~
CUDA 6.0 Toolkit を再インストールする手順について記載します。 ~
CUDA 6.0 Toolkit がプリインストールされていますが、~
新規に L4T と CUDA 6.0 Toolkit をインストールする~
手順について記載します。 ~
~
#ref(jetson01.jpg,,40%); ~
~
* Jetson の主なハードウェア仕様 [#l9746da4]
Jetson の主なハードウェア仕様は以下のとおりです。 ~
- Kepler GPU with 192 CUDA cores
- 4-Plus-1 quad-core ARM Cortex A15 CPU
- 2 GB DDR3L
- 16 GB 4.51 eMMC memory
~
* 再インストール手順 について [#i1231dd8]
* インストール手順 について [#i1231dd8]
Jetson には L4T(Linux for Tegra) がプリインストールされていますが、 ~
Jetson に その L4T と CUDA 6.0 Toolkit を再インストールする手順について記載します。 ~
Jetson に その L4T と CUDA 6.0 Toolkit を新規にインストールする手順について記載します。 ~
~
手順については以下の URL を参考にしています。~
~
https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/l4t_quick_start_guide.txt ~
~
注:以下の手順ではプリインストール時に /home/ubuntu/ にある ~
NVIDIA-INSTLLER/ ディレクトリ以下はリカバリされません。~
~
ホスト OS は Ubuntu 12.04 LTS (64bit版)で作業を行います ~
(OSはインストールされているものとして記載しています)。~
~
** CUDA 6.0 Toolkit for L4T Rel -19.2 について [#ke2cb71d]
CUDA 6.0 Toolkit for L4T Rel -19.2 を入手するため ~
CUDA Registered Developer Program へ登録が必要です。 ~
また登録後ダウンロード可能になるまで数時間かかります。~
~
詳細は下記 URL を参照してください。 ~
~
https://developer.nvidia.com/user ~
~
** L4T の再インストール [#n8a9f9a2]
** L4T のインストール [#n8a9f9a2]
Jetson から AC アダプタをはずし、ホスト PC と ~
Jetson に microUSBケーブルを接続します。 ~
~
ホストマシン(Ubuntu 12.04)上に作業用ディレクトリを作成し、以下の URL から ~
Tegra_Linux_Sample-Root-Filesystem_R19.2.0_armhf.tbz2 ~
Tegra124_Linux_R19.2.0_armhf.tbz2 をダウンロードします。 ~
~
https://developer.nvidia.com/linux-tegra-rel-19 ~
~
$ mkdir ~/Jetson
$ cd Jetson/
$ wget https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra_Linux_Sample-Root-Filesystem_R19.2.0_armhf.tbz2
$ wget https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra124_Linux_R19.2.0_armhf.tbz2
Tegra124_Linux_R19.2.0_armhf.tbz2をroot権限で展開します。 ~
Linux_for_Tegra というディレクトリが作成されていますので、 ~
その中の rootfs というディレクトリへ移動します。 ~
~
$ sudo tar xpf Tegra124_Linux_R19.2.0_armhf.tbz2
$ cd Linux_for_Tegra/rootfs/
移動先ディレクトリ内でもうひとつのダウンロードファイル ~
Tegra_Linux_Sample-Root-Filesystem_R19.2.0_armhf.tbz2 を展開します。 ~
~
$ sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R19.2.0_armhf.tbz2
*** USB 3.0 ポートの設定 [#p08dfffe]
下記URL(PDF)のように Jetson の USB 3.0 ポートは再インストール時、 ~
デフォルト設定ではUSB 2.0 デバイスとして認識されます。 ~
~
https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra_Linux_Driver_Package_Release_Notes_R19.2.pdf ~
~
Linux_for_Tegra/jetson-tk1.conf を以下のように変更し ~
USB 3.0 として認識するようします。 ~
~
$ vi jetson-tk1.conf
# USB 2.0 operation on USB2 port(J1C2 connector)/for use as root device use ODMDATA=0x6009C000;
# USB 3.0 operation on USB2 port(J1C2 connector) use ODMDATA=0x6209C000, requires firmware load from userspace or initial ramdisk
ODMDATA=0x6209C000; <- コメントイン
#ODMDATA=0x6009C000; <- コメントアウト
jetson.conf 変更完了後、apply_binaries.sh を実行します。 ~
apply_binaries.sh は各バイナリを rootfs に配置などを行うスクリプトです。 ~
~
$ cd ..
$ sudo ./apply_binaries.sh
Using rootfs directory of: /home/beat/Jetson/Linux_for_Tegra/rootfs
... <snip>...
Extracting the firmwares and kernel modules to /home/beat/Jetson/Linux_for_Tegra/rootfs
Installing the board *.dtb files into /home/beat/Jetson/Linux_for_Tegra/rootfs/boot
Success!
Jetson 本体の FORCE RECOVERY ボタンを押下しながら電源を入れ ~
RESET ボタンを押下するとホスト OS 上に Jetson が認識されますので ~
lsusb で確認します。 ~
もし確認できない場合は再度 RESET ボタンを押下してください。~
~
$ lsusb | grep -i nvidia
Bus 001 Device 002: ID 0955:7140 NVidia Corp.
root 権限で以下のコマンドを実行し、 Kernel と rootfs を転送します。 ~
NFS マウントと tft での転送のため転送完了まで約30分以上かかります。 ~
#手元の環境では1時間強かかりました。 ~
~
また完了後 reset が実行されない場合 Jetson 本体の RESET ボタンを押下して ~
resetを実行してください。 ~
~
reset が完了すれば L4T のリカバリは完了です。~
~
$ sudo ./flash.sh -S 8GiB jetson-tk1 mmcblk0p1
copying dtbfile(/home/beat/Jetson/Linux_for_Tegra/kernel/dtb/tegra124-pm375.dtb) to tegra124-pm375.dtb... done.
Making system.img...
populating rootfs from /home/beat/Jetson/Linux_for_Tegra/rootfs... done.
Sync'ing... done.
System.img built successfully.
copying bctfile(/home/beat/Jetson/Linux_for_Tegra/bootloader/ardbeg/BCT/PM375_Hynix_2GB_H5TC4G63AFR_RDA_924MHz.cfg) to bct.cfg... done.
copying cfgfile(/home/beat/Jetson/Linux_for_Tegra/bootloader/ardbeg/cfg/gnu_linux_fastboot_emmc_full.cfg) to flash.cfg... done.
creating gpt(ppt.img)...
*** GPT Parameters ***
device size -------------- 15766388736
bootpart size ------------ 8388608
userpart size ------------ 15758000128
Erase Block Size --------- 2097152
sector size -------------- 4096
Partition Config file ---- flash.cfg
Visible partition flag --- GP1
Primary GPT output ------- PPT->ppt.img
Secondary GPT output ----- GPT->gpt.img
Target device name ------- none
...<snip>...
Create, format and download took 4315 Secs
Time taken for flashing 4317 Secs
*** The target ardbeg has been flashed successfully. ***
Reset the board to boot from internal eMMC.
* Jetson 上での確認と設定 [#u9aabaa3]
L4T を再インストールした Jetson 上で下記の項目の確認と ~
設定を行います。 ~
~
ユーザ名とパスワードは ubuntu/ubuntu です。 ~
~
*** Jetson の Kernel バージョン [#lfd0b785]
Jetson の Kernel バージョンは以下のとおりです。 ~
~
$ uname -a
Linux tegra-ubuntu 3.10.24-g6a2d13a #1 SMP PREEMPT Fri Apr 18 15:56:45 PDT 2014 armv7l armv7l armv7l GNU/Linux
*** Jetson USB 3.0 ポートの確認 [#x8348495]
上記USB 3.0 ポートの設定が反映されていることを確認します。 ~
~
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
*** libglx.so のバックアップ [#n046b048]
下記URL(PDF)にあるように、libglx.so のバックアップを作成します。 ~
これは xserver のアップデート時に libxglx.so が上書きされても ~
元ファイルに戻せるようにするためです。 ~
~
https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra_Linux_Driver_Package_Release_Notes_R19.2.pdf ~
~
$ cd /usr/lib/modules/extensions/
$ sudo cp libglx.so __libglx.so_orig
*** リポジトリの追加 [#xcc17daa]
下記 URL にあるように開発用コードを取得しやすくするため、 ~
リポジトリを追加し更新を行います。 ~
~
http://elinux.org/JetsonTK1 ~
~
$ sudo apt-add-repository universe
$ sudo apt-get update
$ sudo apt-get upgrade
注;sudo apt-get upgrade実行中に更新が停止してしまうことがあります。 ~
その際は reset し sudo dpkg --configure -aを実行してから ~
再度sudo apt-get update、sudo apt-get upgrade を実行してください。 ~
** CUDA 6.0 Toolkit の再インストール [#c98ae7a6]
** CUDA 6.0 Toolkit のインストール [#c98ae7a6]
注:cuda-repo-l4t-r19.2_6.0-42_armhf.deb をダウンロードしている前提で記載します。 ~
~
CUDA 6.0 Toolkit を再インストールする前に、ntpdate コマンドで時刻あわせを行います。 ~
これは cuda-repo-l4t-r19.2_6.0-42_armhf.deb を導入する際に時刻が合わないという ~
警告メッセージをなくすためです。 ~
~
$ sudo ntpdate ntp.nict.jp
$ date
cuda-repo-l4t-r19.2_6.0-42_armhf.deb を導入し、リポジトリの更新後 CUDA 6.0 Toolkitを ~
インストールします。 ~
~
$ sudo dpkg -i cuda-repo-l4t-r19.2_6.0-42_armhf.deb
$ sudo apt-get update
$ sudo apt-get install cuda-toolkit-6-0
デフォルトユーザ: ubuntu を video グループにいれます。 ~
~
$ sudo usermod -a -G video ubuntu
また .bashrc の末尾に以下の2行を追加し CUDA の環境変数を設定します。~
~
export PATH=/usr/local/cuda-6.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-6.0/lib:$LD_LIBRARY_PATH
** CUDA Samples の導入と実行 [#q2c7f66a]
以下のコマンドを実行し CUDA Samples を導入します。 ~
また導入した CUDA Samples をビルドします。 ~
~
ビルド完了後 ~/NVIDIA_CUDA-6.0_Samples/bin/armv7l/linux/release/gnueabihf に ~
移動し、NVIDIA CUDA Getting Started Guide for Linux のページ内 Running the Binaries に ~
記載されている deviceQuery を実行します。 ~
~
http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html#running-binaries ~
~
$ cuda-install-samples-6.0.sh ~/
$ cd NVIDIA_CUDA-6.0_Samples/
$ make
$ cd bin/armv7l/linux/release/gnueabihf/
$ ./deviceQuery
./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.0 / 6.0
CUDA Capability Major/Minor version number: 3.2
Total amount of global memory: 1746 MBytes (1831051264 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
M aximum 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.0, CUDA Runtime Version = 6.0, NumDevs = 1, Device0 = GK20A
Result = PASS
* 更新履歴 [#cdd26ab0]
2014/06/24 初稿公開 ~
~
RIGHT:syariten