elixir/phoenix/nervesの最新動向と hastega 改め pelemay を 中核 … · 自己紹介...

29
Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核とする今後の研究開発方針 北九州市立大学 山崎 進 1 © 2018 Susumu Yamazaki

Upload: others

Post on 25-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核とする今後の研究開発方針

北九州市立大学 山崎 進

�1© 2018 Susumu Yamazaki

Page 2: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

本発表核心部分(構想図)は CONFIDENTIAL です 核心部分については資料を公開する予定なしです核心部分の写真・SNS拡散等もご遠慮ください 前座部分については,写真・SNS拡散OKです

�2© 2018 Susumu Yamazaki

Page 3: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

自己紹介•山崎 進 (やまざき すすむ)

• 北九州市立大学 国際環境工学部 准教授

• ナッジ社会実装研究センター センター長

• 学生・就職支援担当

• Personal Vision Co-Creator

• KK-SHiFT

• Elixir 推し / fukuoka.ex / Pelemay

• 技術相談,共同研究依頼,進路相談,適職診断など,随時受付ます

3© 2019 Susumu Yamazaki

Page 4: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

1

Elixir、マイナー言語だけど、地味に生活を支えてます

Elixirの採用事例

�4© 2018 Susumu Yamazaki

Page 5: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Elixir (エリクサー) Pelemay (ペレメイ)が求められる背景とは?

�5© 2018 Susumu Yamazaki

Page 6: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

情報量爆発

2013年にデータの総量が4.4ゼタバイト 2020年に44ゼタバイトに達する見込み

�6© 2019 Susumu Yamazaki

Page 7: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

情報量爆発

2017年に毎月122エクサバイト増加 2022年に毎月396エクサバイト増加見込み

情報の増加量が加速

�7© 2019 Susumu Yamazaki

Page 8: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

5Gで通信速度は向上する• 3.2Gbpsを超える通信 (NTTドコモ公式)

• 500Gbpsを超える通信を達成した実験結果あり (英語Wikipedia)

• 4Gより高い周波数を用いることから,基地局からの最大距離が短い→基地局を高密度に設置しないといけない

• 1-30 ms 程度のレイテンシ(英語Wikipedia)

�8© 2018 Susumu Yamazaki

Page 9: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

計算能力が追いつかない

Hennesy & Patterson2003年にCPUクロック周波数は頭打ちに

�9© 2019 Susumu Yamazaki

Page 10: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

なぜクロック周波数を伸ばせないか?

•クロック周波数の増大は消費電力と発熱量の増大を招く

•電源供給量と熱伝導率および冷却能力が追いつかない

• 2~3GHz程度で常温で安定動作する限界を迎えている

•競技用オーバークロックでは液体窒素等に浸ける等により8GHz以上で動作させている

•通常のPCやサーバーでは常温稼働できることが要件

�10© 2019 Susumu Yamazaki

Page 11: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

かわりにコア数が増加

•2003年以降のプロセッサの進化 • ×クロック周波数 • ○コア数

11© 2019 Susumu Yamazaki

Intel Core 2Extreme X6800 2006

Clock 2.93GHz

# of Cores 2

Intel Core i97980XE 2017

Clock 2.6GHz

# of Cores 18

Page 12: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

GPU

•最新 GPU は1.5GHz 以上のクロック周波数3,000以上のSIMDコア

Page 13: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Kilocore•MIMD方式1000コア (cores)

• 12メモリモジュール (memory modules)

• 32nm プロセスルール (process rule)

• 最大 1.78GHz (1.1V) (maximum)

• 0.9V 時 1.24GHz 17mW5.3 pJ / 命令 (low energy)

• Intel i7 や NVIDIA GPU と比べ,1.1V時スループット4.3倍以上, エネルギー効率9.4倍以上

13© 2019 Susumu Yamazaki

B. Bohnenstiehl et al., "KiloCore: A 32-nm 1000-Processor Computational Array," in IEEE Journal of Solid-State Circuits, vol. 52, no. 4, pp. 891-902, April 2017.

Page 14: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

The Cerebras Wafer-Scale Engine (WSE)

•ウェハーサイズのチップ

• 1.2兆個のトランジスタ数

• 1辺が 215 mm

• 18GBのオンチップメモリ (on-tip memories)

• 40万コア (cores)

• 消費電力 15kW

14© 2019 Susumu Yamazaki

© 2019 Cerebras systems.

Page 15: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

今後の半導体トレンド•メモリの高速化がプロセッサの高速化に追いついていない •コア数は今後も増大し続ける •半導体プロセス微細化は限界を迎えつつある •他の各種集積技術により回路規模は当分増大の余地がある •回路長が今まで以上に長くなる •今まで以上にメモリアクセスと光速が律速になる •共有メモリ衝突,フォン・ノイマン・ボトルネック •回路全体でクロックを同期させることが不可能に •共有型アーキテクチャよりも分散型アーキテクチャ優位

�15© 2019 Susumu Yamazaki

