SlideShare ist ein Scribd-Unternehmen logo
1 von 23
ElixirでFPGAハードウェアが
作れちゃう,かも!!?
<fukuoka.ex #19圧縮版>
高瀬 英希
(京都大学/JSTさきがけ)
takase@i.kyoto-u.ac.jp
「決められたことをすぐにやる」
• 特定用途のみに特化した
専用のアーキテクチャ構成
• 必要なだけのデータ幅と演算
コンピュータの計算資源
「言われたことはなんでもやる」
• すべてのケースをカバーする
汎用データパス
• 固定されたデータ幅と演算プロセッサ
&
ソフトウェア
ASIC
(専用回路)
ハードウェア
2
プロセッサ vs. ASIC
設計容易性・柔軟性
開発製造コスト
省電力性
性能・並列性プロセッサ
&
ソフトウェア
ASIC
(専用回路)
ハードウェア
FPGA
3
FPGAとは?
• Field Programmable Gate Array
− 中身を改変可能なLSI
− ハードウェアそのものの
振る舞いを変えられる
− 独自のデジタル回路を
自由に何回でも形成できる
− FPGA二大ベンダ:
Xilinx・Altera (powered by Intel)
4
IOB
SB
CB LB
IOB
IOB
SB
IOB LB
SB
CB CB
SB
CB
SB SB
CB CBLB IOBIOB LB
SB SB SB
IOB IOB
CB
CB
CB
CB
CB
CB
入出力ブロック
コネクションブロックLB 論理ブロック
IOBSB スイッチブロック
CB
LUT
IN OUT
0000 1
0001 0
0010 0
… …
1110 1
1111 0
D-FF
D Q
FPGAの使い方
5
プロセッサ
通信バス
FPGA
重たい処理を
オフロード
HW
HW
インタフェース IF
レイヤ
HW化によって
並列化・省電力化
SW
SW
SW/HW間は
高速に通信
SW
SW
IF
レイヤ
FPGAの強み
6
FPGA
Memory
Func Func
Func FuncFunc
Func FuncFunc
FuncFunc
CPU
Memory
Func
Unit
Reg
• データストリーム処理の実現が可能になる
− ノイマン・ボトルネックの解消に!
• ハードウェアとして並列処理できる
高位合成
• 抽象度の高い動作記述からRTLを生成する技術
− 汎用プログラミング言語によって振る舞いを定義
多くのツールはC/C++またはその拡張言語
− 「なに」を行うかに重点を置いて設計する
7
int func (int x) {
int a[N];
int i;
for(i=0;i<N;i++){
a[i] = ・・・;
:
:
}
:
}
x
func
i
a
C/C++の高位合成ツール
8
• Xilinx Vivado HLS
− C/C++からHDLを生成
− EclipseベースIDE
− 無償利用可能
• Intel FPGA SDK for OpenCL
− OpenCLの並列プログラムから
HDLを生成
− ホストPC/GPUと同記述で
合成&実行可能
出典:Xilinx社ホワイトペーパー UG902
D. Neto, Optimizing OpenCL for Altera FPGAs, Int’l Workshop on Open CL, 2014.
#pragmaやライブラリの使いこなし・
最適化のための合成系の習熟が必須
C/C++以外の高位合成系
• Chisel:Scalaベースによる処理系
− オブジェクト指向/関数型言語風にDSLを記述
• Synthesijer:Javaによる処理系
− Java言語仕様のサブセットをHW合成可能 Scala/Goにも対応
• CλaSH:Haskellの高位合成系
− 関数型言語の記述からHDLを生成
• PyCoRAM:Pythonによる処理系
− メモリ管理機構を抽象化して動作記述可能
 Veriloggen:HDLを組み立てるPythonライブラリ
• Mulvery:Rubyベースの高位合成系
− Reactive Programmingからのハードウェア合成
• Octopus🐙:Ocamlの高位合成系
9
書きやすい(好きな)言語で
HWを設計する時代?
じゃあこうなりますよね!?
10
あ…ありのまま 今 起こった事を話すぜ!
「Elixirを書いていたら
ハードウェアが合成されていた」
な… 何を言っているのか わからねーと思うが
おれも 何をされたのか わからなかった…
アプリがどうにかなりそうだった…
数倍の高速化だとか
10倍の電力効率化だとか
そんなチャチなもんじゃあ 断じてねえ
もっと恐ろしいものの片鱗を
味わったぜ…
Elixir “ZEN” Style
• データと並列処理の流れを直感的に記述
− Programming should be about transforming data
• Enum:
データコレクションを操作
• Flow:
並列処理を直接的に記述
− MapReduce処理モデル
• |>:パイプライン演算子
データの流れを表現
 その他の長所・特徴
