評估 Skymizer Intelligent Compiler 優化的可能性

根據 Skymizer 的研究,如果基本的編譯器參數優化有效果,那麼就很適合使用 Skymizer Intelligent Compiler。

我們可以利用 SkySquire 來做基本的編譯器參數優化,改變 gcc/clang 的預設參數,將 gcc/clang 設定為低水位高水位,並藉由高低水位的差距,來評估使用 Skymizer Intelligent Compiler 優化的可能性。

Skymizer Intelligent Compiler 透過機器學習的方式, 找出比高水位更好的效能。假設高低水位的差距愈大, 那麼, 使用Skymizer Intelligent Compiler 就愈有機會找出比高水位更好的效能。


評估程式優化可能性步驟

  1. 選定要優化的程式項目。
  • 選定該軟件的跑分平台,例如是某開發板或是手機。

  • 決定該軟體的優化評估標準,也就是定義分數以及如何量測。

  • 操作 SkySquire 取得高/低水位分數:

    • 設定 compiler 預設參數為高水位參數。
    • 編譯你的程式,並且在跑分平台上測量它的效能分數。
    • 重新設定 compiler 預測參數為低水位。
    • 再編譯一次,並且再測量一次。
  • (高水位分數 – 低水位分數) / 低水位分數 > 0.3,則很有機會使用 Skymizer Intelligent Compiler來優化。
    • (optional) 如果你無法評估, 請將軟體名字, 以及高低水位各十次的分數記錄下來, 寄到little.sky@skymizer.com, 我們會與您聯絡。

以scimark2為使用例

  1. 下載 scimark2 (下面假設scimark2裝在 ~/scimark2)
  2. 告訴 compiler 要用低水位的方式來編譯程式。
    $ sudo skysquire -mark-low `which gcc` 
    
  3. 編譯你的程式。
    $ cd ~/scimark2 && make clean && make 
    
  4. 在跑分平台上量測分數 (假設在本機上執行)。
    $ cd ~/scimark2 && ./scimark2 -large 
    
  5. 告訴 compiler 要用高水位的方式來編譯程式。
     $ sudo skysquire -mark-high `which gcc` 
    
  6. 再一次編譯你的程式。
    $ cd ~/scimark2 && ./scimark2 -large 
    
  7. 在跑分平台上量測分數(假設在本機上執行)。
    $ cd ~/scimark2 && ./scimark2 -large 
    

    這裡可以看到 Composite Score 從 607 分變 1738 分, 這就是 scimark2 -高低水位的差距。

  8. 解除綁定的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。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *