B10: matrix

tags: sysprog2017

主講人: jserv / 課程討論區: 2017 年系統軟體課程

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
返回「作業系統設計與實作」課程進度表

預期目標

  • 學習物件導向程式設計和資料封裝技巧
  • 回顧效能分析和改善機制
  • 從矩陣乘法運算的最佳化,思考整體系統效能的議題
  • 提出測試矩陣乘法正確性和效能之有效機制

作業要求

  • 詳細閱讀 Matrix Multiplication using SIMD,試著重現實驗
  • 在 GitHub 上 fork matrix_oo 專案,指出原本設計的優缺點,並且提出改進方案 (從物件導向封裝、效能,還有資料驗證等觀點)
    • 提示: 可執行 make check,自動編譯測試程式並驗證
  • matrix_oo 的基礎上,整合 Matrix Multiplication using SIMD 的成果,注意,應該建立新的檔案,如 matrix_sse.cmatrix_avx.c 並且設計新的效能分析工具,需要用到程式碼的 Stopwatch,時間刻度用 millisecond (ms)
  • 克服 matrix_oo 裡頭只支援 4x4 矩陣的限制,考慮 sub-matrix 和 column-major 來提升 cache 使用率
    • 驗證過程需要考慮不同大小的矩陣
    • 需要考慮到矩陣乘法的有效性,不是任意矩陣都可相互執行乘法
  • 需要一併考慮 data alignment 議題
  • 學習 crypto API 並設計介面使演算法容易擴充和比較
  • 允許透過亂數作為資料輸入,驗證矩陣乘法的效能,需要視覺化 (透過 gnuplot 或 R)
  • 留意記憶體存取,避免 leak,參考 你所不知道的C語言:技巧篇 提到的 smart pointer
  • 指出原有的程式碼是否 thread-safe,並提出改進方案
  • 記錄開發過程於 作業區
  • 截止日: Apr 8, 2017