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

kstoko02 (陳沁妤)

簡介

  • 國立成功大學 人工智慧科技碩士學位學程 116 級
  • GitHub: kstoko02
  • HackMD: winterchen

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

成果發表和貢獻

2分。

作業/隨堂測驗

7分。

期末專案

9分。

使用 perf 對 TinyGL 進行效能分析,加入 -O3 -march=native 編譯優化後,透過 perf stat 與 perf annotate 找出六個主要效能熱點函式(glopVertex、光柵化函式、clampf、gl_shade_vertex、glopMaterial、glopCallList),並針對每個熱點做了組合語言層級的根因分析,歸納出三類問題:記憶體存取模式不佳(cache locality)、小函式呼叫開銷過高、以及未利用 SIMD 向量化。

這學期完成的是診斷階段,暑假將針對這些問題進行實際優化並重新量測效能改善幅度。

交流提問

與授課教師的互動

9分。

1 對 1 討論

  • 2 次下課後實體討論
    • 5/12 下課後找老師討論期末專案題目,並確定以 TinyGL 為主題,找出效能瓶頸並進行改進,同時以科學化方法量化改進成效。
    • 6/23 下課後找老師討論,第一次測試已使用 perf 量出 cache miss 數據,但只針對單一場景進行量測。老師提醒不同的場景可能造成截然不同的 cache miss 行為,回去後針對靜止和轉動兩種場景以及其他不同場景分別測了 cache miss ,並記錄在期末專案中。

課堂問答次數

所見所聞所感

10分。

看完〈因為自動飲料機而延畢的那一年〉這篇文章後,感觸很深。因為我現在做的期末專題,也是一個過去從未接觸過的領域。現今 AI 技術過於強大,加上越來越多人轉行投入資訊業,科技領域的競爭日益激烈,這讓我對未來的看法和大學剛入學時已經完全不同。資訊這個領域太廣了,正因為看清了現在的局勢,我決定要確立一個明確的方向,好好深耕下去。過去曾做過與圖像相關的期末專題,讓我覺得可以朝這個方向繼續走下去。在提出這次期末專題之前,我花了兩週時間自學 3D render 的原理,參考了 tinyrender 這份教學。我發現這和我過去做過的東西完全不同,是一套全新的概念,對我來說是個不小的挑戰,但我相信自己有能力完成它。實際進行專題的過程中,因為對 render 相關知識還不夠熟悉,導致一開始測出來的效能數據不夠準確,常常測完之後才發現方法有誤,只好重新再測一次。不過也正是這樣反覆試錯的過程,讓我對 render 原理和效能測試方法越來越熟悉。

在做 Homework2 (stdc) 之前,「0.1 + 0.2 ≠ 0.3」對我來說只是大家熟知的電腦常識,卻沒有真正理解背後的原因。透過這次作業,我第一次從 bit 層級分析浮點數表示方式,理解這並不是電腦計算錯誤,而是十進位與二進位在表示分數時存在本質上的差異。十進位能精確表示的數值(例如 0.1),二進位不一定能精確表示,因此浮點誤差是有限 bit 表示下必然存在的限制。這份作業讓我體會到,許多看似錯誤的程式行為,深入分析後可能並非實作問題,而是底層規格與設計取捨造成的結果。

這門課中,老師經常提醒我們要先閱讀規格書與相關文件,而不是直接依賴 AI 提供的答案,因為 AI 的回答不一定完全正確。雖然一開始閱讀規格書需要花費較多時間,但在實際學習過程中,我也曾發現 AI 提供的答案與規格內容有所差異,進一步驗證了理解原始文件的重要性。此外,老師分享了許多教材與學習資源,也讓我有更多機會深入探索課程相關內容。

自我評量 (1 ~ 10):

方案 B : \[ 1+floor(GEOMEAN) = 1+ (2 \times 7 \times 9 \times 9 \times 10)^{1/5} \approx 1+6.47 = 1+6 =7 \]