More Related Content Similar to DAS_202109 (20) More from Takefumi MIYOSHI
More from Takefumi MIYOSHI (20) DAS_2021092. 2
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
5. 5
ACRiブログ
- https://www.acri.c.titech.ac.jp/wordpress
- FPGAとは
- さまざまなFPGAアプリケーション
- FPGA開発ツールの使い方
- こんな記事が読まれてます
- FPGA の高速シリアルトランシーバ (1) – 琉球大長名先生
https://www.acri.c.titech.ac.jp/wordpress/archives/8200
- 高位合成で加速するアクセラレータ開発 (2) – Xilinx黒田さん
https://www.acri.c.titech.ac.jp/wordpress/archives/8675
- そもそも「FPGA」って何なんですか? (4) – Xilinx黒田さん
https://www.acri.c.titech.ac.jp/wordpress/archives/9352
- FPGA を対象とした非同期式回路の設計 (1) – 熊本大飯田先生
https://www.acri.c.titech.ac.jp/wordpress/archives/10043
- FPGA 使え、って社長に言われた。さぁ、どうする? (1) – 筑波大山口先生
https://www.acri.c.titech.ac.jp/wordpress/archives/10336
- BRAM 達人への道 (1) – 鈴木さん
https://www.acri.c.titech.ac.jp/wordpress/archives/10236
- DA コンバータがなくてもできる FPGA ピアノ (1) – 長崎大柴田先生
https://www.acri.c.titech.ac.jp/wordpress/archives/11341
FPGA関連開発者・大学教員が執筆
6. 6
ACRiウェビナー
いろいろなエンジニアにFPGAを使ってほしい
- 第1回 エッジAIの高速化入門/ACRiルームを使おう
株式会社フィックスターズ 森高さん/愛知工業大学 藤枝先生
- 第2回 FPGAで加速するRoboticsの未来
九州工業大学 田向先生/株式会社セック 岩渕さん
- 第3回 Softwareエンジニアにも使って欲しいFPGAの実力
Google 佐藤さん/東京大学 高前田先生
- 第4回 FPGAの活用例が分かる!ライトニングトーク大会
株式会社インテリジェントウェイブ 下村さん/
アイベックステクノロジー株式会社 馬場さん/ScaleFlux社 鈴木さん/
Mipsology社 藤谷さん/株式会社フィックスターズ 梶さん/
特殊電子回路株式会社 内藤さん
- 第1回 ACRi討論会ポストムーア時代の未来予想
ジーデップ・アドバンス 林さん/理化学研究所 佐野先生/
東京工業大学 中原先生/ザイリンクス 林田さん
- 第5回 FPGAの楽しさ 再発見講座
東京大学 加藤先生/わさらぼ 三好/愛知工業大学 藤枝先生/
ザイリンクス 安藤さん
YouTube ACRiチャンネル
7. 7
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
8. 8
Alveo
Professors
ACRi Founders
ACRi
参加企業
一般企業
学生
若手技術者
Start-up企業
• 1サーバにArtyを15枚設置
• Digilent Arty A7-35T
• ユーザ毎にVMを割り当て
• 3時間でVMを再起動
ルーム
技術力向上
テスト利用
技術力向上
のため
FPGA Server
• CPU: Core i9 (8 core /16 thread)
• メモリ: DDR4 128GB (32GB x 4)
• ストレージ: SSD M.2 1TB x 2
• 開発環境インストール済
Arty A7-35T
• 3時間単位で機材を無償で貸出し
• リモートからアクセスして利用するスタイル
• Forumを通じて大学教員やACRi企業が技術支援を実施
• 1サーバにAlveoを1枚設置
• Xilinx Alveo
U50 / U200 / U250 / U280
• Vitisで利用可能
Alveo
Host Server
Arty
Host Server
技術力向上
テスト利用
ACRiルーム - 遠隔(東工大)に設置されたFPGAを無料で利用できる環境
13. ACRiルーム 利用できるツール群
13
✓ Vivado/Vivado HLS/Vitis
✓ 2019.1, 2019.2, 2020.1, 2020.2, 2021.1
✓ Quartus Prime Lite Edition
✓ 20.1
✓ gcc, g++
✓ x86-64向け
✓ RISC-Vクロスコンパイラ
✓ Python, Ruby
✓ Icarus Verilog, Verilator, GTKWave
15. ACRiルーム - サーバー構成
15
GDEP FPGA StarterBox
Artyサーバー群
Alveoサーバー群
Artyサーバー
1ホストに15基搭載
Alveoサーバー
https://gw.acri.c.titech.ac.jp/wp/manual/gallery
Core i9-9900@3.1GHz
メモリ128GB
18. 18
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
20. 20
ACRiルームの裏側 – オープンまでの流れ
2020年3月
FPGAをたくさんの人ができる仕組みがあるといいね - 排他的に使う仕組みはどうしようかな?
D〇M英会話の予約システムみたいに予約して使えるとうれしい(東工大吉瀬先生)
2020年10月オープンくらいで
東工大計算機室にサーバーおいてみた(東工大吉瀬先生)
2020年4月
PC上にVMを立てて個別にFPGAをUSB接続すればアイソレーションできそう(わさらぼ三好)
VMで8Mbpsのシリアル通信とかできるの?
VMでビルドして性能大丈夫なの?
AlveoはDockerでマシンを仮想化するのがよさそう(Xilinx 安藤さん)
2020年5月
8月にオープンしよう
WPの環境構築した。OLBっていうプラグインが便利そう(吉瀬先生)
OLBの情報をフックして、VMへのログインの排他制御をする仕組みを作った(わさらぼ三好)
サーバーどうしよう??(吉瀬先生、東工大佐藤先生、三好で選定)
組み立てて設置した(吉瀬先生、佐藤先生)
ネットワークのセキュリティの設定した
Arty 100台並べよう。確保した(Avnetさん、ADTさん)
2020年6月
Alveo確保した、設定した(Xilinx 住川さん、安藤さん)
Arty安定動作のための動作確認(愛工大藤枝先生)
当初検討メンバー
東工大 吉瀬先生
東工大 佐藤先生
Fixstars 神保さん、梶さん
GDEP 飯野さん、永井さん
Xilinx 堀江さん、安藤さん、住川さん
わさらぼ 三好
30. 30
ACRiルームの開発マシンスペック
2020年度導入機 2021年度導入機
CPU Intel Core i9-9900 3.1GHz
(8コア, 16スレッド)
Intel Core i9-10900 2.8GHz
(10コア, 20スレッド)
メモリ DDR4 128GB PC4-21300 DDR4 128GB PC4-21300
マザーボード ASRock Intel Z390 ASRock Intel Z590
ストレージ WDS100T2B0B
M.2-2280/1TB/WD Blue 3D
WDS100T2B0C-EC
M.2-2280/1TB/WD Blue SN550
vs系では1台の物理マシンに15VMを稼働させる
- 各VMに 論理2コア,メモリ6GBを割り当て
as系では1台の物理マシンでDockerコンテナを2個起動
Artyの20%程度(4426LUT, 5988FF)の
ILA込みのRISC-Vコアを合成したとこの処理時間の比較
35. 35
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
44. 44
Alveoの利用 - デモを楽しんでみる
Vitis AI
$ source /opt/xilinx/rtl/setup.sh
$ cd /opt/vitis_ai/workspace/Vitis-AI-Library
$ cd overview/samples/multitask
$ ./build.sh
$ ./test_video_multitask ¥
multi_task ../../demo/segs_and_roadline_detect/lane_640_480.avi -t 8
FPGA内のスレッドをいくつ使うか
-t 1: およそ 9.5FPS
-t 2: およそ 19FPS
-t 3: およそ 21FPS
-t 4: およそ 24FPS
-t 4: およそ 24FPS
https://gw.acri.c.titech.ac.jp/wp/manual/alveo-server
45. 45
Alveoの利用 – PYNQ + HLSで利用する
!v++ -c vadd.c –t hw –kernel vadd –f $platform –o vadd.xo
!v++ -l –t hw –o vadd.xclbin –f $platform vadd.xo
v++ -l は1時間15分かかった
$ /opt/pynq-notebooks/start.sh
(1) ターミナルで PYNQ を起動
(2) ブラウザでJupyterLabにアクセス
(3) JupyterLabでv++を実行する(=HLSでカーネル生成)
ol = pynq.Overlay(‘vadd.xclbin’)
vadd = ol.vadd_1
in1 = pynq.allocate(1024,), ‘u4’)
in2 = pynq.allocate(1024,), ‘u4’)
out = pynq.allocate(1024,), ‘u4’)
...
in1.sync_to_device()
in2.sync_to_device()
vadd.call(in1, in2, out, 1024)
out.sync_from_device()
(4) PythonでFPGAカーネルのロードと実行
https://www.acri.c.titech.ac.jp/wordpress/archives/8355
47. 47
Alveoの利用 – PYNQ + HLSで利用する
!v++ -c vadd.c –t hw –kernel vadd –f $platform –o vadd.xo
!v++ -l –t hw –o vadd.xclbin –f $platform vadd.xo
v++ -l は1時間15分かかった
$ /opt/pynq-notebooks/start.sh
(1) ターミナルで PYNQ を起動
(2) ブラウザでJupyterLabにアクセス
(3) JupyterLabでv++を実行する(=HLSでカーネル生成)
ol = pynq.Overlay(‘vadd.xclbin’)
vadd = ol.vadd_1
in1 = pynq.allocate(1024,), ‘u4’)
in2 = pynq.allocate(1024,), ‘u4’)
out = pynq.allocate(1024,), ‘u4’)
...
in1.sync_to_device()
in2.sync_to_device()
vadd.call(in1, in2, out, 1024)
out.sync_from_device()
(4) PythonでFPGAカーネルのロードと実行
https://www.acri.c.titech.ac.jp/wordpress/archives/8355
48. 48
Alveoの利用 – PYNQ + RTLで利用する
https//wasa-labo.com/wp/?p=840
VitisでRTLカーネルを使う = HLSで作るカーネルと同じI/Fのハードウェアを作ってホストから制御する
(1) Vitis IDEを起動する
(2) ウィザードでプロジェクトを作る
(3) RTL Kernel Wizard... を実行する
(4) ウィザードをすすめる
Scalarポート数の設定で0に変更
(5) ウィザード終了時のサマリ
SWとしての関数定義がわかる
(6) Vivadoが起動する。Generate RTL Kernelをクリック。 (7) Vitisに戻って (a)ビルドタイプをHardwareに変更、
(b)ハードウェア機能の選択、(c)トンカチマークでビルド => .xclbinができる
ハードウェア化する
機能を選ぶ
50. 50
DDR/HBMの読み書き速度測定結果
extern "C" {
void vadd(int count, int* a_0, int* b_0, int* c_0 );
}
void vadd(int count, int* a_0, int* b_0, int* c_0 ) {
#pragma HLS INTERFACE s_axilite port=count bundle=control
//
#pragma HLS INTERFACE m_axi port=a_0 offset=slave
#pragma HLS INTERFACE s_axilite port=a_0 bundle=control
#pragma HLS INTERFACE m_axi port=b_0 offset=slave
#pragma HLS INTERFACE s_axilite port=b_0 bundle=control
#pragma HLS INTERFACE m_axi port=c_0 offset=slave
#pragma HLS INTERFACE s_axilite port=c_0 bundle=control
//
#pragma HLS INTERFACE s_axilite port=return bundle=control
for(int I = 0; I < count; i++){
#pragma HLS PIPELINE
c_0[i] = a_0[i] + b_0[i];
}
}
配列の要素同士の和を求めるカーネルを実装
U280上のDDR/HBMを使って性能測定
80%-100%程度
← 1/10程度に性能低下
森隼人, 三好健文, 大川猛, "FPGAによる離散イベント駆動型シミュレータ実装に向けた性能評価", 信学技報, vol. 120, no. 435, CPSY2020-53, pp. 19-24, 2021年3月.
51. 51
DDR/HBMの読み書き速度測定結果
extern "C" {
void vadd(int count, int* a_0, int* b_0, int* c_0 );
}
void vadd(int count, int* a_0, int* b_0, int* c_0 ) {
#pragma HLS INTERFACE s_axilite port=count bundle=control
//
#pragma HLS INTERFACE m_axi port=a_0 offset=slave
#pragma HLS INTERFACE s_axilite port=a_0 bundle=control
#pragma HLS INTERFACE m_axi port=b_0 offset=slave
#pragma HLS INTERFACE s_axilite port=b_0 bundle=control
#pragma HLS INTERFACE m_axi port=c_0 offset=slave
#pragma HLS INTERFACE s_axilite port=c_0 bundle=control
//
#pragma HLS INTERFACE s_axilite port=return bundle=control
for(int I = 0; I < count; i++){
#pragma HLS PIPELINE
c_0[i] = a_0[i] + b_0[i];
}
}
配列の要素同士の和を求めるカーネルを実装
U280上のDDR/HBMを使って性能測定, カーネルを9パラで実装
森隼人, 三好健文, 大川猛, "FPGAによる離散イベント駆動型シミュレータ実装に向けた性能評価", 信学技報, vol. 120, no. 435, CPSY2020-53, pp. 19-24, 2021年3月.
52. 52
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
56. [室長] 三好(わさらぼ)
[副室長] 安藤(Xilinx) – Alveo対応、HLSチャレンジ運営
[副室長] 大川(東海大学) – 講義利用検討対応
[副室長] 藤枝(愛知工業大学) – Arty動作確認対応、教材作成、Webコンテンツ管理
[ACRi代表] 吉瀬(東京工業大学) – 物理的なACRiルーム管理、ACRiハンズオン
[ACRi CIO] 佐藤(信州大学) – グローバルな設定対応、ACRiハンズオン
住川(Xilinx) – デバイス調達、運用方針検討アドバイス
加藤(KDDI) – 運用方針検討アドバイス
松井(東工大吉瀬研) –動作検証、アカウント作成作業、運営業務サポート
金森(東工大吉瀬研) – 動作検証、アカウント作成作業、運営業務サポート
阿部(Fixstars) – オブザーバー
梶(Fixstars) – オブザーバー
56
ACRiルーム運営メンバー