Ubuntu Linux 12.04 LTS(Long Term Support)在 2012 年 4 月釋出,代號為 Precise Pangolin,由於這個版本是 LTS 長期支援版,所以 Ubuntu 對於這個版本所提供的更新服務會持續五年(一般的版本只有三年),也就是可以更新到 2017 年,所以若是作為伺服器使用的系統可以選擇這樣的版本。

NVIDIA CUDA 目前的最新版本是 4.2,但是因為 Ubuntu Linux 12.04 LTS 才剛剛釋出,所以 NVIDIA 官方支援的 Linux 不會包含 Ubuntu Linux 12.04 LTS,不過其實下載 CUDA for Ubutnu 11.04 的版本,也是可以在 Ubuntu Linux 12.04 LTS 上使用的。

要安裝的第一步就是到 NVIDIA CUDA 網站下載 CUDA Toolkit 與 CUDA SDK,而 Driver 的部分其實可以不用下載,直接使用 Ubutnu 內建的就可以了,雖然版本不是最新的,不過其實只差一點點,通常沒什麼影響,而且這樣安裝上方便很多。

安裝 NVIDIA 驅動程式

首先安裝 NVIDIA Driver,直接用 Ubuntu 內建的 Driver 安裝方式是最簡單的,到 System Setting 中選擇 Additional Drivers:

system_setting

然後則要安裝的版本,建議直接裝 current 版本(也就是最新的版本),安裝完成後還要記得重新開機,下面這個是安裝完成後的 Additional Drivers 畫面:

ubuntu_nvidia_driver

安裝 NVIDIA CUDA Tookit

接著就可以安裝 CUDA Toolkit 了,直接執行下載下來的安裝檔:

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

預設是安裝在 /usr/local/cuda 目錄下,建議就依照他的預設路徑安裝,安裝完成後要設定 Library 的 Path,有兩個方式,一種是更改 LD_LIBRARY_PATH 環境變數,但我習慣直接加在 /etc/ld.so.conf.d/ 裡面:

sudo echo "/usr/local/cuda/lib64" > /etc/ld.so.conf.d/cuda.conf
sudo echo "/usr/local/cuda/lib" >> /etc/ld.so.conf.d/cuda.conf
sudo ldconfig

再設定 PATH:

echo 'export PATH=$PATH:/usr/local/cuda/bin' >> ~/.bashrc

安裝 NVIDIA CUDA SDK

直接執行下載回來的安裝檔:

chmod +x gpucomputingsdk_4.2.9_linux.run
./gpucomputingsdk_4.2.9_linux.run

接著安裝程式會詢問安裝路徑,建議直接按 Enter 使用預設值,

Enter install path (default ~/NVIDIA_GPU_Computing_SDK):

然後會詢問 CUDA Toolkit 的安裝路徑:

Could not locate CUDA.  Enter the full path to CUDA.
If you do not know the path, accept the default and then 
modify the CUDA_INSTALL_PATH variable in
/home/seal/NVIDIA_GPU_Computing_SDK/C/common/common.mk.

Enter CUDA install path (default /usr/local/cuda):

若 CUDA 都是依照預設路徑安裝,則這裡就不需要更動,直接按 Enter 就可以了。

編譯

接著要進行編譯的部分,首先安裝一些基本編譯用的套件:

sudo apt-get install build-essential libx11-dev libglu1-mesa-dev freeglut3-dev libxi-dev  libxmu-dev

另外因為 CUDA 需要使用 gcc 4.4 來編譯,所以要再安裝 4.4 版的 gcc:

sudo apt-get install gcc-4.4 g++-4.4

然後在更改一下編譯的設定,編輯 ~/NVIDIA_GPU_Computing_SDK/C/common/common.mk 這個設定檔,大約在第 58 行附近,將編譯器都改為 4.4 版的 gcc:

# Compilers
NVCC       := $(CUDA_INSTALL_PATH)/bin/nvcc
CXX        := g++-4.4 -fPIC
CC         := gcc-4.4 -fPIC
LINK       := g++-4.4 -fPIC

另外在第 255 行附近,加入 NVIDIA 的 Library 路徑(-L/usr/lib/nvidia-current):

  ifeq "$(strip $(HP_64))" ""
ifeq ($(x86_64),1)
LIB       := -L$(CUDA_INSTALL_PATH)/lib64 -L$(LIBDIR) -L$(COMMONDIR)/lib/$(OSLOWER) -L$(SHAREDDIR)/lib -L/usr/lib/nvidia-current
else
LIB       := -L$(CUDA_INSTALL_PATH)/lib -L$(LIBDIR) -L$(COMMONDIR)/lib/$(OSLOWER) -L$(SHAREDDIR)/lib -L/usr/lib/nvidia-current
endif
else
ifeq ($(i386),1)
LIB       := -L$(CUDA_INSTALL_PATH)/lib -L$(LIBDIR) -L$(COMMONDIR)/lib/$(OSLOWER) -L$(SHAREDDIR)/lib -L/usr/lib/nvidia-current
else
LIB       := -L$(CUDA_INSTALL_PATH)/lib64 -L$(LIBDIR) -L$(COMMONDIR)/lib/$(OSLOWER) -L$(SHAREDDIR)/lib -L/usr/lib/nvidia-current
endif
endif

這樣就可以開始編譯了,進到 ~/NVIDIA_GPU_Computing_SDK/C 這個目錄,執行 make 編譯:

cd ~/NVIDIA_GPU_Computing_SDK/C
make

等待編譯完成就可以使用 CUDA 了。

另外提醒一點,要使用有 OpenGL 的程式時,最好使用 Ubuntu 2D 的模式登入,不然執行程式時,畫面會很不順。

smokeParticles

NVIDIA CUDA in Ubuntu 12.04 LTS

deviceQueryDrv

CUDA Device Query (Driver API)

particles

CUDA Particles

nbody

CUDA N-Body

fluids

Cuda/GL Stable Fluids

ocean

CUDA FFT Ocean Simulation