ACRiルームの作り方と活用事例
三好健文 ACRiルーム室長/わさらぼ合同会社
2021年9月1日
2
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
情報
発信
技術
習得
先端
研究
FPGAの魅力をもっと多くの
人に伝えたい
2020年4月発足
参加24団体(5大学/19社)
オープン済み
! 近日オープン予定
!
アダプティブコンピューティング研究推進体(ACRi)
©︎ 2021 Adaptive Computing Research Initiative - ACRi
4
創設企業 協賛企業
7 10
大学
5
運営企業
2
(as of 2021-07-01)
わさらぼ
©︎ 2021 Adaptive Computing Research Initiative - ACRi
ACRiの参加大学(5大学, 19社)
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
ACRiウェビナー
いろいろなエンジニアにFPGAを使ってほしい
- 第1回 エッジAIの高速化入門/ACRiルームを使おう
株式会社フィックスターズ 森高さん/愛知工業大学 藤枝先生
- 第2回 FPGAで加速するRoboticsの未来
九州工業大学 田向先生/株式会社セック 岩渕さん
- 第3回 Softwareエンジニアにも使って欲しいFPGAの実力
Google 佐藤さん/東京大学 高前田先生
- 第4回 FPGAの活用例が分かる!ライトニングトーク大会
株式会社インテリジェントウェイブ 下村さん/
アイベックステクノロジー株式会社 馬場さん/ScaleFlux社 鈴木さん/
Mipsology社 藤谷さん/株式会社フィックスターズ 梶さん/
特殊電子回路株式会社 内藤さん
- 第1回 ACRi討論会ポストムーア時代の未来予想
ジーデップ・アドバンス 林さん/理化学研究所 佐野先生/
東京工業大学 中原先生/ザイリンクス 林田さん
- 第5回 FPGAの楽しさ 再発見講座
東京大学 加藤先生/わさらぼ 三好/愛知工業大学 藤枝先生/
ザイリンクス 安藤さん
YouTube ACRiチャンネル
7
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
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を無料で利用できる環境
9
✓はじめの手間・コストなしでFPGAを使ってほしい、を実現
✓ FPGAに興味をもっている人に
✓ FPGAを他人に使ってほしい人に
✓ FPGA関連の成果やノウハウを共有できる場に
✓ 成果を試してほしい人の発表場に
✓ 設計時の問題切り分けのリファレンスとして
ACRiルーム 開設の意図
ACRiルーム 利用までのながれ
10
- 管理サイト(https://gw.acri.c.titech.ac.jp)で予約
- 3時間ごとに開発環境・FPGAを独占利用
- 連続して4枠を予約できる
- 枠の途中から開始することも可能
- 予約した枠が終了するとマシンが自動的に再起動
- データはACRiルーム内のストレージに保存される
- どのマシンにログインしてもホームは共通
(1) 使いたい時間枠を予約
ACRiルーム 利用までのながれ
11
(2) 予約した時間にログイン
- sshでgw.acri.c.titech.ac.jpにログイン
→ ログイン用の踏み台マシンにログイン
- 目的のサーバーにsshでログイン
ACRiルーム 利用までのながれ
12
(3) リモートデスクトップ接続で操作
- sshのポートフォワーディングを利用
- 各FPGA接続マシンの3389番でRDPサービス
- 各種開発ツールをGUIで利用可能
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
ACRiルーム - サーバー構成
14
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
ACRiルーム – ユーザ登録数
16
622名
2021年8月23日時点
設置FPGA
17
vs001-vs015
vs101-vs115
vs201-vs215
vs301-vs315
vs401-vs415
vs501-vs515
vs601-vs610
vs[0-6]00でツールのみ利用可
(事前予約不要)
as001: Alveo U200
as002: Alveo U250
as003: Alveo U280-ES1
as004: Alveo U50
ag001: GDEP FPGA StarterBox(Alveo U200)
as10{1, 2, 3, 4}でツールのみ利用可(事前予約不要)
Digilent Arty vs701
vsA01-vsA09
Xilinx Alveo
Digilent PYNQ-Z1
Terasic DE10-Lite
vs702
Xilinx Kria KV260
合計100台
18
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
19
✓はじめの手間・コストなしでFPGAを使ってほしい、を実現
✓ FPGA関連の成果やノウハウを共有できる場に
✓自然な利用スタイルを提供する
ACRiルームを使うために覚えること、を極力少なくしたい
✓ 他人の作業環境を邪魔しない
FPGAを時分割で排他的に利用できる仕組みを導入する
サービス利用者が公平に計算資源を利用できるようにする
✓ 自分の作業跡を残さない
ACRiルーム 開設の要件
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 堀江さん、安藤さん、住川さん
わさらぼ 三好
21
ACRiルームの裏側 – オープンまでの流れ
2020年6月当時の
打合せ資料より
22
ACRiルームの裏側 – オープンまでの流れ
GW
2020年6月当時の設置プラン
NIS
DNS
NFS
WEB
(OLB)
VMサーバ
VM VM
Alveoサーバ
Docker
コンテナ
Arty Arty Alveo
USB Alveo
踏み台サーバ
ACRiルームの裏側 – オープンまでの流れ
23
ACRiルームの裏側 – オープンまでの流れ
24
ACRiルームの裏側 – オープンまでの流れ
25
約100台のArty
ディスクを固定するアダプタに接着 ケースに格納。ありとあらゆるUSBポートを利用
26
ACRiルームの裏側 – オープンから現在
2020年7月
ユーザ登録の仕組みづくり
環境利用方法のドキュメントの準備
システムの安定運用のためのあれこれ
本番用に設置(吉瀬先生、佐藤先生、東工大松井さん)
2020年8月
ACRiルームオープン
ZYNQボードの利用方法について検討(東海大大川先生)
東工大講義で利用
2020年9月
システム安定化に向けてあれこれ
例: 1コアのVMでVivado動かすと落ちることがある問題
利用状況可視化システム実装など
2020年10月
東海大講義で利用
カメラ導入の実験
ACRi-東海大-わさらぼでACRiルームのFPGAを使った共同研究開始
ログインシステムアップデート(WPのDBを直接参照するようになった)
2021年4月
サーバー増強
2021年8月
Terasic DE10-Lite (Intel MAX10搭載ボード)の導入
27
ACRiルームの裏側 – オープンから現在
28
ACRiルームの裏側 – オープンから現在
当初設置したWebカメラ/専用アプリで視聴可能
USBカメラ + mjpg-streamerでシステム構築
29
ACRiルームの構成
vs系
as系
ファイルサーバ
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コアを合成したとこの処理時間の比較
31
ユーザアカウント作成・利用フロー
アカウント作成
アカウント作成
受付メール
アカウント作成
受付メール
ユーザ 管理者
ACRiルームウェブサイト(WordPress)
ユーザ作成
スクリプト実行
アカウント承認
NIS登録
パスワード生成
ホーム作成
ウェブサイトアカウント
作成完了メール[1]
サーバーアカウント
作成完了メール[2]
ログイン
([1]のパスワードを使う)
sshでログイン
([2]のパスワードを使う)
ユーザ
利用時間の予約
ACRiルームウェブサイト(WordPress)
32
vs系ログインシステムバックエンド
OLB(https://olbsys.com/)で
フロントエンドを作成
WordPress
Booking-Manager
予約/キャンセル
メール
予約数上限(無料・チケット)
ゲストOS
xrdp: xrdp.ini
sshd: sshd_config
ホストOS
N時間ごとに再起動
(reboot-vm.rb)
ユーザ情報
Xrdp or ssh でログイン
DB
olb-view.rb
olb-server.rb
HTTP#20080
現スロットの
ユーザをチェック
(olb-monitor.rb)
上書き
m分毎に実行
crontabで実行
(N時間ごと)
fserv5
動いてなかったら
起動(start-vm.rb)
crontabで実行
(M分ごと)
特定ユーザ
のみ許可
問い合わせのあった
VM/スロットの
予約ユーザ情報を返す
ユーザ情報
問い合わせ
(SQL)
起動時に
FPGA初期化
33
as系ログインシステムバックエンド
34
✓はじめの手間・コストなしでFPGAを使ってほしい、を実現
✓ FPGA関連の成果やノウハウを共有できる場に
✓自然な利用スタイルを提供する = GUIでもCUIでも。ただのLinuxを見せる。
ACRiルームを使うために覚えること、を極力少なくしたい
✓ 他人の作業環境を邪魔しない = VM/Dockerでリソースを制限・サンドボックス化
FPGAを時分割で排他的に利用できる仕組みを導入する
サービス利用者が公平に計算資源を利用できるようにする
✓ 自分の作業跡を残さない = 作業開始前にFPGAを自動クリア
ACRiルーム 開設の要件
35
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
36
Vivadoを使ったFPGA開発
(1) ログインしてVivadoを起動する (3) プロジェクトの中身を実装する
(4) Synthesis -> Implementation -> ビットファイル生成 (5) 生成したビットファイルの書き込み (6) 動作の様子をILAで確認
(2) プロジェクトを作成する
37
VIOでリモートのFPGA内部にアクセス
FPGA
VIO
(Virtual Input/Output)
アプリケーション
ロジック
JTAG/
USBケーブル
Vivado
Hardware Manager
// VIO との入出力と接続する信号を定義 logic [0:0] probe_in0;
logic [1:0] probe_out0;
// テンプレート(.veoファイル)をコピペして VIO のインスタンスを生成する
vio_0 vio_0_i_0 ( .clk(CLK),
.probe_in0(probe_in0),
.probe_out0(probe_out0) );
// ON を probe_in0 を介して外で読み出せるように接続
assign probe_in0[0] = ON;
// probe_out0を介して外からSW_ONとSW_OFFの値を設定できるように接続
assign SW_ON = probe_out0[1];
assign SW_OFF = probe_out0[0];
38
UARTでFPGAにアクセス
USBケーブル
(JTAG, USB-UART)
○×ゲームでFPGA開発をはじめてみよう(RTL編)
https://github.com/miyo/fpga-tic-tac-toe/blob/main/verilog/README.md
/dev/ttyUSB1(Arty), /dev/ttyUSB0(DE10-Lite)でUSB-UARTが見える
screen, GtkTerm, pyserialなどでアクセス可能
ArtyのUARTは実測で8Mbpsまでは利用できることを確認
USB-UART
USBケーブル
(JTAG)
USBケーブル
(UART)
39
Vivado HLSを使った開発
(1) ログインしてVitisを起動する (3) プロジェクトに必要なファイルを追加
(4) C sim -> C synth -> Co sim -> Export RTLを実行
(5) 合成結果を確認 (6) VivadoでIPコアを組み込み
(2) ウィザードでプロジェクトを作成
40
MicroBlazeを使った開発
(1) VivadoでMicroBlazeを含むプロジェクトを作成
(2) Vitisを起動
(3) ウィザードでプロジェクトを作成
(4) アプリケーションを実装する (5) bitファイルをFPGAに書き込む (6) ソフトウェアを実行する
41
Quartusを使った開発
(1) Quartusを起動する
(2) ウィザードでプロジェクトを作成する
FPGAは
10M50DAF484C7G
を選ぶ
(3) 所望のロジックを実装して合成
(4) ProgrammerでFPGAにsofファイルを書き込む
(5) Signal Tap Logic Analyzerで内部信号を観測する
42
Alveoの利用
PCIe
Kernel
User
App.
XRT
XOCL
Alveoの基本的な利用方法
- FPGA上のハードウェアロジック(= カーネル)をVitisで設計する
- カーネルのロードと起動、必要なデータ授受を行うソフトウェアを用意する
- 現状のACRiルームではFPGAを生で利用することはできない
- RTLでロジックを実装できないわけではない。RTLカーネルは利用可能。
Shell
43
Alveoの利用
✓チュートリアルをやってみる
https://github.com/Xilinx/Vitis-Tutorials
✓ デモを楽しんでみる
https://gw.acri.c.titech.ac.jp/wp/manual/alveo-server
✓ PYNQ + HLSで利用してみる
高位合成で加速するアクセラレータ開発(1)
https://www.acri.c.titech.ac.jp/wordpress/archives/8355
✓ PYNQ + RTLカーネルで利用してみる
PYNQでAlveo向けにVitisで作ったRTLカーネルを使ってみる
https//wasa-labo.com/wp/?p=840
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
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
46
Alveoの利用 – PYNQ + HLSで利用する
PYNQとは
ZYNQ: PS-PL間AXIインターフェース
x86-64+FPGA: PCIe
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
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ができる
ハードウェア化する
機能を選ぶ
49
Alveoの基礎性能
Host->FPGA(MBps) FPGA->Host(MBps) Mem<->Kernel(MBps)
as001 U200 8057.74 11133.1 52428
as002 U250 8050.88 12069.1 52428
as003 U280-ES1 10698.8 10998.5 43690
as004 U50 11826.7 11555 52428
ag001 U200 9203.87 12142.9 52428
PCIe
Kernel
User
App.
XRT
XOCL
xbutil validate を使った基礎性能測定結果
Shell
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
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
✓ ACRiとは
✓ ACRiルーム概要
✓ ACRiルームの裏側
✓ ACRiルーム利用事例
✓ RTL開発 (Vivado, Quartus)
✓ HLS利用
✓ MicroBlazeやRISC-Vなどのソフトコア利用
✓ PYNQ/Alveo の利用
✓ まとめ
目次
53
✓ ACRiルームは遠隔でFPGAを利用できるシステムです
GUI/CUIで(なるべく)普段と同じようなスタイルで利用可能
リソースをユーザごとに隔離したサンドボックス
✓ 無償で利用可能です
✓ 手元にFPGAがないながら、結構いろいろなことができます
✓ 活用してもらえると嬉しいです
まとめ
ぜひアカウントの作成と利用を
54
(1) https://gw.acri.c.titech.ac.jp にアクセス
(2) 「アカウント申請方法」をクリック
(3) 説明に従ってアカウントを申請
ACRiブログ連動コンテンツもお楽しみください
55
ACRi HLS Challenge
https://acri-vhls-challenge.web.app
ACRiルームをバックエンドに利用したHLSチャレンジサイト
Webブラウザ上でHLSコードの勉強ができる
他人のコードを参考にしたり、性能を競ったり
[室長] 三好(わさらぼ)
[副室長] 安藤(Xilinx) – Alveo対応、HLSチャレンジ運営
[副室長] 大川(東海大学) – 講義利用検討対応
[副室長] 藤枝(愛知工業大学) – Arty動作確認対応、教材作成、Webコンテンツ管理
[ACRi代表] 吉瀬(東京工業大学) – 物理的なACRiルーム管理、ACRiハンズオン
[ACRi CIO] 佐藤(信州大学) – グローバルな設定対応、ACRiハンズオン
住川(Xilinx) – デバイス調達、運用方針検討アドバイス
加藤(KDDI) – 運用方針検討アドバイス
松井(東工大吉瀬研) –動作検証、アカウント作成作業、運営業務サポート
金森(東工大吉瀬研) – 動作検証、アカウント作成作業、運営業務サポート
阿部(Fixstars) – オブザーバー
梶(Fixstars) – オブザーバー
56
ACRiルーム運営メンバー
57
ぜひアカウントの作成と利用を
58
(1) https://gw.acri.c.titech.ac.jp にアクセス
(2) 「アカウント申請方法」をクリック
(3) 説明に従ってアカウントを申請
ACRiブログ連動コンテンツもお楽しみください

DAS_202109