CUDA與Linux系統
目錄
1. CUDA安裝
在Linux系統上安裝CUDA toolkit需要下載兩個包:驅動和toolkit
-
cuda_7.0.28_linux.run
-
NVIDIA-Linux-x86_64-352.41.run
1.1 安裝toolkit
toolkit包中提供多項功能,有顯卡驅動、toolkit和samples;安裝過程為:
-
退出X server:在控制終端執行命令:init 3;
-
啟動安裝包:執行命令:sh cuda_7.0.28_linux.run;
-
跳出安裝須知:執行命令:strl + C,並輸入accept;
-
不進行顯卡驅動安裝:在第一個選項中輸入命令:N
-
其它選項:其它選項都選擇Y或者直接回車。
-
添加環境變量:在~/.bashrc文件中添加如下兩行
PATH=/usr/local/cuda-7.0/bin:$PATH
LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
參考文獻:CUDA_Getting_Started_Linux.pdf
1.2 安裝顯卡驅動
本來CUDA toolkit中自帶顯卡驅動,但是由於自動安裝顯卡驅動后,導致Linux系統圖形界面無法啟動,所以需要手動下載和安裝顯卡驅動,其安裝過程為:
-
退出圖形界面:運行命令為:init 3;
-
啟動:啟動驅動文件,命令為:sh NVIDIA-Linux-x86_64-352.41.run -a;
-
配置:安裝完成后,會提示是否運行nvidia顯卡工具來自動更新xorg.conf文件,選擇"Yes";
-
返回圖形界面:在顯卡安裝完成后,返回圖形界面,命令為:startx;
參考文獻:Linux下,手動安裝NVIDIA顯卡官方驅動;
2. 調式工具:CUDA GDB
對於CUDA的調式工具GDB,需要使用GPU的設備。但是當在圖形界面時,GPU設備已經被占用着,所以若需要使用CUDA GDB需要退出X server,進入init 3。其使用過程為:
-
退出X server:在終端執行命令:init 3
-
編譯:若源程序為:pmandel.cu,編譯命令可以為:nvcc -g -G pmandel.cu -o pamandel;若是有makefile文件,則也可執行命令:make。如圖 5所示。

圖 1
-
啟動GDB:執行命令:cuda-gdb pmandel;如圖 6所示。

圖 2
-
設置斷點:可以在任何函數或行設置斷點,如執行命令:break main;或break 21;
-
開始調式:執行命令為:run;
-
繼續執行:可以執行命令:continue,或是:C;如圖 7所示。

圖 3
-
單步執行:命令為:next,或是:n
-
顯示信息:可以執行命令:info cuda Commands,其中的Commands可以是threads、blocks、warps和contexts等命令,其它信息可參考《cuda-gdb.pdf》。如圖 8所示。

圖 4
參考文獻:cuda-gdb.pdf
3. 分析工具:CUDA Profile
3.1 Visual Profiler:圖形化
Visual Profiler是NVIDIA提供的圖形化分析工具,其在成功安裝CUDA toolkit后,就能夠使用。通過Profiler能夠對CUDA 應用的CPU和GPU的時間節點進行分析,並能夠調優CUDA應用的性能。Visual Profiler的簡單使用方法如下所示:
1. 啟動:在控制終端輸入命令:nvvp;如圖 5所示的啟動后界面。

圖 5
2. 新建session:其創建入口為:FileàNew Session,如圖 6所示是新建Session對話框,在該對話框中的File輸入框中輸入需被分析的可執行文件。

圖 6
3. 分析結果:在新建Session對話框中輸入相應的可執行文件后,就能產生分析結果,如圖 7所示。

圖 7
3.2 nvprof Profiler:命令行
通過nvprof可以以命令行的形式分析和調優CUDA應用程序。nvprof的使用形式是:
nvprof [options] [CUDA-application] [application-arguments]
1) summary模型
這是nvprof的默認模型,在這個模型中只簡單輸出核函數和CUDA內存復制性能。如對於需要被測試的可執行文件boxFilterNPP,可直接執行命令:nvprof boxFilterNPP。如圖 8所示的結果。

圖 8
2) GPU-Trace和API-Trace模型
這個模型能夠以時間軸順序提供所有在GPU發生的活動點,每個核函數的執行或是復制/賦值都能夠詳細的顯示。如圖 9所示。

圖 9
3) Event/metric Summary模型
通過這個模型能夠在指定的NVIDIA GPU上顯示所有可用的Event/metric,

圖 10
4) Event/metric Trace Mode
通過這個模型能夠顯示每個核函數的event和metric值。如圖 11所示。

圖 11
參考文獻:CUDA_Profiler_Users_Guide.pdf
4. 集成工具:nsight Eclipse
4.1 CUDA編輯器
Linux中也有CUDA的集成開發工具nsight。其中在CUDA toolkit中自帶nsight,所以當成功安裝toolkit后,就可以啟動nsight。其使用過程為:
1) 啟動:在終端中輸入:nsight;如圖 1所示是啟動后的nsight界面。

圖 12
2) 創建項目:在nsight界面中:FileàProjectàCUDA c/c++ projectàExecutableà其中一項,如圖 2所示的Executable選項。

圖 13
3) 編譯:創建可執行文件:右擊項目àBuild Project; 如圖 3所示。

圖 14
4) 執行:右擊項目àRun AsàCocal c/c++ Application;如圖 4所示。

圖 15
參考文獻:nsight_Eclipse_Edition_getting_started.pdf;
4.2 CUDA調試器
nsight也集成了gdb,通過nsight可用非常方便了對cuda程序進行調式。其中若需要進入Debug模型需要退出X server,進入init 3。當單擊Debug按鈕時,就會自動進入Debug Perpspective, 如圖 16所示。其中當進入Debug模式時,就會在main函數中暫停。其中在nsight的工具欄中有四個相關的調式按鈕:
-
Step Info:進入函數;
-
Step Over:單步執行;
-
Step Return:退出函數;
-
Resume:跳到下一斷點。

圖 16
4.3 CUDA性能分析器
nsight同時集成了Profiler的分析工具,當打開一個項目后就能夠非常方便了進行性能分析。其分析Perpspective與visual Profiler一樣,如圖 17所示。

圖 17
5. nvml庫
5.1 安裝方式
運行安裝完nvml庫后,
-
lib文件安裝路徑是:/usr/src/gdk/nvml
-
.h文件的安裝路徑是:/usr/include/nvidia/gdk/nvml.h
5.2 使用方式
-
lib文件
將/usr/src/gdk/nvml/lib/目錄下的兩個文件復制到/usr/lib64,並覆蓋以前文件。若在項目中需要使用該庫,則需添加所以的lib路徑,如在nsight項目中按如圖 18所示進行添加。

圖 18
-
.h文件
若在項目中需要使用nvml庫,則只需在源程序中包含nvml.h文件,同時在環境中需要添加nvml.h文件所在的路徑,如圖 19所示。

圖 19
