Re: [心得] 外系準備資工所心得

作者: kyuudonut (善良老百姓)   2020-02-03 21:40:35
在去年五月看到短ID大大 (shortid) 分享外系就讀資訊所心得時,
那時的我也剛口試完,也想發文響應,但無奈當時候還在趕實驗,因此作罷。
直到最近剛退伍才又想起這篇文章的存在,此文章的受眾設定為對於計算機系統
(Architecture/Compiler/Operating system) 有興趣的學生們,其中又主要為外系學生。
會寫下這篇文章的最大原因是,我發現其實許多計算機系統領域的前輩們,
都不是如我們所想像地原先就讀於本科系,
但系統的底層似乎又離非本科系的我們太過遙遠,
希望我的經驗能夠帶給有志於系統領域的大學生們一些參考。
網誌好讀版 (無廣告及音樂):
https://2henwei.blogspot.com/2020/02/thoughts-on-my-ms-degree-in-cs.html
-
原本這篇文章,在百般深思後,是打算不寫的。但在就職日 (On board) 來臨之際,內心
也隨之躁動而不安;我想,有必要藉此,順便喚醒我甫退伍後鬆散的思緒,同時也因為受
到太多人的幫忙,讓我感到有責任必須去紀錄在這個人生里程碑下 (Milestone) 間所發
生的事,供有需要的後輩參考。
-
故事得從 2015/11/4 開始說起,這天,我向成功大學交通管理科學系的 L 老師正式
請辭研究助理的工作,因自覺無法在此地繼續精進資訊系統相關的知識。我拿著當年暑假
參加的資訊比賽 (由中興工程顧問公司所舉辦) 所獲得的獎學金,毅然報名了資訊工程學
研究所的補習班課程。準備的心得可見我在 PTT 所發表的文章。
-
時間來到 2017 年 2 月,各研究所陸續放榜,我也順利地在臺灣大學找到指導教授,承
蒙 Y 老師不嫌棄我的管理背景下,收了我做研究生。我也在離研究所開學的這段時間
,選修了 jserv 老師在國立成功大學開設的系統軟體課程,藉以精進自己對計算機系統
的了解。
從我當時的期末個人評量可以看到,這堂課程啟蒙了我對當代電腦系統的認識,
不僅是程式碼專案的維護 (Coding style, build system, version-control system,
...),還有培養得以一窺網路上開源專案 (Open source project) 的能力。除了大家一
般在意的實作之外,老師也會指派會議論文 (Conference paper) 給我們撰寫心得報告 (
直到碩二時,回去翻過往記錄才發現:哇,以前讀的是一篇 TACO paper 啊!)
最後,修這堂課還可以體驗在三更半夜裡,老師不斷在 GitHub 發 Comments/PRs 過來;這麼好的課,不修嗎?
-
然而,與 jserv 老師的緣分並未隨著課程結束而日薄,在學期即將結束之際,我在
Facebook 發了訊息給老師,表明想一起研究當時 Java 9 所新增的 AoT (Ahead-of-Time) feature。
這也是我第一次,從無到有,去設計數個實驗去測試幾個仍在開發中的程式碼專案
(OpenJDK & OpenJ9),相關成果可見 JCConf 2017 的錄影。
也因為這樣的經驗,jserv 老師繼續邀請我加入國立成功大學分散式帳本實驗室 (DLTcollab),並籌備了 dcurl 專案,藉以榨乾 (Utilize) 伺服器硬體架構來加速 Proof of Work
(PoW) 的運算,相關成果可見 SITCON 2018 的錄影。
-
儘管在系統實務上的經驗有所建樹,我在碩士班一年級裏唸得並不是很開心。因為研究課
題認知上的歧異 (Accelerate/optimize machine learning system),在 2018 甫過完年
的學期初,我決定更換指導教授到 H 老師的實驗室,堅持研究新興的計算機架構
RISC-V。
可想而知,這段時間的心理壓力非常大,因除了未定的研究題目外,暑假亦得前
往老師安排的新竹晶心科技架構設計部實習;但在事後,這也是我認為在學涯期間,所獲
得很有價值 (Valuable) 的經驗之一。實習結束後,
我也順水推舟地安排產學兩邊的合作,一同進行向量架構 (Vector architecture) 的研究。
進行這個研究題目的難處在於:向量架構在電腦科學史裏算得上是一種上古技術。
研究過程中,我彷彿在進行某種資訊領域的文藝復興,一邊閱讀著 2,30 年前的文獻,
一邊從 H 老師口中摸索曾經的微架構 (Microarchitecture) 細節 (註: H 老師曾於 Cray Research 工作,後者為當時超級電腦市場霸主。)
當我描繪出心目中的架構設計,還得與新竹晶心確認是否夠實際 (Practical);
當我考慮到太多實作細節時,便不曉得該如何在期限內完成研究。而這兩邊的權衡,
也一直為架構領域學生們 (Architecture students) 所困擾著。而等到我完
成模擬器 (Simulator) 的實作後,已約是 2019 年 2 月中了,與 H 老師設計幾個實驗後
,便順勢投稿在臺灣舉辦的 RISC-V Workshop 發表,成果可見錄影。
在三月份的 RISC-V Workshop 發表結束後,又花了一個月撰寫碩士論文以準備五月份的
論文口試 (發表結束後的茶會,H 老師突然跟我說可以畢業了,可以不要這麼突然嗎?)
口試後的兩個月期間,因為實驗工具已儼然成形,又另外準備了幾個關於編譯器最佳化
(Compiler optimization) 的實驗,準備投稿其他研討會。
求職方面,我前往面試的 MediaTek, Qualcomm, Synopsys, SiFive 都有獲得頗正面的評價,
由於面試過程過於冗碎,不在此贅述。最後,碩士學涯便在投稿及求職完成後平靜地結束。
-
文末,我想鼓勵外科系對計算機系統有興趣的學生,努力爭取充實自己的機會。如果我大
四沒有跑去修成功大學電機系陳中和老師的 Computer organization (當時還並未決定轉
唸資訊所),Y 老師或許就不會收我這個外系學生做 RA;
如果我沒有在暑假時與 jserv 老師一起研究 Java virtual machine 以及跑去 H 老師的虛擬機器課堂上踴躍發問,H 老師可能也不會收我這中途學生;
如果我沒有去新竹晶心科技實習,我的模擬器也不可能在 RISC-V vector specification
都還沒有確定的情況下,花費四個月完成。
而在做這些決定之前,我都還沒有想過這麼多意料之外的事情會發生。正因為如此喜歡計算機系統運作的細節,讓我們願意拉起衣袖、弄髒雙手,踏離原本的舒適圈,一頭埋入這個世界。
zhenw

Links booklink

Contact Us: admin [ a t ] ucptt.com