QualcommのAIエンジニアリングチームが、Hexagonプロセッサ向けの単項演算(unary ops)処理を抜本的に見直した。メモリ領域「VTCM」のオーバーフローを防ぐタイル分割の導入や、高速除算への置き換え、カーネルコードの重複排除といった一連の最適化により、オンデバイス推論の安定性と演算効率が一段と高まっている。
VTCM溢れを防ぐ「ワイド行タイル化」の実装
今回の変更の中核は、単項演算の実行時に発生し得るベクトル密結合メモリ(VTCM)のオーバーフローを回避する点にある。点単位の単項演算でワイドな行をそのまま処理する従来方式では、テンソルサイズが大きくなった際にVTCMの容量制限に抵触し、パフォーマンスが不安定化する課題があった。新たに導入されたタイル分割アプローチでは、大きなテンソルを行方向に分割して順次処理する。これにより、メモリ溢れのリスクを排除しつつ、HexagonのHVXベクトル演算ユニットを安定稼働させられる。合わせて、モデルでは現状使われていないパーミュート(軸入替え)テンソルの受け付けも停止し、最適化対象の明確化と余計な分岐の削減を実現している。
除算の置き換えとカーネルパラメータの事前計算
性能を細部で底上げするため、単項演算内の除算命令を高速除算(fastdiv)に置き換える改良が施された。除算は多くのプロセッサでレイテンシが大きいが、compile時に逆数テーブルを用いた乗算へ変換する手法を採用し、処理時間の短縮を図っている。さらに、この高速除算の初期化処理は、ホスト側で事前計算されるカーネルパラメータ群の内部に移動された。これにより、Hexagon DSP上での実行時オーバーヘッドが削減され、推論パイプラインの起動がより軽量になる。ホストによる計算済みパラメータの引き渡しは、VTCM上のレイアウト情報とも連携し、実行時の条件判断を最小化する設計思想が貫かれている。
HVXカーネルの徹底的な因数分解とコード重複排除
従来の実装では、複数の単項演算に対し類似したHVXカーネルコードが散在し、保守性やコンパイラ最適化の妨げになっていた。今回、共通処理を徹底的に抽出してカーネルを再構成し、重複コードを大幅に削減した。同時に、スレッド処理を型ごとに特化させ、コンパイラが生成するコードの品質を直接引き上げている。トレーシングの計装化も進められ、オンデバイスでのプロファイル収集が容易になった。Windows環境におけるstd::minのマクロ衝突解消や、LTO(リンク時最適化)ビルドの安定化といったビルド基盤の修正も含め、コードベース全体の洗練度が高まっている。
マルチプラットフォームCIが示すHexagon最適化の位置づけ
変更に関連するCI(継続的インテグレーション)リストには、macOS Apple SiliconやAndroid arm64、Windows arm64(OpenCL Adreno)といった、HexagonやAdreno GPUが密接に関わるプラットフォームが多数含まれている。すでにApple Silicon上のKleidiAI有効化ビルドや、複数OSでのVulkanバックエンド環境も稼働しており、Qualcommの計算スタック最適化が単一チップに閉じず、ヘテロジニアスなエッジAI基盤全体を見据えたものであることが分かる。Ubuntu x64系のROCmやSYCL、OpenVINOも併走しており、Hexagonに特化した本変更は、様々なアクセラレータが混在する環境での推論エンジン強化策の一環と言える。