eopXD

Hi 我是 eop 。 畢業於台灣大學資訊工程系(NTU CSIE), 現在是 Sifive 的 Compiler Engineer。 (Ex-Skymizer Compiler Engineer) 你可以在 eopxd.com 找到我! 我會發布一些對技術的整理、閱讀或觀影的心得或是生活的感悟。 如果覺得這些創作有價值,歡迎支持我。 希望人生能一直過得有趣又有挑戰。

Google Summer of Code 2021

發布於

這不是一篇技術筆記,主要紀錄今年 Google Summer of Code 的參與。當然,對 LLVM 的參與並不會隨著專案告一個段落而結束。在此分享自己參與的方式與經驗,也想跟大家說 LLVM 社群真的是一個很酷的地方。

首先要感謝這次專案的導師 Whitney Tseng, Ettore Tiotto 還有一起參與專案的Toshiki Maekawa。感謝 Whitney 讓我有這個機會參與,並適時給出建議與介紹對優化更熟悉的前輩來幫忙引導或是做 code reveiw;感謝 Ettore 在週會上給出的建議;感謝 Toshiki 在群組聊天中的幫助。

現在的身份已經不是學生,在大學時一直知道「開源社群」這個概念但是不知道從何參與起。到了今年在下班閒暇之餘在網站上逛了今年 GSoC 的 LLVM 專案覺得 Utilizing LoopNest 十分有趣,可以熟悉 middle-end 的優化,決定鼓起勇氣寄信給 Whitney 詢問是否可以參與。這也是我認為開源社群最引人入勝的部分,社群成員會幫你 code review 與解答困惑。當然我對此抱持著感恩的心,也希望自己能變強回饋社群。很高興 Whitney 答應了,於是開始了這次的專案。

儘管大學時的編譯器課並不是 LLVM 的 pass infrastructure,但是拜工作之賜,trace 起來並不太費力。從五月底開始每個禮拜四的晚上 11 點是跟專案成員的週會。一開始對目標並沒有實作上的想像,但是在 Whitney 還有 Ettore 的幫助下逐漸有了了解。

LLVM 是用 Phabricator 來做專案的管理,並不像其他專案在 Github 上面送 pull request,而是在 Phabricator 上創造你這次更動的「patch」,並託付社群其他人來幫你 review,最後 patch 被 accept 後可以自己 commit 到 llvm/llvm-project 上。

隨著送 patch 的過程,其實也會發現原本實作的想像又不全然是正確的。我覺得這也是軟體開發過程中很有趣的一部份,能夠透過合作討論逐漸找到共識與比較好的作法。(當然一開始沒有直接做好做對也是因為我不夠強 TAT)。幫忙檢視的都是十分資深的工程師,來自世界各方,每次 patch 都能夠有一些收穫,實在是非常棒。

到了現在手上也一些 patch 正在進行(有機會再一一介紹),也逐漸知道該怎麼自己獨立與其他成員互動。雖然因為學生暑假要結束了,Toshiki 需要向 Google 繳交一個結案報告,但是我當然會持續這些 patch 的補完。覺得 GSoC 真的是一個很不錯的活動,能夠讓有心參與者能夠有一個開啟接觸開源的管道,也非常感謝那些志願幫忙的導師。

最後再謝謝一次 Whitney, Etorre, Toshiki。希望未來有機會繼續合作,來台灣再帶你們去吃好吃的!

Original link: eopXD

喜歡我的文章嗎?
別忘了給點支持與讚賞,讓我知道創作的路上有你陪伴。

CC BY-NC-ND 2.0 版權聲明

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區