− イミュータブル性
− パターンマッチング
11
1..1000
|> Flow.from_enumerable()
|> Flow.map(& foo(&1))
|> Flow.map(& bar(&1))
|> Enum.to_list
|> Enum.sort
ハードウェア設計にも
使えるはず!!
基本的なアイデア
12
Cockatrice
input_list
|> Flow.from_enumerable(stages: 4)
|> Flow.map(& foo(&1))
|> Flow.map(& bar(&1))
|> Enum.to_list
|> Enum.sort
from_
enumerable
input_list
foo
foo
foo
foo
sortto_list
arbitrator
bar
bar
bar
bar
基本的なアイデア
13
Input
List from_
enume
rable
to_list
sort
foo bar
foo bar
foo bar
foo bar
arbitrator
foo bar
foo
bar
foo bar
foo
bar
foo
bar
foo
foo bar
foo
bar
foo bar bar
foo bar
foo barfoo bar
foo bar
Cockatriceの合成フロー
14
設計記述の
解析
設計記述
Elixir
ライブラリIP・
テンプレート
HDL+DSL
構文木
AST
Elixir関数対応
HWモジュール生成
HW IPモジュール
HDL
データフロー合成 データフロー型
HW回路 HDL
HW回路
bitstream
IFドライバ
C
論理合成
(HW回路合成)
アプリ記述
Elixir+C(NIF)
IF回路
ドライバ合成
SWコンパイル
Elixirライブラリと機能等価な
モジュールをIPとして提供
(HW屋さん的にはIPベース設計)
無名関数の演算子・関数や
並列度等のパラメータを
テンプレートのDSLに適用
SW/HW間のインタフェース機構を生成
予備実装と環境
• 対象デバイス: Zybo Z7-20 (XC7Z020)
− ARM Cortex-A9 dual-core
processor 667MHz
− FPGA 50MHz
論理合成ツール:Vivado 2017.4
AMBA AXI4: AXI-Lite & AXI-GP
• OS: Ubuntu16.04 LTS
− Petalinux 2017.4
• Elixir 1.7.4 / Erlang/OTP 20
− [erts-9.3] [source] [smp:2:2] [ds:2:2:10]
[async-threads:10] [hipe] [kernel-poll:false]
15
Elixir HWが
ちゃんと動いた!!
現状のまとめと狙いどころ
• 現状のまとめ
− 9種類のEnum関数をHDL IP化
− 通信機構を実装して実機動作を確認
でもZyboじゃなかなか性能が出ないぃ,,,
• 狙いどころ:AI/MLアプリ?
 少なくとも組込み向けではなさそう
− IoT向けビッグ(な数値)データの
ストリーム処理
− ユーザで柔軟に機能を変えたい
クラウドサーバ処理
16
リアルタイムアプリには
向いてるけど,データが
どでかいとしんどいよねぇ
17
詳しくは
fukuoka.ex #19
をご参照ください
https://fukuokaex.connpass.com
/event/120102/presentation/
あんど,,,
わんもあしんぐ!!
ElixirConf US 2019!!
19
https://elixirconf.com/2019/speakers/51
大事なコトは何度でも,,,
わんもあしんぐ!!
21
Justin will come to
Japan
on this summer!!
22
• SWEST: 組込みシステム技術に
関するサマーワークショップ
• 1泊2日の合宿形式
−岐阜県下呂温泉 水明館
−2019年9月5日(木)〜6日(金)
• 目的:組込み技術の徹底議論と交流
SWEST21
|> 論!
|> ラン!!
|> push!!!
23
Nerves Training in Kyoto
https://kyotoex.connpass.com/event/133813/

Weitere ähnliche Inhalte

Ähnlich wie ElixirでFPGAハードウェアが作れちゃう,かも!!?

HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127HPCシステムズ株式会社
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryAtsushi Koshiba
 
Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630Hiroshi Matsumoto
 
