2018年7月19日 星期四

使用 ARM NEON 指令於 Qualcomm Centriq 平台上優化 JPEG 轉換

值得一讀的優化過程文
優化的對象是 jpegtran — 一個用來無損轉換 JPEG 自一個格式到另一個的工具 (主要用於旋轉 N*90度, 或是作 progressive 與 baseline 互換)
由於使用 ARM server 的緣故, 發現 processing throughput 僅僅 Intel Xeon 的約 1/4, 主因在於一些軟體並沒有對 ARM 平台做優化, 除了對原有以 SSE 優化過的 loop 使用 NEON 改寫外, 也增加使用 vqtbl4q_u8 來做查表(個人撰文介紹過), 最終可以達到超越 Xeon 上的效能
而若再考量每瓦效能, ARM server (24 images/watt)則為 Xeon server (10 images/watt)的 2.4 倍
大部分的優化工作, 都沒有捷徑:
1. 分析 workload, 做有意義的量化
2. 尋找發生問題的瓶頸, 並評估是否為理論/物理瓶頸(無解)
3. 投入時間, 導入工具或方法, 實作優化項目
4. 成果驗證與評估增益

沒有留言:

在 ARM 平台上使用 Function Multi-Versioning (FMV) - 以使用 Android NDK 為例

Function Multi-Versioning (FMV) 過往的 CPU 發展歷程中, x86 平台由於因應各種應用需求的提出, 而陸陸續續加入了不同的指令集, 此外也可能因為針對市場做等級區隔, 支援的數量與種類也不等. 在 Linux 平台上這些 CPU 資訊可以透過...