CUDA 為 nVidia 發展出來的技術,使用 GPU 做大量平行運算,在適當的平行化之後,其效能可以達到一般 CPU 的數十倍至數百倍。本篇介紹如何在 Ubuntu 9.04 上安裝 CUDA,因為 Ubuntu 9.04 正式 Release 版還沒出來,我用的是 Ubuntu 9.04 64-bits beta 版,雖然 nVidia 的網站上說他們對 Ubuntu Linux 只 Support 到 Ubuntu 8.04 版,但是沒有 Support 的版本不代表不能用,我的顯示卡為 GeForce 8500 GT,裝起來是可以正常執行的。
首先裝好 Ubuntu 9.04 後先把基本的套件更新,尤其是 Kernel,不然若是裝完 nVidia 的 Driver 再更新 Kernel 會使 nVidia 的 Driver 版本不合而不能用。
# apt-get update
# apt-get -y dist-upgrade
# apt-get -y dist-upgrade
接下來就到 nVidia 的網站下載 CUDA 與最新的顯示卡驅動程式,總共有三個檔案要下載:CUDA Driver、CUDA Toolkit 與 CUDA SDK,CUDA Driver 其實就是一般的顯示卡 Driver,只是版本要夠新,有支援 CUDA 的才行。目前在 CUDA 的網頁上找到的 Linux 64-bits Driver 最新的版本為 180.22,而我是直接使用在 nVidia 的網站上抓的最新版本 180.44,基本上應該都可以使用,不過新一點的應該比較好。
把三個檔都下載下來之後,就可以安裝了。安裝方法很簡單,直接執行就可以了,唯獨裝 Driver 的時候要把 X window 關掉。用 Ctrl+Alt+F1 切換到 Console,關掉 GDM 之後再安裝 Driver。
# /etc/init.d/gdm stop
# ./NVIDIA-Linux-x86_64-180.44-pkg2.run
# ./cuda-sdk-linux-2.10.1215.2015-3233425.run
# ./cudatoolkit_2.1_linux64_ubuntu8.04.run
# ./NVIDIA-Linux-x86_64-180.44-pkg2.run
# ./cuda-sdk-linux-2.10.1215.2015-3233425.run
# ./cudatoolkit_2.1_linux64_ubuntu8.04.run
安裝 toolkit 完成後,會有一些訊息要你加入 PATH 與 LD_LIBRARY_PATH 變數,如果你用的 Shell 是 bash,就依照你安裝的路徑加在 ~/.bashrc 中吧。
export PATH=$PATH:/usr/local/cuda/bin:/opt/TurboVNC/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib
重開機之後,就可以用了來編譯 CUDA SDK 了,到 SDK 的安裝目錄中,有一個 common 目錄下的 common.mk 檔,再大約第 113 行的地方,Compiler 的 -O3 選項要修改為 -O,不然編譯會不過。
ifeq ($(dbg),1)
COMMONFLAGS += -g
NVCCFLAGS += -D_DEBUG
BINSUBDIR := debug
LIBSUFFIX := D
else
COMMONFLAGS += -O3
BINSUBDIR := release
LIBSUFFIX :=
NVCCFLAGS += --compiler-options -fno-strict-aliasing
CXXFLAGS += -fno-strict-aliasing
CFLAGS += -fno-strict-aliasing
endif
COMMONFLAGS += -g
NVCCFLAGS += -D_DEBUG
BINSUBDIR := debug
LIBSUFFIX := D
else
COMMONFLAGS += -O3
BINSUBDIR := release
LIBSUFFIX :=
NVCCFLAGS += --compiler-options -fno-strict-aliasing
CXXFLAGS += -fno-strict-aliasing
CFLAGS += -fno-strict-aliasing
endif
改為
ifeq ($(dbg),1)
COMMONFLAGS += -g
NVCCFLAGS += -D_DEBUG
BINSUBDIR := debug
LIBSUFFIX := D
else
COMMONFLAGS += -O
BINSUBDIR := release
LIBSUFFIX :=
NVCCFLAGS += --compiler-options -fno-strict-aliasing
CXXFLAGS += -fno-strict-aliasing
CFLAGS += -fno-strict-aliasing
endif
然後再到 SDK 的目錄下執行 make,編譯如果成功,就大公告成了,如果失敗常常是因為少裝了什麼套件,用 apt 補一下再 make 就可以了。編譯完成後,可執行檔放在 bin/linux/release 下面。
感謝您的介紹,
回覆刪除不過在安裝時還是出現問題,想請教一下,
我現在進行到編輯 common.mk 的部份,也依照您的指示修改過該檔的內容,不過還是出現
make[1]: Entering directory `/root/NVIDIA_CUDA_SDK/common'
make[1]: g++: Command not found
make[1]: *** [obj/release/bank_checker.cpp.o] Error 127
make[1]: Leaving directory `/root/NVIDIA_CUDA_SDK/common'
make: *** [lib/libcutil.so] Error 2
toolkit 跟 sdk 應該是已經安裝成功了,
按照手冊的指示輸入 nvcc -V 有出現版本訊息。
請問大概是哪些部份還沒解決,
或是我還需要提供哪些資訊給您判斷呢?
g++: Command not found
回覆刪除代表您的 g++ Compiler 沒有裝。
今天去中研院的時候,老師有問我你有沒有聽過GPU。一開始還沒會意過來,以為這是什麼新的統計方法,沒聽過。後來才想起來原來是這玩意阿XD
回覆刪除當兵當久了應該都會這樣 :)
回覆刪除老大,你有看過ATI的卡要怎麼用GPU(ATI好像稱作VPU)嗎?
回覆刪除