2015-09-06 122 views
0

我正在使用Tesla K20c和nvidia-smi測量功率,因爲​​我的應用程序正在運行。我的問題是耗電量沒有達到穩定狀態,而是持續上升。例如,如果我的應用程序運行100次迭代,則功率達到106W(4秒),1000次迭代117W(41秒),10000次迭代122W(415秒),每次都略微增加。我正在寫一些關於我應該記錄哪種功率值的建議。在我的實驗設置中,我進行了400多次實驗,並且每次進行10000次迭代至少目前是不可行的。該應用程序是矩陣乘法,只需要幾個毫秒就可以執行一次迭代。增加迭代次數不會給結果帶來任何價值,但會增加運行時間,從而實現功率監控。使用nvidia-smi什麼是捕獲能量的最佳策略

+1

我之前已經在K20c上進行了這樣的實驗,時間超過10分鐘,並且基於此我認爲您會發現在約5至6分鐘之後達到穩定狀態,之後僅存在+/-的噪聲振盪2W。這些卡有一個非常大的金屬背板,因此帶有存儲器的整個GPU需要一些時間來加熱,電子設備的功耗隨着溫度的升高而增加。此外,卡被積極冷卻,卡溫度越高意味着風扇旋轉速度越快,如果使用內存,則會產生大約5W的差異。你打算如何使用你的測量結果? – njuffa

+0

感謝您的洞察力。這是非常有用的知道。我正在爲不同的矩陣大小和另一個參數即元素數量對GPU性能和功耗進行建模。我有大約20個矩陣大小需要考慮,每個矩陣大小大約有20個不同數量的元素。 – Tania

+0

如果您只需要這些版本的*相對功耗,是否不足以在30秒內運行每個版本,然後讓GPU閒置30秒以使其冷卻(以大致均衡每次運行的啓動條件)?您的400個實驗每個需要一分鐘,並可能在一夜之間完成。請記住,GPU上的功率傳感器並非旨在提供高精度測量,因此您應該假設總測量噪聲可能爲5%。您可能希望平均來自同一類型的多個GPU的測量結果,以考慮製造公差 – njuffa

回答

3

隨着時間的推移,功耗增加的原因是GPU在持續負載下升溫。電子元件在升高的溫度下吸收更多的功率主要是由於歐姆電阻的增加。另外,特斯拉K20c是一種主動散熱的GPU:隨着GPU的升溫,卡上的風扇旋轉更快,因此需要更多功率。

我已經在K20c上進行了與您非常相似的實驗,時間長達10分鐘左右。我發現在5到6分鐘之後功率平穩,並且之後只有+/- 2W的噪聲水平振盪。這可能是由於風扇溫度控制反饋迴路中存在滯後現象,或者是由於每個內核結束時GPU未完全利用造成的短期波動。由於風扇速度差異造成的功率消耗差異大約爲5 W. GPU達到穩定狀態需要相當長的時間的原因是整個組件的熱容量相當大,包括一個堅固的金屬背板。

您的測量似乎針對於確定相對與400個不同的代碼變體運行時的功耗。穩態功耗的實現似乎並不關鍵,只是每種變體的測試條件與實際情況相同。請記住,GPU的功率傳感器並非設計用於提供高精度測量,因此出於比較目的,您應該假定噪聲級別爲5%。爲了進行精確比較,您甚至可能希望平均來自同一類型的多個GPU的測量結果,因爲製造公差可能會導致多個「相同」GPU之間的功耗變化。

因此,我會建議以下協議:運行每個變種30秒,測量功耗接近該間隔結束。然後在運行下一個內核之前讓GPU閒置30秒讓它冷卻下來。這應該爲每個變體提供大致相同的開始條件。如果您發現溫度保持較長時間,您可能需要延長建議的空閒時間。 nvidia-smi報告的溫度數據可以引導您在這裏。通過這個過程,您應該能夠在一夜之間完成400個變體的測試。

相關問題