SlideShare a Scribd company logo
1 of 44
Download to read offline
私のファミコンのfpsは530000です。
ですがもちろんフルパワーで(略
みかん県在住 なかはら
@oboe7man
ゆっくりしていってね!
1
今日のお話
• Vivado HLS使ってFPGAでファミコン作ったよ~
2
ソースコードどうぞ
• みきゃんウェア
ゆるキャラグランプリ2015でみきゃんに投票すればおk
煮るなり焼くなり論文発表するなり好きにしてください
必
要
な
分
は
見
せ
た
と
い
う
こ
と
だ
こ
れ
以
上は
見
せ
ぬ
※ちゃんとお見せするので
コンタクトしてくださいね
高位合成 NES 検索
3
なかはら@oboe7man is 誰
• 中原啓貴 (HIROKI Nakahara)
• みかん大学で研究しています
• みかん県(収穫量日本一とは言っていない)在住
通称愛媛県…
【みかん県の物価】
近所のスーパーで
一箱50個入り580円!
つまり…
1みかん=11.6円
4
みかん県の物価!
11みかん
※2015年7月30日時点. FPGAはSpartan3 XC3S50VQ100 (Digikey1個購入価格) 5
約2~3週間分(By みかん県民)
2.5箱みかん
表の顔
• ディープニューラルネットワーク
• 9月にロンドンで開催される国際会議(FPL2015)で発表
• 現時点でFPGAで面積性能効率トップ(なはず)
• GPUさん首を洗ってまっとれよ
6H. Nakahara and T. Sasao, "A deep convolutional neural network based on nested residue number
system," 25th International Conference on Filed-Programmable Logic and Applications (FPL 2015), (Accepted).
表の顔
• インターネット用検索エンジン
• IPv6プレフィックス
• パケットヘッダ
• ペイロード(正規表現マッチ)
Packet
FPGA FPGA
+ + +
+ + +
Adder
+
RAM
M.
M. M. M. M.
M. M. M. M.
M. M. M. M.
誰もが設計する方法 提案手法
7
H. Nakahara, T. Sasao, M. Matsuura, and H. Iwamoto, " LUT Cascades Based on Edge-Valued Multi-Valued
Decision Diagrams: Application to Packet Classification,"IEEE Journal on Emerging and Selected Topics in
Circuits and Systems (JETCAS), (To be published).
表の顔
• 電波望遠鏡用FFT
• CASPER ROACH2
45m
AirBUS A321
44.51m
CASPER ROACH-2 Revision 2
Stand-alone FPGA board
-FPGA: Xilinx Virtex-6 SX475T
-PowerPC 440 EPx
-Multi-gigabit transceiver (SFP+)
-2 x ZDOKs
8
何の脈絡もなく
ファミコンを作ることに
• 先行者多数、ソースコードも豊富
• マリオという超有名タイトルが!
安直だね!
9
でも(息子が寝てくれないんで)
時間がないんです…
※夜11時過ぎ… 10
Vivado HLSを採用
• Xilinxの中の人に「これスゴイデース」と勧められたから
• アカデミック価格は10万 (System Editionに含まれる)
• XUP(Xilinx University Program)だと25ライセンス無料
• 上司(教授)のケツを蹴っ飛ばして導入しましょう
• Nexys4 DDR を恵んで頂いたから
• Xilinxさんありがとう!
• Google先生が「HLSでNESを作った人いないよ」って
教えてくれたから(←重要)
• 高位合成使うと短期間で設計できますよ~と煽られたから
• ちなみにVivado HLSを使ったのは初めて(誰も信じてくれない…)
• 前身のAuto-ESLの元になったアルゴリズムを知ってる程度
• 何故が高位合成ツールの査読が降ってくる…
11
NES (Nintendo Entertainment
System)のお勉強
• アーキテクチャ
• NES Info (http://nesdev.com/)
• NES研究室
(http://hp.vector.co.jp/authors/VA042397/nes/)
• すずめ愛好会
(http://symfo.web.fc2.com/nes/nes_suzume.html)
• アセンブラ
• ギコ猫でもわかるファミコンプログラミング
(http://gikofami.fc2web.com/)
• エミュレータのソースコード(C++)
• TASの管理人謹製(http://bisqwit.iki.fi/source/nes.html)
• 美しい日本のファミコンエミュレータ
(https://github.com/tanakh/bjne/blob/master/README.ja)
12
エミュレータのコーディング
• といいつつ、キモの6502コアは拝借
• M. Fayzulli (iNESの作者)
(http://fms.komkon.org/EMUL8/)
• #define (マクロ) ゴリゴリ…, 後でgcc使うと展開できるからネ
• C言語で
• いつも通りにビヘイビア(クロック無視)を書く
• 標準ライブラリ&再帰&動的ポインタはダメよ~ダメダメ
• 配列はstaticで初期値をあらかじめ指定
• レジスタ値を端末に, ゲーム画面をBMPファイルに出力
• ただし, 関数間のやりとりは外部変数を多用
• 高位合成が上手く扱ってくれることを期待
• C++から(メンバ変数)の移植がすっごい楽
• 環境
• Cygwin64bit@Win8.1のgcc (使ったオプション-O3くらい)
13
案の定…
signed charによる
符号拡張ぬけ
ミラーリングが逆
14
こいつ…動くぞ…
• マッパ0専用(マ○オのみ動けばおk)
• ミラーリングは垂直のみ(マ○オのみ動けばおk)
• APU(サウンド)は未実装
• Java版はバグ有り…orz
15
高位合成ツールVivado HLSでGO!
こ
こ
か
ら
が
本
当
の
地
獄
だ
…
16
Vivado HLSに投入…の前に手直し
• main()はテストベンチとして記述(つまり合成対象外)
• ファミコンはプロセッサ+周辺回路, つまり順序回路…どうやって状態を保持?
• 外部・内部変数→Vivado HLS任せ 【今回はこれ】
• 関数外→自分のRTLで管理 main()
{
// テスト読込み
read();
// エミュレーション
nes_emu();
}
void nes_emu()
{
int reg_a;
// エミュレーション部
}
main()
{
// テスト読込み
read();
int reg_a;
// エミュレーション
nes_emu( &reg_a);
}
void nes_emu( int *reg_a)
{
// エミュレーション部
}
17
リセットは?
• Vivado HLS上で設定
• プラグマでも可
Solution
→ General
→ Add…
→Commandで
→config_rtlを設定
• none (電源オン時にリセット)
• control (制御レジスタのみ)
• state (制御+FSMをリセット)
• all (メモリも含めてすべてリセット)
• 外部変数に static 修飾子をつける
• ちなみに const だとROMを明示
18
UG902: Vivado HLS高位合成
ガイドからざっと解説
• 1章をざっと読んで、3章を読むと取り敢えず書けるようになる
• main()をテストベンチ, 以降の関数を合成対象とする記述を強く
奨励
• main()は何を記述しても可
• 今回はゲームパッドデータ(テキストファイル)を読み込ん
でBMP画像を出力しました
• Vivado HLSさん弱気…
• まぁ、いきなり高位合成は勇気がいるよ
• 一部のシステムコールは記述可(RTL生成時に無視してくれる)
• printf, puts, putcharなどデバッグによく使う関数はおk
• 逆にfprintf, getc, time, malloc等はダメ!
• 当たり前だけど再帰、動的メモリ確保等は、ダメ
19
UG902: Vivado HLS高位合成
ガイドからざっと解説(続)
• 小さい関数は自動でインライン展開される
• 逆に, 各関数はそのままHDLのモジュールとして出力
+プリミティブ(BRAMと初期値ファイル(*.dat), DSP48E)
• 任意精度型サポート
• int24, uint1 (じゃあbooleanサポートしてよ…)とか
• 1024ビットまでおk…VLIWマシン書けるじゃん
• #include “ap_cint.h”をインクルード
• (当然のことながら)通常のコンパイラの対象外
• Vivado HLSのCシミュ専用コードになってしまうぞなもし
• RAMインプリは static, ROMだと const
• 初期化はプラグマ(static int a=2とか書いて,
#pragma HLS reset variable=a)、またはconfig_rtlで設定
20
Run C-synthesis…ウボァー
21
Vivado HLSさん優秀っす…
• こちらの想定していない状況まで解析していた!
int func( int a, int b)
{
if( a != 0)
func( a, b);
else
return a + b;
}
a == 0を期待して
コードを書いていた…
22
再帰を直したら合成…できた!?
結構リソース食ってるな、、という感想
Vivadoにかけると全く違う量だったので、
アテになりません(怒)
23
NES全体をHDLで記述
• クロックドメインなVGAコントローラのみHDL手書き
• RAM(BRAM)を馬鹿でかいバッファping-pong RAMとして
NES
本体
@50MHz
NES
カートリッジ
(RAM)
バッファ
RAM
VGA
Ctrl.
@25
MHz
Vivado HLS
で設計
ROM吸出し
by Arduino
ゲームパッド
by Arduino
24
先生…検証が…したいです…
な
…
な
ん
と
い
う
こ
と
だ
……
…
世
界
が
ち
が
い
す
ぎ
る
……
あ
…
あ
ま
り
に
も
…
……VivadoSIM
で
は
ど
う
し
よ
う
も
な
い
……
Cygwin (Wind8.1, Vaio Pro 11)上の
Cで1フレーム(256x240ドット)検証: 1秒
1フレームをVivadoで
Behavioral Simulation: 3時間
25
サイクルベースで検証
• タイミング検証を省いてロジックのみ検証
• イベントドリブン:任意時刻の信号変化
• サイクルベース:クロックエッジの変化時のみ
• Verilator (http://www.veripool.org/wiki/verilator)
• HDLをC++に逆変換 (当時は何故?と思っていました…スマンカッタ)
• Ubuntuだと「apt-get install verilator」でインストールできるお手軽さ
• べんりな よのなかに なった もの よのう
サイクルベース
イベントドリブン
Clock NESの検証だと
1フレーム
約10秒
26
ウボァー(2回目)
• 人手を介した所(グルーロジック)にバグが…
XとYが逆
RとBが逆
27
やり直し!
• 今度は動いた!
28
~働いたら負けかな
と思ってる
R T L に 触 れ た ら
エミュレータの
ビヘイビアモデルを
Cで記述
Vivado HLS用に手直し
・ビット幅の調整
・再帰構造の見直し
Vivado HLS
Cシミュレーション
Vivado HLS 高位合成
Verilatorによる
サイクルベース検証
Vivado HDL合成
全体のHDL記述
6日
30分
3分
5分
30分
10分
20分
Vivado SIMをすると
約3時間x60フレーム
2~
3回
2~
3回
数1000回?
全部で約1週間を費やした
Vivado SIMだと1回シミュレーション
(60フレーム)する時間だよ…
こんな画面が
でるまで真っ暗
=検証できない
29
手書きHDLと比較
# 18Kb BRAMs # FFs #LUTs Off‐chip RAM
(1) Spartan3E
1000
5 1588 5088 PSRAM
(2) Spartan6
LX16
5 1348 2236 16MB Micron
Cellular RAM
Artix‐7 by
Vivado HLS
75
(カートリッジ含む)
6004 6885 ‐‐‐
(1) http://danstrother.com/fpga‐nes/
(2) http://fpganes.blogspot.jp/2013/01/luddes‐
fpga‐nes.html
設計期間…約1週間(ソフト6日+高位合成1日), 手書きは約4か月
(http://gadget.itmedia.co.jp/gg/articles/1105/30/news103.html)
30
手設計より3倍HWが増加するが
20倍短い期間で設計できる
ZedboardのCortex A9と比較
• 800MHz Dual-Core
• DDR3 512MB
• Xillunux上で計測
• 自作エミュのCコードを使用
• gcc –O3 でコンパイル
• APU(サウンド), PPU(描画)は
行わない
【結果】 66.5 fps そこそこ早い!?
(HDL不要じゃん…)
Vivado HLSでは296.6fps相当
消費電力は意外といい勝負
HDL: 1.04 W
CortexA9: 2.42 W
高位合成によるHW高位合成によるHW
ARM上のSWARM上のSW
高位合成によるHWは
消費電力性能比で10.79倍優れる
高位合成によるHWは
消費電力性能比で10.79倍優れる
31
53万FPSへの挑戦 (魔改造)
32
とりあえずgprofを使って
プロファイリング…
ppu_render
34%
ppu_render_bg
30%
cpu_exec
15%
mbc_read
12%
ppu_render_spr
6%
mbc_read_chr_rom 3% その他 0%残りは 0.01%未満…
ppu_なんとか
→描画処理
cpu_exec
→命令実行
mbc_なんとか
→メモリアクセス
33
一方Vivado HLSで解析すると…
Analysisを
クリック
34
すでに描画と
CPUエミュレーションを
並列化してくれてる!
→ループをインライン展開して
ループ回数を減らせばおk?
高位合成による設計のポイント
35
C. Zhang, P. Li, G. Sun, Y. Guan, B. Xiao and J. Cong, ”Optimizing FPGA‐based 
Accelerator Design for Deep Convolutional Neural Networks,” FPGA 2015
2つの屋根
36
システムには2つの限界が存在
・リソース量 (Computation)
・メモリ帯域 (Bandwidth)
Bandwidth roofが求められる!
(性能)/(帯域, ここでは4.5GB/s)
C. Zhang, P. Li, G. Sun, Y. Guan, B. Xiao and J. Cong, ”Optimizing FPGA‐based 
Accelerator Design for Deep Convolutional Neural Networks,” FPGA 2015
作戦
37
デザインはこの範囲内に
収まらなければならない!
デザインAだと, 95GFlops/5.34 GBs だから
メモリ帯域制限 4.5GBsをオーバー!
実効性能は
60 Gflopsに落ちる
結論: この線を
狙っていこう!
C. Zhang, P. Li, G. Sun, Y. Guan, B. Xiao and J. Cong, ”Optimizing FPGA‐based 
Accelerator Design for Deep Convolutional Neural Networks,” FPGA 2015
解決策: アルゴリズムの改良
38
デザインはこの範囲内に
収まらなければならない!
アルゴリズムA
アルゴリズムB
C. Zhang, P. Li, G. Sun, Y. Guan, B. Xiao and J. Cong, ”Optimizing FPGA‐based 
Accelerator Design for Deep Convolutional Neural Networks,” FPGA 2015
解決策②: メモリ帯域の向上
39
RAM RAM RAM
RAM RAM RAM
RAM RAM RAM
RAM RAM RAM
RAM RAM RAM
RAM RAM RAM
FPGAのメモリ
数百~千個 (・∀・)
小さい(36Kb)(´・ω・`)
C. Zhang, P. Li, G. Sun, Y. Guan, B. Xiao and J. Cong, ”Optimizing FPGA‐based 
Accelerator Design for Deep Convolutional Neural Networks,” FPGA 2015
ゲームを絞るべ(マリオ専用化!)
• FPGAにROMを埋め込む
• さまざまな変数を定数にできる!
→条件文が浅くなる
→メモリアクセス回数が減る
• ゲームの性質を利用して投機実行・並列化
• TASの管理人謹製のNESエミュがすごかった…
40
FPGAならではのテクニック
• マリオしかできないYO…
リコンフィギュレーション
→ FPGAは 再 構 成 できるじゃん!
41
MEM CPU
MEM
CPU
ROM
MEM
MEM
CPU
マリオ
専用
CPU MEM
CPUMEM
MEM
CPU
サッ
カー
専用
CPU
再構成
ROM
性能は低いけど
なんでもできるよ!
性能高いし
なんでもできるよ!
で、こうなった
NET FPGA Sume
Virtex7 690T
Nexys4ボードは
インタフェースのみ
(VGA + JoyPad)
早すぎて何が起こっているか実機で確認できません…
(シミュレーションではうまくいってるっぽいけど)
(;´Д`)
42
感想
• HLSに改宗しました
• だってTAT短いんだもん
• クロックマターなとこだけHDL
• HDLに触れたら負け
• サイクルベース等上位レイヤで検証しておけばおk
• でも…やっぱり…ねぇ…
• 秒オーダでコンパイルするCコンパイラさん手放せない…
• Softwareエンジニアにはギャップがでかい
• (使いどころを選べば) HWエンジニアには強力な武器
• コード生成品質・ツールの使い勝手・値段のバランスが良い
• 人柱!人柱!
• みんなで使おうHLS, もっと事例(SWやHWとの比較)が欲しい
43
おしまい!
ご清聴ありがとうございました
@oboe7man
44

More Related Content

What's hot

SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようShinya Takamaeda-Y
 
NEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfNEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfYasunori Goto
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdfYasunori Goto
 
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29ryuz88
 
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Hiroki Nakahara
 
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかなおき きしだ
 
Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化Hiroyuki Okuhata
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxpsMITSUNARI Shigeo
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層智啓 出川
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたTakefumi MIYOSHI
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門NVIDIA Japan
 
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムShinya Takamaeda-Y
 
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてマルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてFixstars Corporation
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミングNorishige Fukushima
 

What's hot (20)

SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
NEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfNEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdf
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf
 
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
 
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)
 
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
 
Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化Ultra96ボードでYOLOを高速化
Ultra96ボードでYOLOを高速化
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
 
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてマルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
 

Viewers also liked

(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESSHiroki Nakahara
 
Verilog-HDL Tutorial (15) hardware
Verilog-HDL Tutorial (15) hardwareVerilog-HDL Tutorial (15) hardware
Verilog-HDL Tutorial (15) hardwareHiroki Nakahara
 
Verilog-HDL Tutorial (13)
Verilog-HDL Tutorial (13)Verilog-HDL Tutorial (13)
Verilog-HDL Tutorial (13)Hiroki Nakahara
 
Verilog-HDL Tutorial (11)
Verilog-HDL Tutorial (11)Verilog-HDL Tutorial (11)
Verilog-HDL Tutorial (11)Hiroki Nakahara
 
Verilog-HDL Tutorial (15) software
Verilog-HDL Tutorial (15) softwareVerilog-HDL Tutorial (15) software
Verilog-HDL Tutorial (15) softwareHiroki Nakahara
 
Verilog-HDL Tutorial (12)
Verilog-HDL Tutorial (12)Verilog-HDL Tutorial (12)
Verilog-HDL Tutorial (12)Hiroki Nakahara
 
FPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAFPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAHiroki Nakahara
 
Verilog-HDL Tutorial (14)
Verilog-HDL Tutorial (14)Verilog-HDL Tutorial (14)
Verilog-HDL Tutorial (14)Hiroki Nakahara
 
Nested RNSを用いたディープニューラルネットワークのFPGA実装
Nested RNSを用いたディープニューラルネットワークのFPGA実装Nested RNSを用いたディープニューラルネットワークのFPGA実装
Nested RNSを用いたディープニューラルネットワークのFPGA実装Hiroki Nakahara
 
FPL15 talk: Deep Convolutional Neural Network on FPGA
FPL15 talk: Deep Convolutional Neural Network on FPGAFPL15 talk: Deep Convolutional Neural Network on FPGA
FPL15 talk: Deep Convolutional Neural Network on FPGAHiroki Nakahara
 
Verilog-HDL Tutorial (9)
Verilog-HDL Tutorial (9)Verilog-HDL Tutorial (9)
Verilog-HDL Tutorial (9)Hiroki Nakahara
 
最近のSingle Shot系の物体検出のアーキテクチャまとめ
最近のSingle Shot系の物体検出のアーキテクチャまとめ最近のSingle Shot系の物体検出のアーキテクチャまとめ
最近のSingle Shot系の物体検出のアーキテクチャまとめYusuke Uchida
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみたHiroki Nakahara
 
Altera sdk for open cl アンケート集計結果(公開版)
Altera sdk for open cl アンケート集計結果(公開版)Altera sdk for open cl アンケート集計結果(公開版)
Altera sdk for open cl アンケート集計結果(公開版)Hiroki Nakahara
 
A Random Forest using a Multi-valued Decision Diagram on an FPGa
A Random Forest using a Multi-valued Decision Diagram on an FPGaA Random Forest using a Multi-valued Decision Diagram on an FPGa
A Random Forest using a Multi-valued Decision Diagram on an FPGaHiroki Nakahara
 
(公開版)FPGAエクストリームコンピューティング2017
(公開版)FPGAエクストリームコンピューティング2017 (公開版)FPGAエクストリームコンピューティング2017
(公開版)FPGAエクストリームコンピューティング2017 Hiroki Nakahara
 
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介Hiroki Nakahara
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)Hiroki Nakahara
 

Viewers also liked (19)

(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS
 
Verilog-HDL Tutorial (15) hardware
Verilog-HDL Tutorial (15) hardwareVerilog-HDL Tutorial (15) hardware
Verilog-HDL Tutorial (15) hardware
 
Verilog-HDL Tutorial (13)
Verilog-HDL Tutorial (13)Verilog-HDL Tutorial (13)
Verilog-HDL Tutorial (13)
 
Verilog-HDL Tutorial (11)
Verilog-HDL Tutorial (11)Verilog-HDL Tutorial (11)
Verilog-HDL Tutorial (11)
 
Verilog-HDL Tutorial (15) software
Verilog-HDL Tutorial (15) softwareVerilog-HDL Tutorial (15) software
Verilog-HDL Tutorial (15) software
 
Verilog-HDL Tutorial (12)
Verilog-HDL Tutorial (12)Verilog-HDL Tutorial (12)
Verilog-HDL Tutorial (12)
 
FPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAFPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGA
 
Verilog-HDL Tutorial (14)
Verilog-HDL Tutorial (14)Verilog-HDL Tutorial (14)
Verilog-HDL Tutorial (14)
 
Nested RNSを用いたディープニューラルネットワークのFPGA実装
Nested RNSを用いたディープニューラルネットワークのFPGA実装Nested RNSを用いたディープニューラルネットワークのFPGA実装
Nested RNSを用いたディープニューラルネットワークのFPGA実装
 
FPL15 talk: Deep Convolutional Neural Network on FPGA
FPL15 talk: Deep Convolutional Neural Network on FPGAFPL15 talk: Deep Convolutional Neural Network on FPGA
FPL15 talk: Deep Convolutional Neural Network on FPGA
 
Naist2015 dec ver1
Naist2015 dec ver1Naist2015 dec ver1
Naist2015 dec ver1
 
Verilog-HDL Tutorial (9)
Verilog-HDL Tutorial (9)Verilog-HDL Tutorial (9)
Verilog-HDL Tutorial (9)
 
最近のSingle Shot系の物体検出のアーキテクチャまとめ
最近のSingle Shot系の物体検出のアーキテクチャまとめ最近のSingle Shot系の物体検出のアーキテクチャまとめ
最近のSingle Shot系の物体検出のアーキテクチャまとめ
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
 
Altera sdk for open cl アンケート集計結果(公開版)
Altera sdk for open cl アンケート集計結果(公開版)Altera sdk for open cl アンケート集計結果(公開版)
Altera sdk for open cl アンケート集計結果(公開版)
 
A Random Forest using a Multi-valued Decision Diagram on an FPGa
A Random Forest using a Multi-valued Decision Diagram on an FPGaA Random Forest using a Multi-valued Decision Diagram on an FPGa
A Random Forest using a Multi-valued Decision Diagram on an FPGa
 
(公開版)FPGAエクストリームコンピューティング2017
(公開版)FPGAエクストリームコンピューティング2017 (公開版)FPGAエクストリームコンピューティング2017
(公開版)FPGAエクストリームコンピューティング2017
 
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
 

More from Hiroki Nakahara

FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...Hiroki Nakahara
 
ROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSHiroki Nakahara
 
DSF2018講演スライド
DSF2018講演スライドDSF2018講演スライド
DSF2018講演スライドHiroki Nakahara
 
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...Hiroki Nakahara
 
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural NetworkISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural NetworkHiroki Nakahara
 
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...Hiroki Nakahara
 
FPT17: An object detector based on multiscale sliding window search using a f...
FPT17: An object detector based on multiscale sliding window search using a f...FPT17: An object detector based on multiscale sliding window search using a f...
FPT17: An object detector based on multiscale sliding window search using a f...Hiroki Nakahara
 
Verilog-HDL Tutorial (8)
Verilog-HDL Tutorial (8)Verilog-HDL Tutorial (8)
Verilog-HDL Tutorial (8)Hiroki Nakahara
 
Verilog-HDL Tutorial (7)
Verilog-HDL Tutorial (7)Verilog-HDL Tutorial (7)
Verilog-HDL Tutorial (7)Hiroki Nakahara
 

More from Hiroki Nakahara (11)

FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
 
ROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROS
 
FPGAX2019
FPGAX2019FPGAX2019
FPGAX2019
 
SBRA2018講演資料
SBRA2018講演資料SBRA2018講演資料
SBRA2018講演資料
 
DSF2018講演スライド
DSF2018講演スライドDSF2018講演スライド
DSF2018講演スライド
 
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
 
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural NetworkISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
 
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
 
FPT17: An object detector based on multiscale sliding window search using a f...
FPT17: An object detector based on multiscale sliding window search using a f...FPT17: An object detector based on multiscale sliding window search using a f...
FPT17: An object detector based on multiscale sliding window search using a f...
 
Verilog-HDL Tutorial (8)
Verilog-HDL Tutorial (8)Verilog-HDL Tutorial (8)
Verilog-HDL Tutorial (8)
 
Verilog-HDL Tutorial (7)
Verilog-HDL Tutorial (7)Verilog-HDL Tutorial (7)
Verilog-HDL Tutorial (7)
 

私のファミコンのfpsは530000です。もちろんフルパワーで(以下略