CUDAのサンプルプログラムを実行してみる
前回はCUDAのコンパイラを使ってHello Worldをやってみたが、今回はNVIDIAが用意しているサンプルプログラムを実行してみる。
今回はsimpleVulkanというSin波の画像が表示されるプログラムを実行してみることにした。
開発環境
開発用PC:Windows 10
Jetson Nano Development kit 4GB B01
Jetson Nanoのイメージ:JetPack 4.6.1 + Ubuntu 18.04 LTS
CUDA Version 10.2.300
サンプルプログラムを実行してみる
NVIDIAが配布しているJetson Nanoのイメージでは、最初から/usr/local/cuda-10.2/samples/にサンプルが置いてある。今回は以下のsimpleVulkanというディレクトリのプログラムをmakeして実行する(Vulkanって何?についてはググってください)。まずcdコマンドでディレクトリに移動。
$ cd /usr/local/cuda-10.2/samples/2_Graphics/simpleVulkan/
Makefileが最初からおいてあるので、以下のコマンドでmakeを実行。
$sudo make
これでOK…かと思いきや、以下のようなエラーが発生。glfw3パッケージが無いとのこと。
No package 'glfw3' found vulkanCUDASinewave.cu:21:10: fatal error: GLFW/glfw3.h: No such file or directory #include <GLFW/glfw3.h>
ということで以下でインストール。
$ sudo apt install libglfw3-dev
再度makeを実行したら、エラーは出ずに無事に完了。
$ sudo make >>> GCC Version is greater or equal to 4.7.0 <<< /usr/local/cuda-10.2/bin/nvcc -ccbin g++ -I../../common/inc `pkg-config --static --cflags glfw3` -I/usr/include -m64 --std=c++11 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_32,code=sm_32 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_75,code=compute_75 -o vulkanCUDASinewave.o -c vulkanCUDASinewave.cu /usr/local/cuda-10.2/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_32,code=sm_32 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_75,code=compute_75 -o simpleVulkan vulkanCUDASinewave.o -L/usr/lib/aarch64-linux-gnu `pkg-config --static --libs glfw3` -lvulkan mkdir -p ../../bin/aarch64/linux/release cp simpleVulkan ../../bin/aarch64/linux/release
ディレクトリ内にあるsimpleVulkanが実行ファイルなので、以下で実行すればサンプルプログラムが実行される。ちなみにTeraTermからSSH接続したまま実行しても画像が表示されないので、VNCでGUI接続して実行して、ターミナルから接続した。
$./simpleVulkan
以下が表示された画像。Sin波がうねうねしている画像が表示される。
やはり視覚的に動くプログラムは面白い。