深夜的實驗室只剩主機嗡鳴,螢幕上卡在87%的進度條像在嘲笑我。三小時前投遞的氣象模擬任務,因為mpirun參數沒綁定NUMA節點,128個核心擠在兩顆CPU上打架。當我顫抖著敲入fpm封裝mpirun的組合拳,會是突破瓶頸的破壁機。別被編譯工具鏈嚇退,我們要玩的是MPI_BAND寬頻設定錯誤,導致40%時間浪費在等封包。用NUMA節點未綁定時,矩陣計算延遲高達4μs,效能曲線像吃了類固醇。關鍵在MPI_Allgather吃掉35%時脈。用fpm動態插入偵錯鉤子:
當集體操作超時自動觸發NVIDIA Nsight,抓到某個進程在Barrier前偷偷做Segmentation fault大崩潰嗎?在fpm的錯誤攔截模組裡埋這個:
當MPI進程崩潰時,自動轉儲記憶體快照+郵件告警+重新排隊任務。上個月台北地震導致機櫃斷電,這套機制救了我們價值23萬GPU時數的任務。
▍效能對比實測
在台灣杉二號超算用千核級別,省下的電費夠買好幾台咖啡機。
現在我的fpm配置庫裡有點擊fpm run就像選咖啡口味。當螢幕再次亮起進度條,你知道這次它會像高鐵般穩穩衝向終點——而你可以安心啜飲那杯終於不會涼掉的拿鐵。
|