根據 Skymizer 的研究,如果基本的編譯器參數優化有效果,那麼就很適合使用 Skymizer Intelligent Compiler。
我們可以利用 SkySquire 來做基本的編譯器參數優化,改變 gcc/clang 的預設參數,將 gcc/clang 設定為低水位與高水位,並藉由高低水位的差距,來評估使用 Skymizer Intelligent Compiler 優化的可能性。
Skymizer Intelligent Compiler 透過機器學習的方式, 找出比高水位更好的效能。假設高低水位的差距愈大, 那麼, 使用Skymizer Intelligent Compiler 就愈有機會找出比高水位更好的效能。
評估程式優化可能性步驟
- 選定要優化的程式項目。
- 選定該軟件的跑分平台,例如是某開發板或是手機。
-
決定該軟體的優化評估標準,也就是定義分數以及如何量測。
-
操作 SkySquire 取得高/低水位分數:
- 設定 compiler 預設參數為高水位參數。
- 編譯你的程式,並且在跑分平台上測量它的效能分數。
- 重新設定 compiler 預測參數為低水位。
- 再編譯一次,並且再測量一次。
- (高水位分數 – 低水位分數) / 低水位分數 > 0.3,則很有機會使用 Skymizer Intelligent Compiler來優化。
- (optional) 如果你無法評估, 請將軟體名字, 以及高低水位各十次的分數記錄下來, 寄到little.sky@skymizer.com, 我們會與您聯絡。
以scimark2為使用例
- 下載 scimark2 (下面假設scimark2裝在 ~/scimark2)
- 告訴 compiler 要用低水位的方式來編譯程式。
$ sudo skysquire -mark-low `which gcc`
- 編譯你的程式。
$ cd ~/scimark2 && make clean && make
- 在跑分平台上量測分數 (假設在本機上執行)。
$ cd ~/scimark2 && ./scimark2 -large
- 告訴 compiler 要用高水位的方式來編譯程式。
$ sudo skysquire -mark-high `which gcc`
- 再一次編譯你的程式。
$ cd ~/scimark2 && ./scimark2 -large
- 在跑分平台上量測分數(假設在本機上執行)。
$ cd ~/scimark2 && ./scimark2 -large
這裡可以看到 Composite Score 從 607 分變 1738 分, 這就是 scimark2 -高低水位的差距。
-
解除綁定的tool
$ skysquire -unmark `which gcc`
9. 計算improvment。
##### (1738-607)/607 = 1.86 遠大於0.3。
所以在 scrimark2 上使用 Skymizer Intelligent Compiler 將很有機會編譯出效能更好的執行檔。
截至目前為止, 在同一平台上, 使用 Skymizer Interlligent Compiler 編譯 scimark2 最佳執行檔的分數為3560。
##### (3560-607)/607 = 4.86, 也就是將近5倍。
### 不需要改code, 就有快接近5倍的效能。
參考資料
若您希望取得更多 Skymizer Intelligent Compiler 的資訊,也歡迎聯繫 sales@skymizer.com。