2016-01-19 71 views
0

如何在CUDA C++的運行時從所有類型的內存訪問和輸出內存統計信息(已用內存,可用內存)?GPGPU運行時CUDA內存使用統計信息

全局內存,紋理內存,共享內存,本地內存,寄存器,

獎金問題(恆的記憶?):你能指出我的文檔如何與Windows CUDA Profiler工具做呢?所有卡上是否支持內存分析,還是隻有一些特定的模型可以實現?

回答

3

要在運行時檢查設備上的整體內存使用情況,請使用cudaMemGetInfo API。請注意,NVIDIA設備上沒有專用紋理內存。紋理存儲在全局內存中,無法使用任何我知道的CUDA API單獨對它們進行解釋。您還可以使用cudaDeviceGetLimit API以編程方式查詢使用全局內存(運行時堆,printf緩衝區,堆棧)的運行時組件的大小。

在編譯時靜態分配常量內存,您可以通過compile time switches獲得特定翻譯單元的常量內存使用量。

我沒有辦法知道在運行時動態檢查SM級資源使用情況(寄存器,共享內存,本地內存)。您可以使用cudaFuncGetAttributes API在運行時查詢特定內核函數的每個線程和每個塊的資源需求。

Visual Profiler可以在運行時顯示與detail view相同的信息。我不是視覺分析器的大用戶,所以我不確定它是否在運行期間動態地收集設備級內存使用情況。我當然不記得看到過這樣的事情,但這並不意味着它不存在。

+0

非常感謝,我會盡快查看您在回答中提供的資源! –