Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スマートフォンGPUの特性を解析! 社内で実施予定のGPUパフォーマンスチューニング研修を紹介...
Search
CyberAgent
PRO
June 23, 2024
1
830
スマートフォンGPUの特性を解析! 社内で実施予定のGPUパフォーマンスチューニング研修を紹介します!
CyberAgent
PRO
June 23, 2024
Tweet
Share
More Decks by CyberAgent
See All by CyberAgent
2025年度 生成AI 実践編
cyberagentdevelopers
PRO
3
200
LLMを用いたメタデータベースレコメンド検証
cyberagentdevelopers
PRO
6
1.5k
CodeAgentとMCPで実現するデータ分析エージェント
cyberagentdevelopers
PRO
1
240
SQL Agentによるタップルのデータ利活用促進
cyberagentdevelopers
PRO
1
420
NAB Show 2025 動画技術関連レポート / NAB Show 2025 Report
cyberagentdevelopers
PRO
1
390
【2025年度新卒技術研修】100分で学ぶ サイバーエージェントのデータベース 活用事例とMySQLパフォーマンス調査
cyberagentdevelopers
PRO
7
10k
【CA.ai #1】未来を切り拓くAIエージェントの可能性
cyberagentdevelopers
PRO
3
160
【CA.ai #1】MCP世界への招待:AIエンジニアが創る次世代エージェント連携の世界
cyberagentdevelopers
PRO
2
160
【CA.ai #1】ABEMA のコンテンツ制作を最適化! 生成 AI × クラウド映像編集システム
cyberagentdevelopers
PRO
0
140
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Producing Creativity
orderedlist
PRO
346
40k
Code Reviewing Like a Champion
maltzj
524
40k
Typedesign – Prime Four
hannesfritz
42
2.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Scaling GitHub
holman
460
140k
What's in a price? How to price your products and services
michaelherold
246
12k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Transcript
スマートフォンGPUの特性を解析! 社内で 実施予定のGPUパフォーマンスチューニング 研修を紹介します! 株式会社サイバーエージェント 2024.05.28 清原 隆行
はじめに Chapter : 00
自己紹介 SGEコア技術本部(通称コアテク)という横断組織でグラ フィックチームの責任者として働いています。 著 書に「HLSLシェーダーの魔 導 書」という本がありま す。 現在は、主にグラフィックス系の基盤の開発や、開発中 のタイトルの不
具 合 修 正やパフォーマンスチューニング などを行っています。 今 回 は 各 タイトルのパフォーマンスチューニングから 得 た知 見を社 内に共 有するために、グラフィックスチーム で準備を進めている社内研修の内容についてご紹介しま す。 清原 隆行
なぜ社内研修を計画したのか? • if文のオーバーヘッドによるパフォーマンスの悪化 • シェーダーバリアントの肥大化によるメモリの圧迫 • ヘビーなメモリアクセスが発生していて、メモリの速度によるパフォーマンスの悪化 • GPUの処理負荷の計測方法が分からない 各プロジェクトで色んな事例があった
同様の事例が各子会社であった 知識を共有して属人化を防ぎたい
条件分岐 Chapter : 01
そもそも条件分岐って使っていいの? • 静的分岐 ◦ シェーダーバリアントやUniform定数などを使った分岐 • 動的分岐 ◦ マテリアルパラメータによる分岐 ◦
実行時の計算による分岐 適切に使用すれば問題ない
静的分岐 シェーダーバリアントやUniform定数などを使った分岐 half4 frag( Varings In ){ #ifdef _HOGE return
half4( 0, 0, 1, 1); #else return half4( 1, 0, 0, 1); #endif } half4 fragCore( uniform half hoge ){ if(hoge > 0.5){ return half4( 0, 0, 1, 1); } return half4( 1, 0, 0, 1); } half4 frag( Varings In ) { return flagCore( 1 ); } シェーダーバリアント Uniform定数
静的分岐 シェーダーバリアントやUniform定数などを使った分岐 分岐のないコードが生成されるので実行速度の面では問題ない だが、作られるシェーダーのバリエー ションが増えるので、メモリ使用量には 注意が必要
動的分岐 マテリアルパラメータによる分岐 • 同一のドローコールで全て同じ分岐パスを通るため大きな問題は起きない ◦ オーバーヘッドは分岐コストのみ
動的分岐 マテリアルパラメータによる分岐 if( data.x > 0.5 ){ ・ ・
・ }else{ ・ ・ ・ } スレッドグループ すべてのスレッドが同 じ分岐パスを実行して いる場合は、無駄な処 理は走らない
動的分岐 実行時の計算による分岐 • 同一のドローコールで異なる分岐パスを通る可能性がある場合は全ての分岐パスを通る のと同じコストがかかるため、大きな処理負荷となる
動的分岐 実行時の計算による分岐 if( data.x > 0.5 ){ ・ ・
・ }else{ ・ ・ ・ } スレッドグループ このスレッドは条件が成 立していないため、何も しないが時間はかかる このスレッドはdata.x > 0.5が 成立している
縮小バッファの利用 Chapter : 02
縮小バッファの利用 アセットの調整というのが、一番 妥当なのだが、開発終盤でクォリ ティ的にOKが出ていて変えにくい という状態だった pixel 5aはこのエフェクトの描画 だけで15ミリ秒ほどかかってい た。 FPSも10程度しか出ない状態
事例~その1~(リリース中のゲームのエフェクト)
縮小バッファの利用 事例~その1~(リリース中のゲームのエフェクト) 1/4の解像度の縮小バッファへのエフェクト描画で解決。 品質もほとんど落とすことなく、エフェクトの処理時間を1~2ミリ秒程度まで削減できて、 FPSも25~27と目標達成。 昔から行われてきている手法だけど、解 決策のカードとして使える人はそんなに 標いない印象だった。 属人化を解消したい!
縮小バッファの利用 事例~その2~(ぼかしアルゴリズムの変更) ぼかしアルゴリズムに縮小バッファへのダウンサンプルを行うという一手間加えて高速化。 (これも有名な手法で川瀬式bloomなどが代表例) 品 質を上げるという側 面もあるが、ダウンサンプリングという1パス追 加しているのに、パ フォーマンスが上がる場合もある。
縮小バッファの利用 ダウンサンプルせずにぼかす(Pixel 4a) 3パスでぼかしている 5.5ミリ秒かかっている
縮小バッファの利用 1/4にダウンサンプルしてぼかす(Pixel 4a) 4パスでぼかしている (1パス増えている) 4.4ミリ秒 1パス増えているのに1ミリ速 くなっている!
縮小バッファの利用 なぜパスを追加しているのにパフォーマンスがあがる? キャッシュヒット効率が上がるから。特にメモリ帯域が狭いスマートフォンアプリでは重要に なってくる。
キャッシュヒット効率 Chapter : 03
キャッシュヒット効率 キャッシュヒット率を見ることができるツールの調査 解像度の低いテクスチャの利用や圧縮テクスチャの利用でキャッシュヒット率が改善している ことを確認できるツールが欲しい Android GPU Inspector (AGI) Render Doc
XCode Perfdog どれも求めている情報は得られ なかった
キャッシュヒット効率 NSight Graphics WindowsPCでしか使えない が、L1キャッシュのヒット 率 やL2キャッシュのヒット 率 など 求
めていた 情 報 が しっかりと取れていた。
圧縮テクスチャ テクスチャ形式 フレーム時間(ms) L1TEX Throughput(%) L2 Hit Rate(%) L2 Hit
Rate from L1(%) 64bit フォーマット 133.5 34.7 19.7 18.9 32bit フォーマット 24.1 97.2 49.3 38.2 ※ L1 Hit Rate はほぼ同様の値を記録したので省略 ※ フレーム時間計測は Galaxy S20 5G - Qualcomm Adreno (TM) 650 - Valkan で行っています
解像度 テクスチャ解像度 フレーム時間(ms) L1TEX Throughput(%) L2 Hit Rate(%) L2 Hit
Rate from L1(%) 2048 x 2048 28.9 90.7 70.9 68.2 32 x 32 22.1 93.9 100.0 100.0 ※ L1 Hit Rate はほぼ同様の値を記録したので省略 ※ フレーム時間計測は Galaxy S20 5G - Qualcomm Adreno (TM) 650 - Valkan で行っています
サンプリング サンプリング形状 フレーム時間(ms) L1TEX Throughput(%) L2 Hit Rate(%) L2 Hit
Rate from L1(%) 縦方向 9 サンプリング 37.7 47.8 75.8 75.0 Box状 9 サンプリング 27.6 91.4 70.8 68.4 ※ L1 Hit Rate はほぼ同様の値を記録したので省略 ※ フレーム時間計測は Galaxy S20 5G - Qualcomm Adreno (TM) 650 - Valkan で行っています
最後に Chapter : 04
最後に 今後の予定 • コアテクブログに連載記事の掲載(5月末~) ◦ 第一回目は公開済み • 社内研修の実施(9月ごろ) • 外部に公開(12月ごろ)