NVIDIA Nsight Systems CUDA 跟蹤


NVIDIA Nsight Systems CUDA 跟蹤

CUDA跟蹤             

NVIDIA Nsight Systems能夠捕獲有關在概要過程中執行CUDA的信息。             

可以在報告的時間軸上收集和呈現以下信息:             

CUDAAPI跟蹤-跟蹤應用程序進行的CUDA運行時和CUDA驅動程序調用。             

CUDA運行時調用通常以CUDA前綴開始(例如,cudaLaunch)。             

CUDA驅動程序調用通常以cu前綴開始(例如,cuDeviceGetCount)。             

跟蹤主機上發生的操作(例如,對內存的跟蹤)和對內存執行的拷貝。在使用CUDAAPI的線程中,時間軸樹中將顯示其他子行。

 

在時間線行樹的底部附近,GPU節點將出現並包含一個CUDA節點。在CUDA節點中,進程中使用的每個CUDA上下文將與其相應的CUDA流一起顯示。steam將包含內存操作和GPU上的內核啟動。內核啟動用藍色表示,內存傳輸用紅色顯示。

 

獲取CUDA信息最簡單的方法是從NVIDIA Nsight Systems啟動進程,它將為您設置環境。為此,只需設置正常啟動並選中Collect CUDA trace復選框。

 

 

 

其他配置參數可用:             

收集超過X秒的API調用的回溯-打開CUDA API回溯的收集,並設置CUDA API事件在收集其回溯之前必須花費的最短時間。將此值設置得太低可能會導致應用程序開銷過高,並嚴重增加結果文件的大小。             

定期刷新數據-指定嘗試刷新CUDA跟蹤數據的時間段。通常,為了收集完整的CUDA跟蹤,應用程序需要完成用於CUDA工作的設備(調用cudaDeviceReset()),然后讓應用程序正常退出(而不是崩潰)。             

此選項允許在設備完成之前刷新CUDA跟蹤數據。但是,它可能會給隨機的CUDA驅動程序或CUDA運行時API調用帶來額外的開銷。             

跳過一些API調用-避免跟蹤無關緊要的CUDA運行時API調用(即,cudaConfigureCall()、cudaSetupArgument()、cudaHostGetDevicePointers())。不跟蹤這些函數可以顯著減少分析開銷,而不會丟失任何有趣的數據。(見下面的CUDA跟蹤過濾器)             

如果需要,可以手動設置目標應用程序以收集CUDA跟蹤。要獲取有關CUDA執行的信息,應滿足以下要求:

如果需要,可以手動設置目標應用程序以收集CUDA跟蹤。要獲取有關CUDA執行的信息,應滿足以下要求:             

根據流程的體系結構,應使用指定的環境變量啟動已分析的流程:             

對於ARMv7(32位)進程:

CUDA_INJECTION32_PATH,它應該指向注入庫:

/opt/nvidia/nsight_systems/libToolsInjection32.so

對於ARMv8(64位)進程:CUDA_INJECTION64_PATH,它應該指向注入庫:

/opt/nvidia/nsight_systems/libToolsInjection64.

如果應用程序由NVIDIA Nsight Systems啟動,所有必需的環境變量都將自動設置。              請注意,如果在復制所有收集的CUDA跟蹤數據之前應用程序崩潰,則部分或所有數據可能會丟失,並且不會出現在報告中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM