Nsight Eclipse的使用方法

1.      打開night eclipse: 命令行輸入night,會提示你選擇工作目錄,自己選即可。

2.      在界面上方菜單欄:File -> New –> cuda C/C++ project:


可以選擇新建空項目,標準運行時項目,還可以從樣例程序中導入,以及新建C++的Thrust項目:


其餘都是按照默認跳過即可。

3.      完成後在左側Project欄裏,添加新文件。


4.      寫完代碼以後,右擊工程名–> build Project ,生成makefile<Debug 目錄下>以及bin<Binaries目錄下>文件,如果有錯誤,會在底部,Problems裏面報出,同樣在寫程序的時候,會跟SQL似得會自動給你檢測的,寫錯了可以隨改正。


5.      然後右擊工程名 -> Run As local c/c++ application,運行程序,結果會在下面打印


6.      Nsight可以直接用profiler查看函數的時間軸:


右擊bin文件,選擇profile as local C/C++ Application,就可以在新標籤頁中看profile的結果了。

其中:


runtime API一欄的時間軸,表示的是CPU端調用Cuda的runtime函數的時間,當然不包括kernel的時間。<其中有launch kernel的時間>。

同理,Driver API時間軸表示的是CPU調用cuda驅動函數的時間。

MemcpyHtoD MemcpyDtoH兩行時間軸表示的是整個程序中,每次數據拷貝的時間,在下邊屬性欄裏,可以看到調用的次數和時間值。

下面的compute欄,裏面的函數是內核函數,前面的百分比表示的是各個內核函數在GPU上運算時佔據的時間比重,誰的百分比大,表明誰計算的時間更長。

最下面的stream一欄,就是memcpy, memset以及內核函數在整個程序執行的過程中佔據的時間。次序表面調用順序。

各個關係是這樣的<絕對個人理解,僅供參考,切勿當真>runtime driver API那兩欄,其實類似於在程序語句中加入clock_t函數測試得到的時間,<clock函數表示的是:“這個函數返回從開啓這個程序進程程序中調用clock()函數時之間的CPU時鐘計時單元(clock tick)數”>,因爲在程序中kernel函數是屬於瞬間返回<according to you guys>的,用clock是測不出時間的,但是是個函數總歸要有執行過程,就是有執行時間的,這時候就看底下compute那一欄,這是在GPU上函數執行時間,這個時間時間上測試加速比的時候並未用到<”瞬間返回”>,但是通過stream一欄的時間軸,我們可以看出哪個函數在GPU上佔據的時間更長,也就是說能看到程序的時間更多的耽誤在了哪裏。這個地方我個人理解的是,通過看runtime driver API底下的這些時間軸,可以看到的是在GPU上各個函數的時間狀況,而我們測試加速比的時候是用的runtime, driverAPI上類似的時間,所以看底下的時間軸更多的是一個參考吧,給編程人員一個參考看看內核有沒有改進處,看看流的執行成沒成功。等等等等,這只是我個人理解,因爲這一塊一直不是很清楚,我就一直這麼理解的。。。。。。

7.    關於Debug,windows下面不同的是,linux下的nsight不僅可以在GPU代碼加斷點,也可以在CPU代碼加斷點,加斷點方法與VS中差不多,雙擊左邊那個邊框,點擊上面工具欄的甲蟲圖標:


F6單步跳過,F5單步跳入。


這邊可以看變量的值。這一部分我瞭解的不多,單步跳到有關cudaruntime函數時會報出:所有cuda設備函數都不能被debug.

這部分暫擱置。

8.    導入已有工程: File -> new  ->makefile project with exsiting code. 

不過,早上說到的會報錯問題,所以這個功能基本是不可用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章