110709 3rd SyoueneIT Workshop ARMServer
110709 3rd SyoueneIT Workshop ARMServer110709 3rd SyoueneIT Workshop ARMServer
110709 3rd SyoueneIT Workshop ARMServerKensuke SAEKI
 
Scale flux roi&amp;performance_acri
Scale flux roi&amp;performance_acriScale flux roi&amp;performance_acri
Scale flux roi&amp;performance_acri直久 住川
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
Boston Viridis - Carxeda EnergyCore SoC (ARM Cortex A9) based cluster applian...
Boston Viridis - Carxeda EnergyCore SoC (ARM Cortex A9) based cluster applian...Boston Viridis - Carxeda EnergyCore SoC (ARM Cortex A9) based cluster applian...
Boston Viridis - Carxeda EnergyCore SoC (ARM Cortex A9) based cluster applian...Atsushi Suzuki
 
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...Insight Technology, Inc.
 
Starc verilog hdl2013d
Starc verilog hdl2013dStarc verilog hdl2013d
Starc verilog hdl2013dKiyoshi Ogawa
 
ITpro EXPO 2014: Cisco UCSによる最新VDIソリューションのご紹介
ITpro EXPO 2014: Cisco UCSによる最新VDIソリューションのご紹介ITpro EXPO 2014: Cisco UCSによる最新VDIソリューションのご紹介
ITpro EXPO 2014: Cisco UCSによる最新VDIソリューションのご紹介シスコシステムズ合同会社
 
超個体性をもったエッジコンピューティング実現に向けたElixir/Nerves環境の適合性評価
超個体性をもったエッジコンピューティング実現に向けたElixir/Nerves環境の適合性評価超個体性をもったエッジコンピューティング実現に向けたElixir/Nerves環境の適合性評価
超個体性をもったエッジコンピューティング実現に向けたElixir/Nerves環境の適合性評価Shunsuke Kikuchi
 
Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点Shinichiro Arai
 
Riak / Riak-CS(Enterprise版) ベンチマークしました
 Riak / Riak-CS(Enterprise版) ベンチマークしました Riak / Riak-CS(Enterprise版) ベンチマークしました
Riak / Riak-CS(Enterprise版) ベンチマークしましたTakashi Sogabe
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
Applibot presents Smartphone Game on AWS
Applibot presents Smartphone Game on AWSApplibot presents Smartphone Game on AWS
Applibot presents Smartphone Game on AWSKenta Yasukawa
 

Ähnlich wie ElixirでFPGAハードウェアが作れちゃう,かも!!? (20)

Cmc cmd slim
Cmc cmd slimCmc cmd slim
Cmc cmd slim
 
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
 
Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630
 
110709 3rd SyoueneIT Workshop ARMServer
110709 3rd SyoueneIT Workshop ARMServer110709 3rd SyoueneIT Workshop ARMServer
110709 3rd SyoueneIT Workshop ARMServer
 
Scale flux roi&amp;performance_acri
Scale flux roi&amp;performance_acriScale flux roi&amp;performance_acri
Scale flux roi&amp;performance_acri
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
Myoshimi extreme
Myoshimi extremeMyoshimi extreme
Myoshimi extreme
 
Boston Viridis - Carxeda EnergyCore SoC (ARM Cortex A9) based cluster applian...
Boston Viridis - Carxeda EnergyCore SoC (ARM Cortex A9) based cluster applian...Boston Viridis - Carxeda EnergyCore SoC (ARM Cortex A9) based cluster applian...
Boston Viridis - Carxeda EnergyCore SoC (ARM Cortex A9) based cluster applian...
 
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
 
Starc verilog hdl2013d
Starc verilog hdl2013dStarc verilog hdl2013d
Starc verilog hdl2013d
 
ITpro EXPO 2014: Cisco UCSによる最新VDIソリューションのご紹介
ITpro EXPO 2014: Cisco UCSによる最新VDIソリューションのご紹介ITpro EXPO 2014: Cisco UCSによる最新VDIソリューションのご紹介
ITpro EXPO 2014: Cisco UCSによる最新VDIソリューションのご紹介
 
超個体性をもったエッジコンピューティング実現に向けたElixir/Nerves環境の適合性評価
超個体性をもったエッジコンピューティング実現に向けたElixir/Nerves環境の適合性評価超個体性をもったエッジコンピューティング実現に向けたElixir/Nerves環境の適合性評価
超個体性をもったエッジコンピューティング実現に向けたElixir/Nerves環境の適合性評価
 
