実践的!FPGA開発セミナー vol.14(2022/09/28)

228 Views

September 28, 22

スライド概要

フィックスターズならではの「FPGA」に関する高速化手法、 効率的な開発ノウハウ、苦労話などについてお話しいたします。

<講演内容>

1、ACRi ルームで無償利用可能なVersal 開発カード VCK5000 を試す
AMD Xilinx から販売されているVersal 開発カード VCK5000 は、7nm Versal ACAP を搭載した最先端のカードである一方、個人で購入するにはハードルの高いカードです。
現在ACRi ルームで無償利用可能となっているので、どのようなことができるか試してみようというのが今回のテーマです。

2、続 腕の見せ所が満載な FPGA 開発ボードのすすめ
前回は ALINX社のZynq Ultrascale+ XCZU5EV搭載ボードAXU5EV-P を紹介しましたが、10GbEの通信が現状行えないという結果でした。
今回も引き続き PCI Expressと10GbEの通信を同時に使用する方法について模索し、調査の手順やその結果について報告します。
はたして15万円強のFPGAボードを有効活用することができるのか… 乞うご期待。


・当社技術ブログ 記事: https://proc-cpuinfo.fixstars.com/

・フィックスターズグループ/セミナー一覧: https://www.fixstars.com/ja/seminar

・フィックスターズのFPGAシステム開発: https://www.fixstars.com/ja/services/fpga

profile-image

フィックスターズは、コンピュータの性能を最大限に引き出すソフトウェア開発のスペシャリストです。車載、産業機器、金融、医療など、幅広い分野での開発経験があります。また、ディープラーニングや機械学習などの最先端技術にも力を入れています。 並列化や最適化技術を駆使して、マルチコアCPU、GPU、FPGA、量子アニーリングマシンなど、さまざまなハードウェアでソフトウェアを高速化するサービスを提供しています。さらに、長年の経験から培ったハードウェアの知識と最適化ノウハウを活かし、高精度で高性能なアルゴリズムの開発も行っています。       ・開催セミナー一覧:https://www.fixstars.com/ja/seminar   ・技術ブログ :https://proc-cpuinfo.fixstars.com/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

実践的!FPGA開発セミナー vol.14 2022/09/28 18:00~ Copyright© Fixstars Group

2.

はじめに Copyright© Fixstars Group

3.

ACRi ルームで無償 利用可能な Versal 開発カード VCK5000 を試す Copyright© Fixstars Group

4.

Who I am Eisuke MOCHIZUKI 写真 望月 英輔 ソリューション第四事業部 シニアエンジニア Copyright© Fixstars Group

5.

ACRi ルームについて ● 「ACRi ルームは、100枚を超える FPGA ボードや FPGA StarterBOX を含 むサーバ計算機をリモートからアクセスして利用できる FPGA 利用環境で す。」 ● 「利用にはアカウントが必要です。利用規約と右カラムの利用説明をよく読 んだ上で、アカウントを申請してください。提供された個人情報はプライバ シーポリシーに従って管理・利用します。」 ○ ● ACRi ルームへようこそ! | ACRi ルーム より抜粋 アカウントを作成すれば様々なFPGA をオンラインで無償利用可能となる環境 Copyright© Fixstars Group

6.

ACRi ルームで利用可能なFPGA ● ● ● 小規模FPGA ボード ○ Arty A7-35T (AMD Xilinx) x85 ○ DE10-lite (Intel) x9 ○ Zynq-7020 (WIP) (AMD Xilinx) x1 ○ Kria (WIP) (AMD Xilinx) x1 大規模FPGA アクセラレータカード ○ Alveo U200 (AMD Xilinx) x2 ○ Alveo U250 (AMD Xilinx) x1 ○ Alveo U280-ES1 (AMD Xilinx) x1 ○ Alveo U50 (AMD Xilinx) x1 ○ VCK5000 Versal (AMD Xilinx) x1 <- 今回のセミナーではこちらにフォーカス Vitis ビルド用マシン Copyright© Fixstars Group 2022/09/21 現在

7.

