Try   HackMD

2025q1 Homework5 (assessment)

contributed by < charliechiou >

因自動飲料機而延畢的那一年

紀錄閱讀〈因為自動飲料機而延畢的那一年〉的啟發,特別在學習本課程 5 週之後的感想,應具體描述你在課堂、課後創作,和觀摩其他學員的成果時,理解到系統軟體的開發態度、對細節的重視,以及理論和實務的融會貫通。

閱讀完這個系列文我才了解到,真正的開發產品是怎麼一回事,而背後所需要注意到的細節及態度也是超出我的想像的。

誠實面對自己,從選修 Linux 核心設計至今越來越有體會。以前認為自己再修課成績上有維持好一定的水平,在課堂作業上也皆有如實完成,應該是大家所認為的好學生了。然而,誠實面對自己,回顧過往所學。當老師上課詢問到 tanh 的定義時、詢問到中央極限定理時,我回頭反問自己答案為何,心裡得到的答案皆是,我可能還要查一下。甚至上課被老師點到討論問我 uint 可表示範圍時,明明僅是上學期修過的計算機結構的內容都要讓我思考許久。

回顧過去在系統系就讀時所作的畢業專題,當看到作者寫道

最初在我們對現實一無所知,好傻好天真的時候,我們希望做一款能落下杯子、移動杯子,加茶、加糖、加冰塊、加珍珠、再搖一搖、封模,一條龍一氣呵成的設備,操作者只要會按按鈕就行了,聽起來超級屌,簡直就是夢幻般的機器,什麼都不用會擺一台就可以開店了。

心裡也很有感觸,當初在製作畢業專題無人船之前也是這樣天真的認為很簡單,現在回頭想起便是對於細節的不重視,至今回想起仍然可以列出很多當初未經思索所設計的系統可以再更好的地方,而這正也呼應了我在學習上未注重細節導致。

雖然我都用很詼諧的語氣在講述這些過程,聽起來好像很無腦就決定跳下去做了,但實際上我們做了很多調查,取得事實避免依照空想做決策。

老師上課也同時一再強調,切莫舉燭要查閱第一手資訊。在修課過程中也發現很多需要的資訊往往就在規格書中詳列清楚,受到人工智慧發展的影響過去我卻更長訴諸 ChatGPT 並未確實查證,換來的便是撰寫核心模組時候意外的把電腦當掉。

同時,這學期另一項收穫便是對於開源社群的貢獻。雖然目前大多都是對於 typo 或是一些簡單 warning 的處理,但和過去相比已經了解到要如何提交貢獻給其他開源的程式或甚至 Linux 核心。

教材閱讀及 CSAPP 後提問

自訂題目

  • 上課有和老師討論到課堂測驗中 multi-Precision Integers 的實作,而在後來和授課教師一對一討論時老師也提到在 Linux 核心中也不乏有相關的應用,可以嘗試理解 mpi 的操作及在核心程式碼的應用,最後嘗試貢獻程式碼至 Linux 核心。

  • Linux 核心程式碼中引入 sched-ext ,可以藉由 eBPF 的機制來打造 userspace 底下的排程器,因此可以藉由該專案來修正現有和核心程式碼, 或重新在 scx 打造一個 CFS 或是 EEVDF 的排程器方便實驗觀察

  • 機器學習常使用 fp16 來加速運算, 但該機制並非所有類型的核心都有,因此在部份的硬體架構下會無法執行某些機器學習專案。以 huggingface 所提供的 candle 為例,它使用了 gemm16 這個方式來加速導致部份的硬體無法使用(參考 issue #494 )。可以嘗試將其改良,變為可在 fp32 下作運算並比較執行速度。

專題題目

2025 期末專題開發紀錄

比照 2024 年期末專題,簡述你想投入的專案 (亦可建立新專案),至少選出 (或訂出) 二個,過程中可參照其他學員的想法,即 ideas。

  • Linux 核心專題: CPU 排程器

    • 先前的同學的專題透過引入機器學習來改善 load balance
    • 嘗試提高機器學習的效率並改善使用的框架
    • 透過參考不同的排程器來結合各自的優缺點
  • 改進《Demystifying the Linux CPU Scheduler》

    • 目前老師所出的這本書還並未對於 sched-ext 這項專案有更深入的描述因此可以補充說明
    • sched-ext 中許多不同的排程器都值得加入到介紹排程器的書籍中, 甚至引入程式碼來輔助說明