Introduction of FPGA
Introduction of FPGAIntroduction of FPGA
Introduction of FPGA
 
Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点
 
Riak / Riak-CS(Enterprise版) ベンチマークしました
 Riak / Riak-CS(Enterprise版) ベンチマークしました Riak / Riak-CS(Enterprise版) ベンチマークしました
Riak / Riak-CS(Enterprise版) ベンチマークしました
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Applibot presents Smartphone Game on AWS
Applibot presents Smartphone Game on AWSApplibot presents Smartphone Game on AWS
Applibot presents Smartphone Game on AWS
 

Mehr von Hideki Takase

Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirHideki Takase
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓くHideki Takase
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミングHideki Takase
 
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2ROS 2 Client Library for E^2
ROS 2 Client Library for E^2Hideki Takase
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつHideki Takase
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはHideki Takase
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークHideki Takase
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Hideki Takase
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentHideki Takase
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Hideki Takase
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αHideki Takase
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計するHideki Takase
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜Hideki Takase
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてHideki Takase
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirHideki Takase
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~Hideki Takase
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANHideki Takase
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Hideki Takase
 

Mehr von Hideki Takase (20)

Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
 
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2ROS 2 Client Library for E^2
ROS 2 Client Library for E^2
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/Nervesはナウでヤングなcoolなすごいやつ
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うには
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: ElixirでROS!!
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+α
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計する
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYAN
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 

ElixirでFPGAハードウェアが作れちゃう,かも!!?

Hinweis der Redaktion

  1. 粗粒度並列化よりパイプライン化とかのほうが効くかも それを指定できると良いかも どこかで高位合成しないといけないのだから,HLS Cを吐くアプローチを取ったほうが手っ取り早いのでは? Elixir/ErlangからCに変換するようなコンパイラの研究ありそう データを流すから通信が重くなる 共有メモリへのアクセスとかで改善したほうが良さそう 最適化目標を指定できるようにしたほうが良いのか?
  2. FPGAは基本論理セルが規則的に並ぶ構造となっています. セルの組み合わせと接続を変えることで,ある時は通信回路,動画処理エンジン,暗号回路,プロセッサにもなれる. ドワンゴさんのサーバでも動いているらしいです. 設計方法,プログラミングというとちょっと語弊がありますが,こんな言語で記述します.ぶっちゃけ私はこんなの書けないです. 最近ではそんな私のために,高位合成という技術が実用レベルになりつつあります.
  3. FPGAは基本論理セルが規則的に並ぶ構造となっています. セルの組み合わせと接続を変えることで,ある時は通信回路,動画処理エンジン,暗号回路,プロセッサにもなれる. ドワンゴさんのサーバでも動いているらしいです. 設計方法,プログラミングというとちょっと語弊がありますが,こんな言語で記述します.ぶっちゃけ私はこんなの書けないです. 最近ではそんな私のために,高位合成という技術が実用レベルになりつつあります.
  4. LB:論理回路を実現する論理要素 IOB:外部との信号の入出力を行う要素 SW, CB, Wire:それらを接続する配線要素
  5. プロセッサ処理より高性能かつ省電力を実現する ASICよりも製造コストを抑えられる
  6. 逐次,分岐,繰り返しなどの制御はステートマシンとして,変数はレジスタ,配列はメモリとして生成される
  7. これまでのプログラミング言語は処理の振る舞いに着目してきた.これからはデータの扱いを重視すべきとの思想が根付いている. パイプ演算子でデータの流れを直接的に記述できる. MapReduceモデルのFlowライブラリによって並列処理を直接的に記述できる. このプログラムでは,1 から1000 までのリストを生成し,各コアにリストの要素を分配した後,各要素について関数foo とbar を順番に適用してから結果をリストに戻す.図1のプログラムコードを記述すると,各コアにリスト要素を分配して実行される. 通常の言語ではマルチコアによる並列処理を行ってもコア間の同期や排他制御などが多々発生するため,コア数の増加に対し実行速度の向上が鈍化する傾向がある.しかし,Elixir ではイミュータブル特性により,マルチコアによる並列処理の際にはコア数に比例して実行速度が向上する Elixirでは末尾再帰を推奨.イミュータブルに束縛していくので,スタック使用量は線形に増えることはない.ただしHWにするときはどうするかは要検討.
  8. 11:29 19分で
  9. 11:29 19分で