走在平行道路上-後篇

contents

  1. 1. 崩壞季節
  2. 2. 平行助教
    1. 2.1. 追求優化極致
    2. 2.2. 與同學互動
    3. 2.3. 出題考驗
  3. 3. 超艱難修課進行式
    1. 3.1. 期中考
  4. 4. 心靈打擊
  5. 5. 新生活挑戰
  6. 6. 白活系列
    1. 6.1. 加速 NPC
    2. 6.2. 動態規劃
  7. 7. 近期活動

到頭來,最好的平行就是不交流,最好的進展就是不溝通。-Antisocial Parallelism

崩壞季節

在學期後半段,「四月是你的謊言,五月是否要換題目,六月是否要重新來過」聽到這些是否能明白我在說什麼呢?沒錯,就是傳奇的碩二崩壞日子,若是以畢業導向來讀研究所,花個一年或一年半修課,剩餘時間還要產出論文,想而知壓力是如此地大,有些領域甚至要實作一個系統,那麼忙碌程度就明顯不同,學長們崩壞的日子越來越近。

平行助教

追求優化極致

課堂作業的平行題目大多都是純數值計算,相當枯燥乏味,但優化技術屬於編譯器範疇,對於平行課程而言,只需要知道概念就能交差,對於這一點我也無可奈何,數次詢問老師是否要以速度作為評分標準,得到的回答都是「不」,心中帶點傷心,很想鼓勵那些寫得不錯又願意花時間鑽研的同學。看到沒有鑽研的同學嫌這門課簡單、好混,真的好想拉著他們一起來研究。

與同學互動

相較於往年的平行課程,今天很多題目都被設計可以 Online Judge,但有批改娘後,同學在半夜用不錯的想法寫出較快的程序,剛睡醒的我馬上發現自己寫的程序不斷地被幹掉,又花了一個下午加上現有知識再追回去。反反覆覆地過著這種日子,每天醒來都會畏懼最好的寫法會使用什麼樣的概念。心裡過得很痛苦,即使如此我也挺開心的,同學不嫌棄廢廢的我球員兼裁判,還願意在我出的題目下花時間,在下非常感動。

「即使如此我也挺開心的」-《Re: 從零開始的異世界生活》

當我拚命優化 local memory 存取,卻在替同學 debug 時發現意外地加速,於是新境界到來,順便跟同學交流一下加速部份,甚至連開檔時間都要省!一起追尋神乎其技的感覺非常不賴。

效能進展 3571 ms (24-core CPU) -> 2567 ms (GPU, partial local memory) -> 2472 ms (GPU, full local memory) -> 1675 ms (GPU, full local memory + work group opt) -> 967 ms (GPU, global memory + I/O opt + embedded kernel code)

「來吧 快和我一起來修行吧」-《田中君總是如此慵懶》

「看著秒速被拉近,從 profiler 中看出當前問題卡在 memory bandwidth & usage,要著手這一塊優化了對吧。」

「就算是 1 μs,也省給你看!」

「又有人刷新速度極限,睡覺時收到訊息很想裝死。要是再強一點就好了,又要等價交換什麼了嗎?只剩下生命了啊」

「相互學習競爭,別的實驗室好厲害啊,一不留意效能就輸了,得快點想辦法。」

「遇到第一次執行時慢 800 ms 左右,接下來都執行相同輸入又不見這消失的時間,難道是所謂的 library cache miss ? 可是執行檔不到 1 MB 耶。」

「照理來說,演算法迭代到後期的收斂是可預測的,所以硬體能猜測的效能會加快,從平行的結果卻是越跑越慢嗎?明明一開始贏了,後來卻輸了,咱不明白啊,一定是寫壞掉了」

「一早起床就發現相當疲勞,一打開批改娘就發現排名被刷掉。如果贏不了,起碼不能輸,不然這樣有辱實驗室之名!M 之神啊,請賜予我力量活著。不然沒有信心活下去 …」

「動用腦中所有的智慧考慮這個問題」-《熊巫女》

事實上,這名跟我拚搏的學生只有一位 R04922075 古耕竹同學,就與 tmt514 談論的結果,一門課只需要有一位同學認真與助教一起學習就好,「一名足矣!」的精神已經深植我心。

後來才知道他之所以能在長時間拚搏都是因為住在實驗室裡,醒來就可以寫程式做實驗,累了就在實驗室睡,聽起來可是研究最高生活境界,當然聽起來是個廢人似的,但能省下龐大的住宿費相當吸引我,再加上在台北這種鬼地方,還得忍受每天一個多小時的通勤,先不談住宿有多昂貴,學校研究生宿舍不夠住真的不方便,不像以前中央大學,也許地理位置偏僻,研究生宿舍還一堆空位等著人去住呢!除非指導教授收不到學生,否則進住實驗室這件事情我還做不到啊。

「我做不到啊」-《田中君總是如此慵懶》

出題考驗

老師每週只要求同學們撰寫幾支小程序,套用平行有快就好,但時候發生平行反而慢,或者不如預期效果時,通常是因為平行撰寫後,導致編譯器的優化等級起不來,可是老師又不想讓同學學習優化,在兩頭難的情況下,只好進行自主研究,包裝成線上評測只是單純方便實驗,為了減少 IO 導致實驗不準確,可是費了相當大的心力在思考如何出題。

「你就隨便研究一下,然後自學吧!」-《田中君總是如此慵懶》

