=Ubuntu下安裝CUDA (Tesla C1060)= Tesla並沒有顯示功能,所以需要另一張顯示卡。這裏用的是nvidia GeForce 9800GT 支援CUDA的顯示卡。[[br]] 安裝順序:[[br]] 1. CUDA驅動程式2. CUDA工具套件3. CUDA軟體開發工具(SDK)程式碼範例除了程式碼範例外,其他全詳細步驟如下:[[br]] 1. 安裝CUDA支援的Ubuntu 版本。目前支援到Ubuntu 9.04版。 2. 安裝新的nvidia驅動程式 先檢查顯示卡的驅動程式。 檢查檔案 /etc/X11/xorg.conf: 進入終端機 (Terminal)後, $sudo less /etc/X11/xorg.conf 如果尚未安裝任何驅動程式, 可能會看到 # xorg.conf (X.Org X Window System server configuration file) # …… # …… . . . # sudo dpkg-reconfigure -phigh xserver-xorg Section "Device" Identifier "Configured Video Device" Endsection Section "Monitor" Identifier "Configured Monitor" Endsection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" Endsection[[br]] 如果已經安裝nvidia驅動程式,但不是自己編譯的,必須要移除$sudo apt-get remove nvidia-*[[br]] 3.安裝編譯所需要的核心及相關套件[[br]] $sudo apt-get install build-essential linux-source linux-headers-`uname -r`[[br]] $sudo apt-get install xserver-xorg-dev libglut3-dev libglu1-mesa-dev libxi-dev libxmu-dev libc6-dev[[br]] 如果尚未安裝 gcc 與 g++[[br]] $sudo apt-get install gcc-4.3 g++-4.3[[br]] 4.下載CUDA安裝所需的所有檔案[[br]] (1)下載適合的驅動程式[[br]] http://www.nvidia.com.tw/Download/index.aspx?lang=tw [[Image(NVIDIAIP.jpg)]] [[br]] 以手動尋找。[[br]] 產品類型: 點選 Tesla [[br]] 產品系列: 點選 GPU Computing Processor [[br]] 產品家族: 點選 Tesla C1060 [[br]] 作業系統: 依Linux 系統32位元或64位元作選擇 [[br]] 點選搜尋後,會出現以下畫面: [[br]] [[Image(Nvidia_product.jpg)]] [[br]] 點選下載NVIDIA-Linux-x86_64-195.36.24-pkg2.run [[br]] (2) 下載 CUDA Toolkit 及CUDA SDK [[br]] http://www.nvidia.com.tw/object/cuda_get_tw.html [[Image(toolkit.jpg)]] 如果要安裝最新的套件,點選 “CUDA 工具套件3.0Beta版”。這個範例安裝的是2.3版的工具套件。點選適合的作業系統[[br]] [[Image(cuda2.3.jpg)]] 比較驅動程式的版本,選用較新版。這裏的版本比先前下載的還舊,所以只要下載工具套件和軟體開發套件。[[br]] 下載後,可看到檔名是 [[br]] cudatoolkit_2.3_linux_64_ubuntu9.04.run[[br]] cudasdk_2.3_linux.run[[br]] 5.關掉圖形介面以安裝nvidia顯示卡驅動程式[[br]] 按 Crl+Alt+F1進入終端機登入[[br]] $sudo /etc/init.d/gdm stop[[br]] 6.假設所有的檔案都在目前所在目錄下 [[br]] (1) $sudo sh ./NVIDIA-Linux-x86_64-195.36.24-pkg2.run[[br]] 會進入nvidia授權頁,用Tab鍵選擇 “Accept” 。 (2)接著會看到以下畫面[[br]] = There appears to already be a driver installed on your system (version: xxx.xx.xx). As part of installing this driver (version: xxx.xx.xx), the existing driver will be uninstalled. Are you sure you want to continue? = 選擇 “Yes”。 (3) = Install NVIDIA's 32-bit compatibility OpenGL libraries? = 這裏的版本是64位元的,選擇 “No”。 (4) = Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X? Any re-existing X configuration file will be backed up. = 選擇 “Yes”。 (5) 完成後,在終端機模式下重新開機 [[br]] $sudo reboot 7.檢查是否安裝成功 [[br]] 點選 system > preferences > NVIDIA X-Server Settings [[br]] 如果看到Tesla 的資訊,代表安裝成功。[[br]] [[Image(nvidia_xserver.jpg)]] 如果沒出現GPU的資訊,則安裝失敗,重新確認硬體是否支援,下載的驅動程式是否版本不符, 安裝程序是否錯誤、遺漏,或試不同版本的驅動程式。[[br]] 如果只出現GPU 0 (也就是顯示卡的GPU),但沒偵測到Tesla,可先關閉電源,取出Tesla,重新插入主機版,再開機,就可以看到Tesla的資訊。[[br]] 如果要看GPU的資訊,還有另一個方法。[[br]] 進入終端機, 使用指令 “nvidia-xconfig”[[br]] $nvidia-xconfig -query-gpu-info[[br]] 你將會看到下面的畫面[[br]] [[Image(query_gpu.jpg)]] 8.安裝CUDA 工具套件和CUDA 軟體開發套件[[br]] 進入終端機[[br]] $sudo sh ./cudatoolkit_2.3_linux_64_ubuntu9.04.run[[br]] $sudo sh ./cudasdk_2.3_linux.run[[br]] 過程中,所有選項按Enter會使用預設的設定。[[br]] 修改 etc 目錄下的 profile 檔[[br]] $cd /etc/[[br]] $cudo emacs profile (可用任意的編輯器)[[br]] 依照CUDA所在目錄,在檔案的最後加上[[br]] PATH=/usr/local/cuda/bin:$PATH [[br]] LD_LIBRARY_PATH=/usr/local/cuda/lib64[[br]] export PATH[[br]] export LD_LIBRARY_PATH[[br]] 這四行。[[br]] 如果是32 位元的作業系統,第二行改成LD_LIBRARY_PATH=/usr/local/cuda/lib[[br]] 如果是64 位元的作業系統,第二行改成LD_LIBRARY_PATH=/usr/local/cuda/lib64[[br]] 登出,再登入, 用CUDA程式測試,如果正確無誤,即完成安裝。[[br]] 若出現以下錯誤訊息[[br]] = ./a.out: error while loading shared libraries: libcudart.so.2: cannot open shared object file: No such file or directory = 若是64位元 命令列 [[br]] $sudo ln -sf /usr/local/cuda/lib64/libcudart.so.2.3 /lib64/libcudart.so.2[[br]] 如果是32位元可能需要加此行[[br]] $sudo ln -sf /usr/local/cuda/lib/libcudart.so.2.3 /lib/libcudart.so.2[[br]] 可以檢查(option)[[br]] $emacs /etc/ld.so.conf[[br]] include /usr/local/cuda/lib[[br]] 若32位元 include /usr/local/cuda/lib[[br]] 若64位元 include /usr/local/cuda/lib64[[br]] 可用以下程式測試。[[br]] 用nvcc 編譯cuda 程式 number_add_1.cu。[[br]] 如果CPU的執行結果和GPU相同,代表GPU成功運作。[[br]] $nvcc number_add_1.cu[[br]] $./a.out[[br]] number_add_1.cu程式碼:[[br]] #include [[br]] #include [[br]] #include [[br]] #include [[br]] #include [[br]] #include [[br]] #include [[br]] using namespace std;[[br]] #define DATA_SIZE 1048576[[br]] int data[DATA_SIZE];[[br]] __global__ static void sumOfSquares(int *num, int* result){[[br]] int sum = 0;[[br]] int i;[[br]] for(i = 0; i < DATA_SIZE; i++) {[[br]] sum += num[i] * num[i];[[br]] }[[br]] *result = sum;[[br]] }[[br]] void GenerateNumbers (int *number ,int size){[[br]] int i;[[br]] for(i=0;i>>(gpudata, result);[[br]] cudaMemcpy(&sum, result, sizeof(int), cudaMemcpyDeviceToHost);[[br]] t2 = wallclock();[[br]] printf("Elapsed time = %f(ms) in GPU\n",t2-t1);[[br]] cudaFree(gpudata);[[br]] cudaFree(result);[[br]] printf("sum: %d\n", sum);[[br]] sum = 0;[[br]] for(int i = 0; i < DATA_SIZE; i++) {[[br]] sum += data[i] * data[i];[[br]] }[[br]] printf("sum (CPU): %d\n", sum);[[br]] }[[br]]