Mais conteúdo relacionado
Semelhante a VCK5000_Webiner_Fixstars様ご講演資料 (20)
VCK5000_Webiner_Fixstars様ご講演資料
- 2. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
AI Engine とは
• 近年、DNN を始めとする高負荷な演算性能を要求する
アプリケーションが増えている
• 従来の FPGA (LUT + DSP) では DSP の集積度が低く、
演算性能が不足
• AI Engine は Versal に追加された新たな計算用のエンジンで、
従来の FPGA よりも非常に高い演算性能を達成可能
2
https://docs.xilinx.com/v/u/ja-JP/wp506-ai-engine
- 3. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
AI Engine とは (cont.)
• AI Engine アレーは 複数の AI Engine を
メッシュ状に並べた演算ブロック
• VC1902 では 400 AI Engine が存在
• 各 AI Engine 内にはプロセッサがある
• 動作周波数は 1GHz 程度
• ベクタ命令をサポート
• 256 OPS/cycle @ int8
• 64 OPS/cycle @ int16
• PL (Programmable Logic) とメモリを
介さずにデータのやり取りが可能
• FPGA の強みである低レイテンシなパイプライン内に
高負荷な演算を追加できる
3
https://japan.xilinx.com/products/technology/ai-engine.html
- 4. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
AI Engine タイル
• AI Engine の一つの島はタイルと呼ばれる
• プロセッサとローカルメモリが含まれる
• プロセッサは VLIW アーキテクチャで、
並列度の高いベクタ命令を発行可能
• 性能を出すにはベクタ命令の使い切りが
非常に重要
4
https://japan.xilinx.com/products/technology/ai-engine.html
https://docs.xilinx.com/r/ja-JP/am009-versal-ai-engine
- 5. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
AI Engine のメモリアーキテクチャ
• AI Engine の 1つのコアからは
4方向のメモリに直接アクセス可能
• 赤色のコア -> 黄色のメモリ
• メモリあたり 32KB
• メモリへのアクセスは
高帯域かつレイテンシがほぼ一定
• ローカルメモリはコア間の
データ共有にも使用可能
• ストリームインターフェース
(cascade / AXI4) によるコア間通信も可能
5
https://docs.xilinx.com/r/ja-JP/am009-versal-ai-engine
- 6. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
AI Engine で構成可能なデータフロー
• AI Engine は PL 領域と
AXI4 Stream プロトコルによる密なデータのやり取りが可能
• AI Engine の内部メモリやストリームにより、
様々な形の処理を実現できる
6
https://docs.xilinx.com/r/ja-JP/am009-versal-ai-engine
- 7. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
データフローで速度を出すためには
• AI Engine のアーキテクチャの特徴的な点
• PL のデータフローとストリーム IF で結合して処理できる
• データフローの速度は最も遅いブロックに律速されるため、
AI Engine を含む処理では下記2点において十分な速度を出す必要が
ある
1. データの送受信を行う PL ロジック
2. AI Engine の各ブロック
• AI Engine の各ブロックの速度を出すには?
• ⇒ アーキテクチャの理解・その性能の使い切りが重要となる
7
- 8. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
AI Engine を用いたチューニング例: FIR フィルタ
• FIR フィルタを例に
AI Engine による処理のチューニング例を紹介
• AI Engine 上のプログラムは C/C++ で記述し、
FIR フィルタは以下のような処理になる
8
Source: https://en.wikipedia.org/wiki/Finite_impulse_response
(※CC BY-SA 3.0により許諾されています。
https://creativecommons.org/licenses/by-sa/3.0/)
- 9. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
aiesimulator による性能プロファイリング
• AI Engine のツールチェーンには aiesimulator という
サイクルアキュレートシミュレータが存在する
• aiesimulator では命令単位のプロファイル結果を出すことができ、
性能の見積もりに役立つ
9
FIR フィルタのプロファイル結果。最も内側のループで LOAD, LOAD, ADD, MUL で 4cycle 使用する
積和計算処理
積和計算処理
- 10. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
SIMD 命令の使用
• AI Engine は SIMD (Single-Instruction Multiple-Data) 命令を
使うことで理想的な性能を達成可能
• スカラ命令のみの場合は 1OPs/tile しか出ないが、
SIMD 命令を使うと int16 の場合は 64OPs/tile まで達成可能
• 効率の良いシステムを作るには、これらを使うことが非常に重要
10
https://japan.xilinx.com/products/technology/ai-engine.html
- 11. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
SIMD の適用
• AI Engine で開発を行う場合、
2つの方法で SIMD 命令を使用するよう
コンパイラに指示ができる
• Intrinsics 命令の使用
• AIE API の使用
• Vitis Libraries にはチューニング済みの
カーネルが存在するため、
これらを使うことも可能
11
Intrinsics 命令の例
https://www.xilinx.com/htmldocs/xilinx2021_2/aiengine_intrinsics/intrinsics/
- 13. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
SIMD 適用後の処理速度
• VCK5000 上に検証環境を作成した
• SIMD 適用前後で比較したところ、88倍の速度向上となった
• AI Engine の使いこなしには、SIMD 命令を使うことが非常に重要
13
デザイン M Samples / sec
(実機)
SIMD による
Speedup (実機)
SIMD 適用前 0.146 x1
SIMD 適用後 12.86 x88
FPGA
PL
AIE
NOC/DDR
mm2s
s2mm
FIR Filter
- 14. Fixstars Corporation www.fixstars.com
Copyright © Fixstars Group
Fixstars Corporation www.fixstars.com
本セッションのまとめ
• AI Engine を使うと FPGA のデータフロー中に
大規模な演算ロジックを追加できる
• AI Engine の性能を引き出すためには
アーキテクチャを意識したチューニングが必要
• 適切なデータフローの設計
• AI Engine コア単位のチューニング
• SIMD 命令を使うように自分でコードを書く
• Vitis Libraries など、最適化済みのライブラリを使用する
14