在沒有任何經驗傳承下,大部分的程式碼都被學長摧毀,拼湊零碎的知識弄成一題,再寫各種版本進行測試,調校參數進行實驗,簡直是在做大規模的研究似的,每天都如此反覆地度過好幾個星期。

「現在我的心裡已經裝不下你了」-《田中君總是如此慵懶》

思考如何解題、設計題目時,總會瞬間 CPU 全滿,誰也無法搶資源!這樣的日子過久了,覺得身心相當疲勞。

「現在的我需要休息」-《熊巫女》

到了學期後半,步入分散式計算的領域,但不知道能不能用單元測試的想法,建構出一套測試 Hadoop 題目的系統,雖然沒辦法完全模擬群集計算的環境,作為驗證程序正確性也有一定可靠性。採用 Hadoop Streaming 的方式進行 Judge。

曾經未完成的夢,是否在這裡能找到答案?

超艱難修課進行式

期中考

迎來在台大第二次期中考,遲遲無法適應這邊的考試方式,一部分原因也許是在以前學校大多都有考古題撐腰,而現在屬於無依無靠的情況下,又加上題目是一坨英文,看錯題目意思的機會太高,而在答題速度方面考試時間上會來不及,期中考變得一項大挑戰。其中一門課提供開書考,甚至允許同學上網搜尋答案,但是一打開試卷,突然冒出了一題「請看以下這一篇論文,然後回答下列問題」頓時的反射動作是直接跳過,經常看的英文論文通常是十幾頁在跳,考試時間兩個半小時,沒時間耗在這。

然而,在考試結束後,老師特別講到「作為一個研究生,看論文的能力很重要的」於是特地被老師點出來「你怎麼沒寫那一題呢?」只能苦笑地回應,在心中暗自地述說『因為我怕英文啊』那一題佔了 10% 成績,連看都沒看就放棄了,而那張試卷寫到最後一刻才把所有題目寫完,到底該不該慶幸沒去看那一題呢?

「我一點兒也不知道」-《熊巫女》

心靈打擊

這陣子受到強烈打擊,原因可以歸納出以下幾點:

  1. 大學長火速交了女朋友並且擺脫魯蛇行列
  2. 弄了半天的環境,被橫插一行突然 PASS
  3. 寫得程序在不知名的情況下被女同學說很醜
  4. 程序一直寫不好、不快
  5. 愚蠢至極

碩二學長則一直在暗示要抓交替,如報帳和財務管理、伺服器管理 … 等,準備進入三者皆無的狀態,徹底用到廢掉。

「你真的被詛咒了嗎?」-《Re: 從零開始的異世界生活》

新生活挑戰

由於助教薪水大概一個月七千,但發送方式不是學校支付,拖了好幾個月才會到,當然一個月七千在台北吃飯,若要吃點好的,一個月七千一點也不夠,都到了這把歲數,還是要想辦法養活自己的一小部分吧。於是小夥伴表示「薪水到現在都還沒發出來,一個月六千哪能過生活。」最後在小夥伴的催促下,Morris 打開家教網找零工啦。但打電話是多麼令人害怕得一件事情 …

「我絕對不會這麼失敗的」-《田中君總是如此慵懶》

被學長推去面試家教,明明都已經鼓起勇氣出發,卻又過程中潑冷水。去也不是,不去也不是,這搞得我好混亂,到底還能相信這世界什麼地方?

「妳這麼關心我,真不好意思,其實你不用太在乎我的,我喜歡一個人待著。」-《田中君總是如此慵懶》

白活系列

加速 NPC

「同樣都是人類,為什麼差距這麼大!」-《線上遊戲的老婆不可能是女生》

當年在 NCPC 搞不出來的 Problem I Christmas Gifts (NP-hard),在賽後用 DLX 運行效果不錯,在啟發函數加上延遲標記更是屹立排名前數位已久。最近又因為平行把題目挖回來討論,在去年釣到大一學弟來解,便以飛快的速度擊破測資,最後達到加速 20x。再把當初需要跑 30 秒的測資來運行,現在只需要短短的 50ms。而都這麼快了 … 應該不用平行吧。

動態規劃

為了出題目,根據研究論文後的結果,出了一題常見的動態規劃題目,也就是 matrix chain multiplication,儘管算法最終可以加速到 $O(N^{\log_2 3})$,但在 30 年前就存在 matrix chain multiplication 的 $O(N \log N)$ 作法,那在 $O(N^3)$ 套了一堆剖分方便平行到底在窮忙什麼?

「當面對諸多選項時,我實在不曉得到底該選哪一個才不算錯。」當一個 Flag 打開之後,瞬間掉了不少 Performance …

近期活動

最近才把原本要出題目的測資補起來,論文誇張的加速似乎是跟非常非常蠢的版本比較,但快個兩三倍仍相當值得,編程複雜度也是增加兩三倍。各種層面的題目都已經全數實作好放上批改娘上提供線上評測。心想當研究一直發展下去,難道都不會窮盡?清單上的靶子長得越來越奇特,研究學者果真是一群變態啊。

「我已經失去活下去的信心」-《田中君總是如此慵懶》

學期最後一堂 Workshop 結束,心裡總算舒坦了些,不用每周在廢物的羞恥 play 下度過。感謝上課同學們賜教予我!

「謝謝」-《田中君總是如此慵懶》