Suche senden
Hochladen
高位合成友の会 第3回 (2015/12/08) でのスライド
•
Als PPTX, PDF herunterladen
•
2 gefällt mir
•
2,124 views
K
ktok07b6
Folgen
高位合成友の会 第3回 (2015/12/08) でのスライド
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 32
Jetzt herunterladen
Empfohlen
20101211 gunma.web#3 LanguaGegenerationLoss
20101211 gunma.web#3 LanguaGegenerationLoss
ivoryworks .
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP
YamaYamamoto
先進の擬人化技術を搭載した筋トレーナーBotを体験しよう
先進の擬人化技術を搭載した筋トレーナーBotを体験しよう
LINE Corporation
anything-php-funcref-perl.el
anything-php-funcref-perl.el
Kenichirou Oyama
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Tano Makoto
5分でわかるPhalconPHP
5分でわかるPhalconPHP
Shohei Tai
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
Empfohlen
20101211 gunma.web#3 LanguaGegenerationLoss
20101211 gunma.web#3 LanguaGegenerationLoss
ivoryworks .
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP
YamaYamamoto
先進の擬人化技術を搭載した筋トレーナーBotを体験しよう
先進の擬人化技術を搭載した筋トレーナーBotを体験しよう
LINE Corporation
anything-php-funcref-perl.el
anything-php-funcref-perl.el
Kenichirou Oyama
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Tano Makoto
5分でわかるPhalconPHP
5分でわかるPhalconPHP
Shohei Tai
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
Masaru Matsuo
JavaのLambdaの裏事情
JavaのLambdaの裏事情
なおき きしだ
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話
ロフト くん
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Masaharu IWAI
CodeIgniter Con Tokyo 2011 資料
CodeIgniter Con Tokyo 2011 資料
Takako Miyagawa
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
azuma satoshi
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
高位合成でDeep learning
高位合成でDeep learning
Mori Labo.
PYNQ祭り
PYNQ祭り
Mr. Vengineer
Pynq祭り資料
Pynq祭り資料
一路 川染
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
marsee101
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Shinya Takamaeda-Y
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門
narusugimoto
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPCシステムズ株式会社
Antinoise system & Noise Cancellation
Antinoise system & Noise Cancellation
Gujarat Technological University
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaoke
Renyuan Lyu
D4 cloud
D4 cloud
Koichi Ise
Weitere ähnliche Inhalte
Was ist angesagt?
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
Masaru Matsuo
JavaのLambdaの裏事情
JavaのLambdaの裏事情
なおき きしだ
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話
ロフト くん
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Masaharu IWAI
CodeIgniter Con Tokyo 2011 資料
CodeIgniter Con Tokyo 2011 資料
Takako Miyagawa
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
azuma satoshi
Was ist angesagt?
(9)
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
JavaのLambdaの裏事情
JavaのLambdaの裏事情
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Perl (OSC2011 Tokyo/Spring, Doc-ja)
CodeIgniter Con Tokyo 2011 資料
CodeIgniter Con Tokyo 2011 資料
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
Andere mochten auch
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
高位合成でDeep learning
高位合成でDeep learning
Mori Labo.
PYNQ祭り
PYNQ祭り
Mr. Vengineer
Pynq祭り資料
Pynq祭り資料
一路 川染
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
marsee101
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Shinya Takamaeda-Y
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門
narusugimoto
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPCシステムズ株式会社
Antinoise system & Noise Cancellation
Antinoise system & Noise Cancellation
Gujarat Technological University
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaoke
Renyuan Lyu
D4 cloud
D4 cloud
Koichi Ise
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Tokoroten Nakayama
Andere mochten auch
(14)
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
高位合成でDeep learning
高位合成でDeep learning
PYNQ祭り
PYNQ祭り
Pynq祭り資料
Pynq祭り資料
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
Antinoise system & Noise Cancellation
Antinoise system & Noise Cancellation
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaoke
D4 cloud
D4 cloud
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Ähnlich wie 高位合成友の会 第3回 (2015/12/08) でのスライド
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
gree_tech
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
5分でわかるphalcon php
5分でわかるphalcon php
Yusaku Kinoshita
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
Shinya Okano
Introduction Pycon2010
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
PyPy 紹介
PyPy 紹介
shoma h
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
Seiya Mizuno
Tfug kansai vol1
Tfug kansai vol1
Natsutani Minoru
Why python
Why python
TeppeiAkada1
Why python
Why python
TeppeiAkada1
CPythonを読もう
CPythonを読もう
Akira Nonaka
Polyphony の並列化
Polyphony の並列化
ryos36
gRPC入門
gRPC入門
ssuser0f153f
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
勉強会資料#1
勉強会資料#1
Shuichi Yukimoto
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Tetsuya Morimoto
vscode pipenv docker
vscode pipenv docker
ikdysfm
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
kunihikokaneko1
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
Katsuhiro Morishita
Ähnlich wie 高位合成友の会 第3回 (2015/12/08) でのスライド
(20)
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
5分でわかるphalcon php
5分でわかるphalcon php
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
Introduction Pycon2010
Introduction Pycon2010
PyPy 紹介
PyPy 紹介
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
Tfug kansai vol1
Tfug kansai vol1
Why python
Why python
Why python
Why python
CPythonを読もう
CPythonを読もう
Polyphony の並列化
Polyphony の並列化
gRPC入門
gRPC入門
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
勉強会資料#1
勉強会資料#1
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
vscode pipenv docker
vscode pipenv docker
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
高位合成友の会 第3回 (2015/12/08) でのスライド
1.
Polyphony ~Pythonベースの高位合成コンパイラ~ 有限会社シンビー 片岡/鈴木
2.
目次 ● Polyphonyの特徴 ● 現在の開発状況 ●
今後の開発
3.
Polyphonyの特徴
4.
Polyphonyはこんなツール(になる予定) 特徴 ● Pythonで書いたコードをHDL(Verilog)に 変換するためのコンパイラ ● コードはPythonインタプリタで動く普通 のPythonのコード ●
特殊なクラスや言語拡張は基本的になし ● ただし,使える言語要素に制限あり ● オープンソース
5.
Polyphonyはこんなツール(になる予定) 得意なこと ● 抽象度の高い処理記述 ● ソフトウェアのハードウェア化 ●
動くものを早く作る 出来ないこと,苦手なこと ● クロック単位のタイミング制御 ● ハードウェアの制御 ● 性能の追求
6.
Pythonのいいところ 開発が早い ● ソースの読みやすさ,書きやすさ ● 割とすぐに身につく
(学習コスト低め) ● 標準ライブラリが充実 ● 使える外部ライブラリも多い Pythonの上のような特徴を生かした高位合成ツール (になる予定)
7.
ハードウェア記述言語の生産性と性能 生 産 性 性能 (速度,リソース...) 高 低 高位合成処理系 VHDL Verilog 良い悪い 夢の 処理系
8.
ハードウェア記述言語の生産性と性能 生 産 性 性能 (速度,リソース...) 高 低 高位合成処理系 VHDL Verilog 良い悪い Polyphonoy (目標) いまここ! ↓ 夢の 処理系
9.
ハードウェア記述言語の生産性と性能 生 産 性 性能 (速度,リソース...) 高 低 高位合成処理系 VHDL Verilog 良い悪い Polyphonoy (目標) 夢の 処理系・言語機能の充実 ・コードの再利用 ・最適化性能アップ ・バックエンドライブラリの充実 いまここ! ↓
10.
現在の開発状況
11.
値 (リテラル) ● 使えるのは整数,True,Falseだけ ●
浮動小数点数は現状未対応 将来的にはサポート予定 ● 文字列も...今後検討
12.
変数 とりあえず普通に使えますが…… 課題: 常に符号あり32ビット整数型として合成 32ビット使い切るようなケースはまれ しかし,Pythonには変数の型を明示する方法がない #Pythonは値の代入により変数の型が決まる x =
120
13.
変数 課題: 常に符号あり32ビット整数型として合成 対策案: 表明
(アサーション) によるビット数推定 assert文で値の範囲,符号,ビット幅などのヒント をコンパイラに与える 実行時の検証にもなり,二度おいしい #xは符号なし7ビットに合成 assert 0 <= x and x <= 127 #xのビット数を直接指定することも可 assert x.bit_length() == 7
14.
式 算術演算,ビット演算 比較演算,論理演算 x = 1
+ (2 + 3) * -4 y = y & 0b11110000 d = a < b < c e = x and y or z
15.
リスト 生成 参照と代入 ● 長さは固定長 ● リストに入れられる要素は整数型,True,False のみ xs
= [1, 2, 3, 4] ys = [0] * 4096 xs[0] = xs[-1] * 2
16.
リスト 追加,削除など長さを変える操作不可 メソッドは基本的に不可 追加,削除はあったほうが便利… どういう操作をサポートするかどうかは検討中です list.append(5) list.index(a) list.count(b) list.sort()
17.
関数定義 & 関数呼び出し Pythonの関数⇒Verilogのモジュール def
f(x): ... module f(...); ... Python Verilog
18.
関数定義 & 関数呼び出し Pythonの関数呼び出し⇒Verilogのサブモジュール def
f(x): g(x) module f(...); g g_inst(...); Python Verilog
19.
関数定義 & 関数呼び出し 関数の並列実行 という関数があるとき f()とg()は,並列に実行されます (※データフロー解析の結果,関数に依存関係がなく 関数の内側で外の環境を変化させないことが条件) も並列に実行,ただし逐次実行も可能です (同じFUの並列度は調整可能) def
f(x): ... def g(y): ... x = f(0) + g(1) x = f(0) + f(1)
20.
関数定義 & 関数呼び出し 内部関数もサポート def
f(x, y): def f_a(a): ... def f_b(b): ... return f_a(x) * f_b(y)
21.
制御構造: for forループ for i
in range(x): # ここだけrange関数使える ... else: # for-elseも一応対応 (基本使わないけど...) ...
22.
制御構造: for 一応リストも回せます 内部的には…こう変換しています for x
in xs: # xsはリスト func(x) # len()はリストの長さを得る組み込み関数 for i in range(len(xs)): x = xs[i] func(x)
23.
その他利用可能な言語要素 ● if-elif-else ● while-else ●
continue, break ● assert ● return ● print関数 …などが利用できます
24.
テストベンチ合成 テストベンチ向けの合成も可能 def func01(x): def inner(y): return
y + 1 return inner(x) @testbench def test(): assert 1 == func01(0) assert 2 == func01(1) assert 3 == func01(2)
25.
ソースコードの制限 Pythonのどんなコードも合成できるわけではない 例えば, ● クラス ● 辞書,タプルなどのオブジェクト ●
組み込み関数 (sorted, map, filter…) ● クロージャ … など,使用できない言語要素は多い 今のところC言語などと表現力はあまり変わらない
26.
Polyphonyを使ってみた例 すごくシンプルなプロセッサの実装 1. CPUエミュレータのようなソースをPythonで書く 2. 実際にFPGAの上でソフトプロセッサとして動かす
27.
Polyphonyを使ってみた例 def mips_main(imem:list, dmem:list): ... while
True: iaddr = IADDR(pc) ins = imem[iaddr] pc = pc + 4 op = ins >> 26 if op == R: funct = ins & 0x3f shamt = (ins >> 6) & 0x1f rd = (ins >> 11) & 0x1f rt = (ins >> 16) & 0x1f rs = (ins >> 21) & 0x1f if funct == ADDU: reg[rd] = reg[rs] + reg[rt] 次のFPGAマガジン(No.12)に載るかも・・・?
28.
今後の開発
29.
今後の開発予定機能の例 言語要素のサポート強化 例えば, ● クラス ● 高階関数 をサポート
30.
その他の開発予定機能 ● import文によるコードの再利用 ● 組込み関数 enumerate,
zip, any, all, abs, sum, ... ● ライブラリ numpy, scipy (ほとんど妄想) ...
31.
おわりに Polyphonyはオープンソースです GitHubで公開中 https://github.com/ktok07b6/polyphony ● バグ報告 ● 追加機能のリクエスト ●
プルリクエスト 歓迎します☺
32.
ご清聴ありがとうございました
Jetzt herunterladen