モバイル・スパコンJETSON tk1にCUDAをinstallする方法
NVIDIAのJETSON tk1にCUDAをinstallする方法です
手順
CUDA-6.0をデフォルトのubuntu14.04にinstallします
wget http://developer.download.nvidia.com/compute/cuda/6_0/rel/installers/cuda-repo-l4t-r19.2_6.0-42_armhf.deb 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 ls -l /usr/local/cuda* lrwxrwxrwx 1 ubuntu ubuntu 8 Feb 4 06:52 cuda -> cuda-6.0/ drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 4 06:52 cuda-6.0/ vi ~/.bashrc ====以下を追加======== export PATH=/usr/local/cuda-6.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-6.0/lib:$LD_LIBRARY_PATH ====以上を追加======== bash nvcc -V
これでversion情報が出てくればOKです
試しにHello world 書いてみる
mkdir cuda_test cd cuda_test ### cudaファイルを作成 vi hello.cu ====以下を入力======== #include <stdio.h> __global__ void hello() { printf("Hello from %d.%d\n", blockIdx.x, threadIdx.x); } int main() { hello<<<3,2>>>(); cudaDeviceSynchronize(); return 0; } ====以上を入力======== ### コンパイル nvcc -o hello hello.cu ### 実行 ./hello ### 表示の順番は実行毎に変わります hello from 2.0 hello from 2.1 hello from 0.0 hello from 0.1 hello from 1.0 hello from 1.1
code解説
__global__
3 __global__ void hello() {
threadIdx.x / blockIdx.x
4 printf("Hello from %d.%d\n", blockIdx.x, threadIdx.x);
- threadIdx.x
- カーネルが動作しているスレッドのインデックス番号(何番目のスレッドか)を表す
- blockIdx.x
- threadIdxの上位にある
- 現在のグリッド上でどのブロックが実行されているかを表す
main()
7 int main() {
- main()はホスト側で実行される
<<<>>>
8 hello<<<3,3>>>();
- グリッドの中のブロックの個数と、ブロックの中のスレッドの個数を設定する
- 今回はブロックは3つで、その中で2つのスレッドが起動することを示す
- 更に要素を追加して、3次元でまで表すことができる