VCK5000 Versal について ● 7nm 世代 Versal ACAP チップが搭載された最新アクセラレータカード ○ 単なるプロセスのシュリンクだけではなく、CLBアーキテクチャにも変更が入っている ■ ● 旧世代と違い | (AM005) ARM プロセッサ(PS), プログラマブル領域(PL) に加え、AI Engine を搭載 したACAP (Adaptive Compute Acceleration Platform) ● 各領域をNoC (Network on Chip) が接続 ● 新機能多数の次世代アクセラレータカード ○ VCK5000 Versal 開発カード | AMD Xilinx 引用元: https://japan.xilinx.com/products/silicon-devices/acap/versal.html Copyright© Fixstars Group

8.

AI Engine について ● 特徴的なアーキテクチャ(右図) を持ち、開発しがいがある ○ 小さなVector Processor が大量に並んでいて、 それぞれがメモリ(32KB)経由やStream 経由で接続されている ○ ● VCK5000 の場合、AI Engine は1.25 GHz で動作する (PL より速い) と、このあたりのお話をしようと考えていたら、 ACRi ブログに大変素晴らしい解説記事が投稿された ○ AI を加速する AI Engine アーキテクチャ解説と入門チュートリアル | ACRi Blog ● 本セミナーでは上記ブログ記事の概要を紹介し、 AI Engine の面白さを知っていただくことを目的とする ○ 参加者の皆さんには、ACRi にアクセスし是非試していただきたい Copyright© Fixstars Group 引用元: https://japan.xilinx.com/products/technology/ai-engine.html

9.

目次 ● AI Engine の構成 ● AI Engine の構成 - データフロー ● AI Engine コア ● AI Engine コア - 性能 ● AI Engine のアドバンテージ ● VCK5000 を動かすために必要なもの ● VCK5000 を効率的に動作させるために * AI を加速する AI Engine アーキテクチャ解説と入門チュートリアル | ACRi Blog の内容をベースにしたものです。 Copyright© Fixstars Group

10.

AI Engine の構成 ● 多数のプロセッサ(AIE コア)とそれらを相互に接続する要素で構成される ○ 一般的な多コアプロセッサ(CPU, GPU)の構成と大きく異る AI Engine 一般的な多コアプロセッサ Copyright© Fixstars Group 引用元: https://www.acri.c.titech.ac.jp/wordpress/archives/13108

11.

AI Engine の構成 - データフロー ● 一般的な多コアプロセッサはデータのやり取りを「アドレス」を用いて行う ○ ● どのプロセッサも、同じアドレスにアクセスすれば同じデータが(基本的に)取得できる AI Engine の場合はデータのやり取りを「グラフ」として記述する ○ データフロー(AI Engine 同士の接続)を予め定義して準備しておき、 データを流が流れるときはStream 的に処理する データフローを 「グラフ」として記述 Copyright© Fixstars Group 引用元: https://www.acri.c.titech.ac.jp/wordpress/archives/13108

12.

AI Engine コア ● AI Engine を構成する各コアは ISA (Instruction Set Architecture) ベース の VLIW (Very Long Instruction Word、超長命令語) プロセッサ ○ Scalar Unit: ALU, Non-linear Functions (sin, cos, square root 等) ○ Vector Unit: 固定, 浮動小数点のSIMD (Single Instruction, Multiple Data) サポート Copyright© Fixstars Group 引用元: https://www.acri.c.titech.ac.jp/wordpress/archives/13108

13.

AI Engine コア - 性能 ● AI Engine はVCK5000 では1.25 GHz で動作 ● Vector fixed-point/integer unit ● ○ INT8 : 128 MAC/cycle -> 128 x 2 op x 1.25 GHz x 400 core = 128 TOPS ○ INT32: 16 MAC/cycle -> 16 x 2 op x 1.25 GHz x 400 core = 16 TOPS Single-precision floating-point (SPFP) vector unit ○ FP32: 8 MAC/cycle -> 8 x 2 op x 1.25 GHz x 400 core = 8 TFLOPS 参考: Jetson Nano : 472 GFLOPS 引用元: https://docs.xilinx.com/r/en-US/am009-versal-ai-engine/Functional-Overview Copyright© Fixstars Group

14.

