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

版本 c5722fd94d789a9de02bb9fba0c7aa423533e2dc

User/chenishi

Changes from c5722fd94d789a9de02bb9fba0c7aa423533e2dc to 35c82b962b522bd91cb71f2ce4f3aa627e5ac9b5

陳奕熹 (Chen, Yi-Xi)
===

### 聯絡資訊
Email: chen.ishi@gmail.com <br>
Phone: 0910635509

## 2018秋季班 個人評量
* (秋季班)作業及筆記
    * [Skia’s New Approach to SIMD](https://hackmd.io/s/rkvnqdyZV)

        關於 Skia 的研究最後上半途而廢,我們從一開始從 github commit log 發現到他們沒有用到 SIMD 的 SkNf 架構,到後來發現事實上該專案已經有相關的完整實做<br/>
        但是雖然結構有實做出來,但是相關的函式庫完全沒有被應用層使用到;「把該架構應用到實務上」應該是工作量相對小的,同時具有重大意義的開源貢獻;但是可能因為鄰近學期末大家有自己的規劃(我需要規劃寒假的畢業旅行,另一名組員則是要忙實習的工作),而且大家對之前一直弄浮點數沒有具體弄專案出來有點煩躁,也有一部份是我們之前開的 FPNN (用定點數實做機器學習模型)進度停滯了一段時間,導致這個專案有點不了了之<br/>
        我打算萬一今年過年還是沒有特別計畫的話,再把這個坑研究一下

    * [浮點數的運算](https://hackmd.io/s/H1SVhbETQ)

        事實上這個專案還是有很多東西沒有被完成(雖然不知道為什麼在學期中被歸類為「已完成」,雖然某種程度上代表可以逃離這個專案也是一件好事=) ),像是我們並沒有找到為什麼不同的 ieee 754 浮點數模式下數值的運算花費時間的差異原因。儘管在全部的測試場景中,定點數運算都可以拿到比浮點數運算更快的運算時間,但是在不同場景下浮點數花費時間起伏蠻大的,並且用來計算花費時間的函式、編譯器的最佳化等等都也可能影響到運算時間
        也是因為之後要做 Skia,我們先測量 SIMD 有無下浮點數的運算時間,發現到 128 byte SIMD 後需要花費的時間大約只剩原有的四分之一,如果能利用到這樣的指令集等級平行化,那麼說不定可以試試看與 GPU 運算效能比看看

* 所見所聞心得
    * 開了很多新的坑,想研究但是一直沒有補
    無論是在上課時/聽講座時聽到一些感覺可以研究的議題,像是
        1. 之前在 Leetcode 上看到一題 "Add two number" 利用 tree 的資料結構以儲存變數,這樣就可以避免掉 int_max 這樣極值的問題,同時聽說 python 的變數實作也是根據這個概念,想說可以整理成一份共筆
        2. [ISO C90 與 ISO C99 之間的差異在那?](https://hackmd.io/s/Hy_oBnIsX) 事實上有很多種標準的 C 可以分析,包含 ANSI C, GNU C, C99, C11 等等可比較
        3. [使用傅立葉轉換計算多項式乘法](https://medium.com/@chen.ishi/%E4%BD%BF%E7%94%A8%E5%82%85%E7%AB%8B%E8%91%89%E8%BD%89%E6%8F%9B%E8%A8%88%E7%AE%97%E5%A4%9A%E9%A0%85%E5%BC%8F%E4%B9%98%E6%B3%95-%E4%B8%80-e6ab451f3258) 上課的時候聽到這個議題覺得很神奇(之前大二上工數的時候一直不知道學這個可以幹嘛,大三的電磁雖然說「會用到工數」,但是其實背結論也是可以,現在終於聽到一個合理且有趣的應用了),目前只有嘗試理解他的數學轉換,還缺程式碼效能分析
        4. [我應該怎麼快速掌握 C 語言專案架構](https://hackmd.io/s/HJlN9J5iQ) 這個事實上是我在做畢業專題, trace QEMU 程式碼中間嘗試用過的幾種工具,這些工具在程式碼規模還小的時候,分析的脈落都還蠻清楚的;但是架構只要一旦變複雜變大,很多工具就會開始跳 error(不過其中大多數工具應該是我設定沒有弄好,但是 QEMU 的 Makefile 散落在各資料夾很難 debug),可以算是一個抱怨文
* 自我評量分數(1 到 10 級分)
       8分吧,其實我實際上覺得應該打五分(考慮到我實際有意義有效的付出實在不多,浮點數那個就只是研究而已並沒有改善什麼,Skia 那個雖然有稍微研究但是也沒有實做),但是考慮到這科這樣下來可能是我大學四年最高分的科目,打五分有點可惜
       8分吧,其實我實際上覺得應該打五分(考慮到我實際有意義有效的付出實在不多,浮點數那個就只是研究而已並沒有改善什麼,Skia 那個雖然有稍微研究但是也沒有實做),但是考慮到這科這樣下來可能是我大學四年最高分的科目,同時以「過程中學到的東西」學到蠻多「思考問題面向的廣度」,像是「增進效能」這個議題在不同題目,不同環境等等都會影響最後效能表現,不能單純只用「運算複雜度」「平均的運算效能」等等去論斷,像是極值狀況或無分支實做避免 timing attack 都是很重要的議題;因此我最後的加到八分

* 針對期末自評內容要求的反思

    像是自己後面專題負責的單元(第二章)就比較熟一點,像是減法做等號兩邊移動的最佳化是因為要考慮到「溢位」的發生;還有像是定點數與浮點數的比較這就是我們做的所以很清楚,但是其他人負責研究的部份像是 tail call optimization 這個沒有自己碰過印象就很淺,同時像是老師之前 Fizzbuzz 的程式碼也還沒看;可以感覺得到除了自己研究的小領域之外其他的都不能說是了解