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
870
スマートフォンGPUの特性を解析! 社内で実施予定のGPUパフォーマンスチューニング研修を紹介します!
CyberAgent
PRO
June 23, 2024
Tweet
Share
More Decks by CyberAgent
See All by CyberAgent
2025年度 生成AI 実践編
cyberagentdevelopers
PRO
4
320
LLMを用いたメタデータベースレコメンド検証
cyberagentdevelopers
PRO
6
1.8k
CodeAgentとMCPで実現するデータ分析エージェント
cyberagentdevelopers
PRO
1
340
SQL Agentによるタップルのデータ利活用促進
cyberagentdevelopers
PRO
1
500
NAB Show 2025 動画技術関連レポート / NAB Show 2025 Report
cyberagentdevelopers
PRO
1
460
【2025年度新卒技術研修】100分で学ぶ サイバーエージェントのデータベース 活用事例とMySQLパフォーマンス調査
cyberagentdevelopers
PRO
8
11k
【CA.ai #1】未来を切り拓くAIエージェントの可能性
cyberagentdevelopers
PRO
4
270
【CA.ai #1】MCP世界への招待:AIエンジニアが創る次世代エージェント連携の世界
cyberagentdevelopers
PRO
2
250
【CA.ai #1】ABEMA のコンテンツ制作を最適化! 生成 AI × クラウド映像編集システム
cyberagentdevelopers
PRO
0
230
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
For a Future-Friendly Web
brad_frost
180
9.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Designing for humans not robots
tammielis
253
25k
Automating Front-end Workflow
addyosmani
1370
200k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Statistics for Hackers
jakevdp
799
220k
Building an army of robots
kneath
306
46k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Gamification - CAS2011
davidbonilla
81
5.4k
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月ごろ)