AI Engine のアドバンテージ ● 誤解を恐れずに言えば、CPU とFPGA のいいとこ取り(*) ○ ○ CPU に対するFPGA 的な利点 ■ データをストリームで処理できる ● 都度DRAM のような大きいメモリにストアしない ■ データを並行して処理できる ● 複数のAI Engine を並列に並べることもできる FPGA に対するCPU 的な利点 ■ 高クロックで処理できる ● VCK5000 では1.25 GHz で動作 ■ 複雑な演算に対応 ● FPGA では難しい除算, 浮動小数点演算等 * ほとんどの「いいとこ取り」には何かしらのトレードオフがあることに注意 Copyright© Fixstars Group

15.

VCK5000 を動かすために必要なもの ● 最低限、下記4種類を開発する必要がある ○ 「いいとこ取り」のトレードオフは、開発対象が多いこと 1. Host で動作する「プログラム」 2. PL で動作する「カーネル」 3. AIE のデータフローを定義する「グラフ」 4. AIE コアで動作する「カーネル」 Copyright© Fixstars Group 引用元: https://www.acri.c.titech.ac.jp/wordpress/archives/13108

16.

VCK5000 を動かすために必要なもの - 詳細 ● 1. Host で動作する「プログラム」(C++) ○ ● 2. PL で動作する「カーネル」(Vitis HLS(C++ベース)) ○ ○ ● AIE のデータフローを定義 4. AIE コアで動作する「カーネル」(C++) ○ ○ ● VCK5000 のメモリ上のデータをAIE に入力 その他、AIE の前の前処理も記載可能 3. AIE のデータフローを定義する「グラフ」(C++) ○ ● VCK5000 のメモリへのDMA転送や、動作開始を指示 AIE のコアの動作を記載 使用するコア数分作成が必要 ACRi Blog にサンプルコードが記載されているので参考にしてほしい ○ いずれもC++ で記述できるが、作っているものは全く異なるので注意 Copyright© Fixstars Group

17.

VCK5000 を動かすために必要なもの - 動作例 ● ACRi Blog のサンプルコードは以下のように動作する 1. Host で動作する「プログラム」 4. AIE コアで動作する「カーネル」 3. AIE のデータフローを定義する「グラフ」 2. PL で動作する「カーネル」 Copyright© Fixstars Group 引用元: https://www.acri.c.titech.ac.jp/wordpress/archives/13108

18.

VCK5000 を効率的に動作させるために ● 1. Host で動作する「プログラム」(C++) ○ どの処理をVCK5000 にオフロードするか? ■ ● 2. PL で動作する「カーネル」(Vitis HLS(C++ベース)) ○ AIE を効率的に動作させるためにできることはないか? ■ ● PL 領域での前処理/後処理が性能に大きく影響することがある 3. AIE のデータフローを定義する「グラフ」(C++) ○ 効率的なAIE のデータフローの構成はどのようなものか? ■ ● Host のCPU で実行した方が速いタスクも多々ある デッドロックにも注意 4. AIE コアで動作する「カーネル」(C++) ○ Vector プロセッサで性能を出すにはどのようなコードとすべきか? ■ ハードウェア構成や命令セットの理解が必要 Copyright© Fixstars Group

19.

まとめ ● ● AI Engine はとても開発しがいのある特徴的なアーキテクチャ ○ 小さなVector Processor が大量に並んでいる ○ それぞれがメモリ(32KB)経由やStream 経由で接続されている ○ 上記のすべてを開発者が設計する必要がある ○ 効率的に動作させるためには様々な知見が必要 AI Engine を搭載したVCK5000 がACRi ルームで無料で利用可能 ○ ● ACRi ブログの記事が大変素晴らしいので、そちらを参考に試してほしい ○ ● ACRi ルームへようこそ! | ACRi ルーム AI を加速する AI Engine アーキテクチャ解説と入門チュートリアル | ACRi Blog AI Engine の開発、性能の追求といったご要望はぜひFixstars まで ○ https://www.fixstars.com/ja Copyright© Fixstars Group

20.

ゲストスピーカー大募集! [ テーマの例 ] ● FPGA で省電力エッジビジョンを 実現する ● AI 処理をフルスクラッチ実装したら どれだけ大変か体験してみる ● タイミング解析のノウハウ ● などなど FPGA に関するノウハウやギークな話をセミナーで共有したいという仲間を募集します! 興味がある方は hr-seminar@fixstars.com までご連絡ください。 Copyright© Fixstars Group

21.

Thank you! お問い合わせ窓口 : hr-seminar@fixstars.com Copyright © Fixstars Group