2016q3 Homework1 (raytracing)
案例分析:raytracing
-
取得原始程式碼、編譯和測試
-
透過 convert 這個工具可將 PPM 轉為 PNG 或其他格式,如:
-
make check
會檢驗程式碼輸出的圖片是否符合預期,符合的話會得到 “Verified OK!” 字樣
-
使用 gprof 分析 raytracing 生成的數據
-
gprof 分析中呼叫最多次的函式
可能的效能改進方向
- POSIX Thread
- OpenMP
- software pipelining
- loop unrolling
原版
優化版 - 展開 for 迴圈
- 修改呼叫最多次的
dot_product()
- 展開 for 迴圈以減少分支指令
優化版 - OpenMP
標頭檔:#include <omp.h>
編譯參數:-fopenmp
- 修改
raytracing()
- 用 64 個 thread 來跑 for 迴圈
- 執行時間:3.842497 sec
- 問題:加上 OpenMP 後,執行了很多次,但每次的執行時間都差很多,有時候比原版快,有時候卻比原本更慢