2013-02-14 62 views
1

有什麼方法可以知道空閒/活動SM的數量?或者至少讀取每個SM的電壓/功率或溫度值,據此我可以知道其工作與否。 (實時在gpu設備上執行一些作業)。如何找到活動的SM?

%smid幫助我瞭解每個SM的ID。類似的東西會有幫助。

感謝和問候, 勒凱什

+0

如果您有權訪問源代碼,您可以通過'%smid'找到活動SM的數量。 – ahmad 2013-02-14 12:36:50

回答

2

的CUDA分析工具接口(CUPTI)包含使得能夠運行GPU PM計數器的時間採樣的事件的API。 CUPTI SDK是CUDA工具包的一部分。關於採樣的文檔可以在CUPTI Events API \ Sampling Events一節中找到。

一個或多個以下櫃檯將爲您提供SM活動的一個好主意:

  • active_cycles:週期多處理器至少有一個主動經數。
  • active_warps:每個週期的活動彎曲的累計數量。對於每個週期,它將按照週期爲 的活動經紗數量遞增,範圍爲0到{48,64}。
+0

謝謝。這非常有幫助。但我需要更多的澄清。假設CUDA應用程序正在運行,並且它佔用14箇中的2個SM,例如50秒。 (我可以使用nvprof來檢查,但nvprof在最後給出active_cycles或active_warps結果)。如果我開發另一個性能分析應用程序,通過使用CUPTI API,是否可以與CUDA應用程序同時運行,並知道並記錄CUDA應用程序在第5秒,第10秒等使用的SM的數量? – 2013-02-15 04:30:14

+0

是的。請閱讀文檔並在{CUDA工具包} \ extras \ CUPTI \ sample \ event_sampling中重新獲取示例。該示例在200 Hz的後臺線程上查詢計數器。您應該可以查詢大於2^32/gpu_core_clock_frequency/log2(max_event_increment),否則您將在某些計數器上發生溢出。 – 2013-02-15 18:15:50

+0

我經歷了event_sampling代碼。他們在同一個程序中使用了兩個線程,其中一個負責抽樣工作。我的情況不同。我希望我的CUPTI API分析應用程序能夠在我請求的時候查詢並顯示結果(SM狀態,active_cycles或active_warps無損)給我;就像nvidia-smi一樣。這應該獨立於作爲GPU上的一般應用程序運行的後臺進程。 – 2013-02-16 03:11:52