分享到plurk 分享到twitter 分享到facebook

版本 e1a325a1f75e2677491c5e9273ce05e36b388c21

ollieni (倪英智)

2024 Linux 核心設計 春季班 自我評量

  • 簡介:國立成功大學 敏求智慧運算學院 人工智慧機器人 114 級
  • GitHub: ollieni
  • HackMD: NIYINGCHIH

成果發表與貢獻

課程教材修訂

作業與隨堂測驗

完成指定的佇列操作,針對使用到的 git hook 和 clang-format 做查詢並理解,完成 list_sort 和 Tim_sort 的引入,實作 Fisher–Yates shuffle。

重新理解並探討 quiz1 + 2

重新理解並探討 quiz3 + 4

撰寫閱讀〈因為自動飲料機而延畢的那一年〉後的心得,研讀課程教材並提出疑問。

期末專題

Pub/Sub模擬: HackMD

我實作出 Pub/Sub 模型的 Linux kernel module,還有探討訂閱者數量 vs. 執行時間在不同組態的表現,也有做 Kthread 和 CMWQ 的效能比較,剩提出改善方案還沒有完成。

與授課教師的互動

一對一討論:5月 20日 (星期一)⋅下午 7:00 - 7:30

  • bi-endianness 如何切換?

會在開機時做選擇,若要在開機後做轉換會很麻煩。

  • CUDA 如何串接軟硬體,讓程式可以運用 GPU 資源?

授課教師告知我還有 OpenCL 這個框架,CUDA 和 OpenCL 都是平行運算框架,OpenCL可以支援很多種計算設備,如 CPU、GPU、FPGA,而 CUDA 只能支援 Nvidia 的 GPU。

  • 6/20 上課 按計算機計算答案

修課心得

我學到很多大學沒注意到的事情,例如使用 hook 來要求 commit message 的品質,以及使用 clang format ,使程式有一致的風格,可以使得大專案變得更加容易協作,更好的去實行 code review 的動作,這對要成為一個工程師來說是一個很好的素養。

實作期末專題讓我去研讀了各大雲端平台所提供的 Pub/Sub 服務文件,充分理解甚麼是 Pub/Sub 模型,Pub/Sub 的組成和運作機制,也練習了如何做出一個 Linux kernel module,我也理解並使用 ktime 函式庫做時間的測量,也實作出了用兩個指標紀錄內容的 circular ring buffer,為了在有限的記憶體空間內紀錄模擬發出的訊息,我也有實作訊息被取用完後要從 circular ring buffer 移除,熟悉 circular ring buffer 用指標來記錄內容頭尾以達到方便加入刪除內容的操作。

閱讀〈因為自動飲料機而延畢的那一年〉給我很多心得感想,在完成一整個專案的過程,一定會遇到很多困難,看了前輩的整個心路歷程,我覺得很重要的事情是如何面對困難與挫折,在這堂課我誠實面對自己,我基礎打得不好,在很多方面以我想成為的人來說都有所欠缺,但是這堂課有提升我的自我學習能力,課程的教材文件我對有興趣的內容,也就是編譯器相關文件都有詳細閱讀,文件中所附連結也有點進去查看,實作期末專題的時候,我也去閱讀 Pub/Sub 文件讓我更了解題目要實作甚麼,也去查詢對於這種要多次的實驗,別人是如何操做並記錄的,看到對於這種重複性高的動作,別人如何寫自動化腳本去紀錄實驗數據,拿別人的腳本做修改以供我的實驗使用。

與指導教授的學習回顧

二月份回顧 : 3月7日 週四 下午 10:41

  • 指標的操作、bitwise-operation、<list.h> 的運用,以及工程師的好素養 : 怎麼樹立一致且易於協作的程式開發規範、如何使用 Git 以及寫出好的 commit message,研究自動測試機制。

三月份回顧 : 4月8日 週一 下午 8:32

  • 陸游的名言:“紙上得來終覺淺,絕知此事要躬行”,以及蔡志浩的觀點:“大部分的人一輩子洞察力不彰,原因之一是怕講錯被笑。想了一點點就不敢繼續也沒記錄或分享,時間都花在讀書查資料看別人怎麼想。看完就真的沒有自己的洞察了”

  • <The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits>

自我評量

\((9 \times 8 \times 7 \times 7 \times 7 \times 6) ^ {1/6} = 7.27\)

使用方案 B 計分:\(1 + floor(7.27) = 8\)