Page 16: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

情報量増大+通信速度向上→求められる計算量増大

クロック周波数伸び悩み+コア数増大 →計算量を増やすには並列処理が必要

�16© 2018 Susumu Yamazaki

Page 17: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

でも並列処理を書くのはけっこう面倒ですよね?

�17© 2018 Susumu Yamazaki

Page 18: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Elixir + Flow + Pelemay

�18© 2018 Susumu Yamazaki

Page 19: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Shared Data

Core #1 Core #2

3.14

従来の言語の問題点

•複数のコアでデータを共有していると仮定する

19© 2019 Susumu Yamazaki

Page 20: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Shared Data

Core #1 Core #2

3.14→1.5

破壊的更新がボトルネック

•あるコアが共有データを破壊的更新した場合

•他のコアに通知して処理を止める必要がある

•速度低下につながる

•コア数が増えれば増えるほど深刻な影響をもたらす

20© 2019 Susumu Yamazaki

Update Notify

Stop Processing

Page 21: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Shared Data

Core #1 Core #2

3.14

Elixir は全てがイミュータブルである

•Elixirではデータの破壊的更新が発生することはない

•他のコアの処理を止めなくて良い

•コア数が増えても処理能力を維持できる

➡並列性に優れる

21© 2019 Susumu Yamazaki

Don’tUpdate

Don’t need tostop processing

Page 22: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

© 2018 Susumu Yamazaki

• 右のコード例

• 1から1,000,000までのリストに

• 各要素に foo を適用(x2)

• 各要素に bar を適用(+1)

• した結果を得る

• 破壊的更新なしでデータを上から順に変換していく「データ変換」パラダイム

• 本質美なので「禅」

1..1_000_000|> Enum.map(&M.foo(&1)) |> Enum.map(&M.bar(&1)) defmodule M do def foo( n ), do: n * 2 def bar( n ), do: n + 1end

Elixir Zen スタイル

�22

Page 23: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

© 2018 Susumu Yamazaki�23

• 最新のCPU/GPUはマルチコアを超えてメニーコア

• このコードは各要素間に依存関係がなく最大1,000,000並列で実行可能

簡単に並列化可能!

1..1_000_000|> Enum.map(&M.foo(&1)) |> Enum.map(&M.bar(&1)) defmodule M do def foo( n ), do: n * 2 def bar( n ), do: n + 1end

Page 24: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Flow•Elixir の作者 José Valim が2016年に作った並列処理ライブラリ

•若干の記述を足すだけでマルチコアCPUを活用

•複雑な処理を並列化する場合に効果を発揮(単純な処理では効果が出ない)

•要素の順番が入れ替わることがある点に注意

単一CPUで処理

def func do 1..1_000_000 |> Enum.map(&foo(&1)) |> Enum.map(&bar(&1)) end

並列処理

def func do 1..1_000_000 |> Flow.from_enumerable |> Flow.map(&foo(&1)) |> Flow.map(&bar(&1)) |> Enum.to_list end

Page 25: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

Pelemay•山崎と久江が2018年から開発しはじめた並列処理系

•若干の記述を足すだけでCPUのSIMD命令を活用

•現在は数値四則演算のみサポート,将来はElixir全言語仕様をサポート予定

•マルチコアをサポートしていない現在は,まだFlowとの使い分けが必要

•現時点ではFlowと併用すると遅くなる •将来はCPU/GPUをフル活用予定

単一CPUで処理

def func do 1..1_000_000 |> Enum.map(&foo(&1)) |> Enum.map(&bar(&1)) end

並列処理

defpelemay do def func do 1..1_000_000 |> Enum.map(&foo(&1)) |> Enum.map(&bar(&1)) end end

Page 26: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

デモンストレーション当日は Pelemay を実行させてみました

�26© 2018 Susumu Yamazaki

Page 27: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

現時点での活用の方向性• Flow を使って並列スクレイピング

• Flow と OpenCV を使って並列画像処理

• Pelemay を使って並列算術計算

• Elixirの行列計算ライブラリやディープラーニングライブラリへのPelemayの適用を進めています

• Pelemay はまだまだ機能が足りないですが,研究開発を精力的に進めています!

�27© 2018 Susumu Yamazaki

Page 28: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

おまけ: Nerves について• ElixirConf 2019 - Day 2 Morning Keynote - Justin Schneckhttps://youtu.be/fRP_dVton7o

• Nerves の本質の1つはイミュータブルファイルシステム

• 動的に変更するデータは全てデータベースに集約

• matsumotory “超個体型データセンターOSを目指した選択性を持つコンテナ実行基盤” にて, Nerves やそれに類するイミュータブルファイルシステムを評価してみると良いかと思います

�28© 2018 Susumu Yamazaki

Page 29: Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核 … · 自己紹介 •山崎 進 (やまざき すすむ) •北九州市立大学 国際環境工学部

核心部分についてはごめんなさい 現時点では資料非公開です

m(__)m

�29© 2018 Susumu Yamazaki