版本 4de37719ccfb7c1f35876a597ce9f1c08ce2dac3
預期目標
- 培養團隊合作默契
- 強化表達能力
- 準備日後可用於研究所推薦甄試和申請工程師職務用途的技術報告
注意須知
- 自 Homework 5 之後,都是分組進行
- 在每次 checkpoint 日的 11:59AM 前,上傳一份時間在 40 分鐘內的錄影,至少涵蓋以下:
- 探討背景知識
- 開發進度
- 面臨的問題
- 接下來預計導入的解決方案
- 技術報告的影片經過剪接編輯後,上傳到 YouTube,設定存取權限為「公開」
- 本次作業對應的 checkpoint 為 4 月 26 日
- 開發過程請詳實更新於分組共筆中
- 不需要準備投影片,我們只要詳實清楚的文字、圖表,以及程式碼 (語文能力是本課程的要求項目之一)
- 各組預期目標請見下方各節
server-framework
- 彙整 2016q1 Homework #3 的開發成果,詳實分析 server-framework 的架構、系統設計,效能評估,以及效能改進方案
- 說明 async, reactor, protocol-server 彼此之間的關聯
- 探討 epoll, pipe, signals 等系統呼叫,以及 server-framework 如何使用
- 多執行緒設計的議題
- 分析 HTTP request 和 web server 的行為
- 實做與分析 lock-less thread pool
- 提出效能分析 (含 HTTP 1.1 Keep-Alive) 以及改善方案
- 需要透過 gnuplot 建立圖表
epoll experiments
concurrent B+ tree
- 在 GitHub 上,fork bplus-tree,研究 B+ tree 的實做並解釋其原理
- 驗證 bplus-tree 在各式條件的效能,包含單一執行緒和多執行緒讀寫
- 執行
./test/bench-multithread-get
- 移植 2016q1 Homework #1 的電話簿程式到
test/
目錄
- 比照 2016q1 Homework #1 的要求,研究插入、查詢、刪除的效能表現 (含 cache miss),並提出解釋
- 透過 gnuplot 視覺化相關的數據
- 提出改善效能的方法並且著手實做
Enhance raytracing program
- 彙整 2016q1 Homework #2(A) 的開發成果,分析各項效能改善實驗的具體成效 (個別 + 綜合)
- 解釋多執行緒程式設計對光線追蹤的影響,需要比較不同的切割方式、執行緒數量的影響
- 使用 OpenMP, SIMD 進一步改善程式效率
- 解讀數據,以及思考如何進一步提昇效能