第151章 比賽進行時

投票推薦 加入書籤 小說報錯

  第151章 比賽進行時

  為了儘可能地保證比賽的公平公正,所以所有參賽隊伍的比賽都會有各自的區域,用半透明的玻璃窗隔開,外面可以看到裡面,但是裡面看不到外面,這也是為了方便裁判的監督。

  和開發有關的事情,都必須在各自隊伍的區域裡完成,而且比賽期間,參賽隊員不能和其他隊伍互相交流,也不能請外援。

  開發大廳內,鍵盤敲擊聲此起彼伏,遷徙者的比賽區域內,這次獲得線下賽資格的,一共十支隊伍。

  在十支隊伍里,有一支叫做星火的團隊,編號07,團隊一共四個人,張昊是隊長,架構師,王琦是CUDA優化方面的專家,趙敏負責性能分析,劉博負責底層指令與調試。

  雖然線上賽的時候,他們的成績並不算多好,但那不是因為他們的技術不行,而是經過閱讀比賽規則之後,他們就猜到了後續可能還會有下一階段的比賽,畢竟沒有什麼獎金這麼多的比賽會僅僅用線上賽決出勝負的,所以他們做出了一個大膽的決定:利用線上賽的寶貴時間和實戰環境,全力熟悉和深入Aetos生態。

  因此在整個線上賽期間,他們都在抓緊時間熟悉Aetos生態,對於這種新的東西,越了解它,之後的勝算就多一份,張昊系統地研究了Aetos的軟體架構白皮書,著重理解其設計理念與CUDA的根本區別。

  王琦則是將大量精力投入研究Aetos提供的計算原語、內核編寫規範,並嘗試用Aetos的方式重寫了一些經典的CUDA算法,親身感受兩種範式的差異。

  趙敏早早地就開始摸索Aetos平台上的性能剖析工具鏈,對比其與NVIDIA

  Nsight系列工具的異同,學習如何在這個新平台上快速定位性能熱點。

  劉博專注於Aetos的編譯器flags、調試接口以及與其他國產軟硬體環境的兼容性問題,為線下可能遇到的各種意外情況做準備。

  就是有點類似於考研時候的408,對於很多基礎性的開發場景,408的用處可能不大,但是隨著技術的深入,就能越來越體現出基礎的重要性,同理,Aetos也是如此,越了解其基礎,才能在遇到各種問題的時候解決起來遊刃有餘。

  而比賽的第一天,他們之前的準備工作就已經體現出來了極大的優勢。

  當同賽道其他隊伍還在思考沒有共享內存,NUFFT的優化該從何入手,並且反覆查閱CUDA文檔試圖找到替代方案的時候,星火團隊的隔間裡,王琦已經在白板上畫出了一個全新的計算流圖,他一邊畫一邊向張昊解釋,「昊哥,按我們之前的分析,Aetos的統一內存雖然無法手動控制,但如果我們把每個非均勻數據點及其影響的網格區域定義為一個計算包」,利用它的aetos—task—chain原語顯式聲明依賴,或許能天然規避掉那些不規則訪問帶來的延遲。」

  張昊凝視著白板上逐漸成型的計算流圖,手指點了點:「思路上倒是沒什麼問題,不過我擔心的是,如果我們把每一個非均勻數據點都作為一個獨立的計算包」起點,這會產生海量的初始任務,Aetos運行時雖然號稱支持極細粒度並行,但其任務調度器本身存在固定開銷,當任務數量遠超核心數量時,調度開銷可能會淹沒實際的計算時間。」

  這就有點像是,如果全國十四億人都參軍,那戰前點名可能都得好幾天的時間。

  隨後他轉頭看向一旁正在敲鍵盤的趙敏:「趙敏,線上賽後期,我們針對不規則稀疏矩陣向量乘設計的那套動態任務聚合」啟發式算法,它的參數調優和模型驗證完成了嗎?」

  「已經基於線上賽收集的多種負載模式完成了校準,根據離線模擬和線上小規模測試的數據,在NUFFT這類問題中,通過合理的聚合閾值控制,我們有信心將任務調度開銷從可能超過70%的災難性水平,壓制到總耗時的15%以內,不僅降低了調度器壓力,更重要的是,複合任務內部更容易形成連續的內存訪問模式,從而更好地利用Aetos統一內存架構中的緩存層次。」

  動態任務聚合設計的核心思想是根據任務間的數據局部性,具體來說,是判斷不同計算包」所訪問的均勻網格區域的重疊程度來動態地將多個細粒度任務捆綁成一個粒度更大的複合任務。

  一旁正在查閱編輯器文檔的劉博抬頭:「還有一個點需要注意,編譯器對aetos—task—chain的嵌套深度和複雜度是有限制的,如果我們在一個任務鏈內部聲明了過於複雜的依賴關係,超過某個閾值後,編譯器會出於保守策略,放棄深度優化,甚至可能將其降級為效率較低的順序執行模式,王琦你在設計任務鏈拓撲時,需要避免出現這種複雜度爆炸」的節點。」


  王琦點點頭,這一點他之前倒是沒有想到,不過這也證明了團隊參賽的好處,一個人無論再嚴謹,除非像是周昀那種開掛的,否則都會有疏漏,這時候隊友的作用就體現出來了,幾個人的頭腦風暴,很多時候就足以應對大多數情況了。

  他想了一會兒,拿起筆:「明白了,那我們可以採用一種分層遞歸的策略,第一層,我們先用一個輕量級的分區」任務,根據非均勻數據點的空間分布,將它們粗略地劃分到不同的邏輯塊中,這個層級的任務數量會很少,然後,第二層,在每個邏輯塊內部,再獨立構建一個更細粒度的任務鏈,來處理塊內數據點的具體插值計算,這樣,既避免了單條任務鏈深度過深觸發編譯器限制,又通過分區實現了數據局部性,整個結構也更清晰,便於我們後續分塊優化和調試。」

  幾人一聽,覺得這個思路挺好,張昊作為隊長點了點頭:「可以,那咱們就按照這個思路來。」

  「明白!」其他三人應聲點頭。

  而在星火團隊已經有了具體方案的時候,其他隊伍甚至還在調試Aetos的編譯器,因為這次的任務光是準備工作就比他們線上賽時候做的東西難上不止一個等級。

  這時候就體現出了基礎的重要性,不止是星火團隊,三個賽道進度最快的幾個隊伍,除了極個別的隊伍,這些團隊基本都有一個共同特點,就是線上賽的排名不高不低,都用那些時間來熟悉Aetos的技術了。

  五天的時間,在鍵盤的敲擊聲飛速流逝。

  雖然有著線上賽的熟悉,但是對於大多數習慣了CUDA舒適區的隊伍而言,在新的生態里重新寫一遍NUFFT還是有難度的。

  但是對於像星火團隊這樣花費了大量時間在基礎學習上的隊伍,任務進度飛速,當其他一些隊伍還在為某個詭異的編譯錯誤耗費一整天時,星火團隊可能已經在劉博的經驗指引下快速繞過,最終,在經歷了無數次微調後,星火團隊的性能曲線艱難但持續地向上爬升。在截止前,他們的NUFFT遷移版本,在保證數學正確性的前提下,性能達到了一個足以讓他們在【遷徙者】賽道中穩居前列的數值。

  五天期限一到,所有開發環境被強制鎖定。

  「就差一點,再給我半天,不,哪怕兩小時,那組循環展開加上去,說不定就能摸到0.8了————」

  「有幾個警告沒來得及處理,希望不會影響評分。」

  「0.85,不過沒什麼值得驕傲的,NUFFT我們本身底子就好。下一階段如果是全新領域,就沒這麼輕鬆了,都別鬆懈。」

  「總算提交上去了,老天爺,我最後一天只睡了三個小時,感覺心臟都要跳出來了,能不被淘汰就是勝利————」

  「基礎太差了,線上賽光想著沖排名,沒好好看Aetos的文檔。」

  「那個內存泄漏,要是早一天發現,我們也不至於性能差那麼多。」

  對每個人來說,這五天的經歷都是不一樣的。

  就像是考試一樣,對於差生來說是折磨,對成績好的學生來說,解題是享受,不過要說最難受的還是那些有能力但是卻因為時間原因不能答完題目的學生。

  但這也是沒辦法的事情,效率」也是比賽參考的重要因素之一。

  選手們低語,被隔絕在各自的玻璃隔間內,成為了破壁者營地第一階段最真實的尾聲,他們只希望,不要在之後的淘汰名單中看到自己的名字就好。

  短暫的等待後,所有參賽者再次被召集到主會場,舞台上方的大屏幕已經亮起。

  執行秘書長手持最終結果,直接切入主題。

  「經過技術評審委員會嚴格的自動化測試與專家評審,第一階段破壁者營地」各賽道積分排名現已確定,積分由任務完成度、性能提升幅度、代碼對Aetos特性運用深度、代碼穩健性及架構創新性等多個維度綜合評定。」

  【遷徙者】賽道最終排名:

  1.李維團隊—積分:97.0(性能:0.85TFlops,.——)

  2.星火團隊—積分:89.0(性能:0.78TFlops,......)

  7.探路者團隊—積分:52.0(性能:0.41TFlops,————)

  8.北極光團隊—積分:48.5(性能:0.49TFlops,......)

  星火團隊隔間附近,王琦的眼睛瞬間瞪大了:「他們不也才是線上賽中游嗎,怎麼突然這麼猛了?


  」

  張昊笑了笑:「看來也不是只有我們在隱藏實力,畢竟是世界級的比賽,臥虎藏龍不也很正常嗎?」

  「說的也是,不過這樣一來,咱們奪冠的難度不是變大了嗎?」

  而第六、第七位的隊伍成員看到自己隊伍名字的時候則是露出了慶幸的表情,好在是沒被淘汰。

  不過被淘汰的隊伍成員,臉色就不太好了,畢竟一輪游這種事情,聽上去就不太光彩。

  除了【遷徙者】賽道,【超越者】、【造夢者】賽道的排名也相繼公布,同樣各有兩支隊伍被標記為淘汰。

  【超越者】賽道最終排名:

  1.極光組—積分:91.0

  2.智擎—積分:88.5

  7.探索者—積分:53.5

  8.算法先鋒—積分:49.0

  【造夢者】賽道最終排名:

  1.靈風團隊—積分:93.0

  2.獨行者DSLab—積分:90.5

  7.思維邊界—積分:54.0

  8.未來構想—積分:47.5

  「以上,即為第一階段最終結果。恭喜所有晉級的團隊,你們證明了自身的實力與潛力,同時,我們也感謝所有參賽者的努力與付出,包括即將離開營地的隊伍,破壁之旅雖止於此,但技術的探索永無止境。」

  雖然淘汰的隊伍不能繼續參加比賽了,但他們也會收到來自組委會的安慰獎,畢竟能夠參加線下賽的,技術能力都是絕對過關的,這都是重要的人才資源,這才是舉辦這次比賽最為重要的原因。

  秘書長掃了眼台下繼續說道:「根據比賽規則,第一階段積分將按一定比例計入最終總成績,這意味著,你們目前的排名,將直接影響你們爭奪最終獎金池的起跑位置!

  但正如我們一直強調的,在這裡,沒有一勞永逸,第一階段的表現已成定局,第二階段,將是全新的挑戰,積分權重更高,暫時的領先者,若稍有鬆懈,便會被後來者超越;暫時的落後者也絕非沒有機會,只要你能在下一階段實現更大的突破!」

  「後天上午九點,第二階段任務將在此公布,現在各位有一天的時間休息。」畢竟連續一周的腦力勞動,消耗肯定不小。

  裁判組,周的幾人正在討論第二階段任務的選題。

  題目其實早就出了幾個,現在討論的不過就是選哪個的問題,而且除了討論選題之外,還有一件事情,那就是關於李維團隊身份的問題,如果仔細觀察就會發現,他們隊伍的積分和第二名的差距極大,這是其他幾個賽道都沒有的情況,這其實是周昀的提議,在他敏銳的觀察下發現,李維團隊對於CUDA的理解已經超越了一般的開發者,他們就像是真正參與過CUDA的原始開發一樣,這一點從他們的代碼上就能看的出來。

  所以,他非常懷疑,這個李維的背後很有可能就是英偉達,不過沒有證據,而且人家確實做的好,自然就給了個很高的分數。

  不過對於這種情況,他們還是得好好討論討論該怎麼辦。

章節目錄