Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Yuichi Yoshida
Chief engineer, DENSO IT Laboratory, Inc.
@sonson_twit
© 2014 DENSO IT Laboratory, Inc., All rights reserve...
FPGA
ここに回路を書き込む
• 電気と通すと答えが出る
• 余計な回路がないので電力使わない
• クロックはそんなに高くない
• 状態を保存する必要があると苦手
[17]
FPGA
人検出回路画像パッチ 人か否か
データを流すと答えが出る
数クロックで答えが出る
パイプライン化できれば見かけ1クロック
無駄な回路がないので電気代お得
FPGAの方式
• 回路を焼き切るタイプ
• スイッチを切り替えるタイプ
• LUTを使うタイプ
• 今はこれ
[1]
まとめてみる
自由度 速度 消費電力 開発コスト
CPU ◎ ? ⃝ ⃝
GPU ? ⃝ ?
FPGA ? ⃝ ⃝ ?
ASIC ◎ ◎
[2,3,4,5]
Microsoft - Bing
• 検索エンジン
• 大規模化
• 電力効率向上
[6,7]
Microsoft - Bing
• ポイント
• FPGAをフェーズ毎に使い分ける
• 耐障害性のために壊れた時にreconfigure
• 特徴量抽出と合成
• 順序回路+メニーコア
• 特化したCPUをFPGA上に多数構成→並列計算
• ...
IBM
• NoSQL
• クエリ文を発行しない
• オンメモリデータベース
• ユーザのアカウント,属性,値の取得
• redis
IBM - Coherent Accelerator Processor Interface
• POWER8のキャッシュとデバイスのメモリを接続
• 外部デバイスをキャッシュとして爆速アクセス?
• 推察
• キャッシュにアクセスするように読...
応用方法の大別?
ハードウェアからパターン
CPUの補助するパターン
[15,16,17]
FPGAの何が難しいのか
1から8まで数えたい
1から8まで数える回路
手で作る
FPGAの何が難しいのか
画像を微分してヒストグラムを作る
え・・・・?
手で・・??
FPGAの難しさ
• デバイスに近い・・・勉強するしかない
• だから高速に処理できたりする
• ソフトウェアの知識だけでは実装できない
• 高位合成が発展途上・・・小人さんに任せる
• C/C++→論理回路(まだまだ研究領域)
• OpenC...
並列化
• CPU, GPU, ASIC全部共通の課題
• ムーアの法則がやばくなってきた以上,並列化重要
• レベルの高いアルゴリズムを並列化するのは難しい
課題と最近出てきてる研究
• 実装に再利用性がない
• SIMD, GPU, FGPA, ASIC
• 対象で書き方が違う
• 同じ対象でもハードウェアで違う
• 並列化で高速化するのが難しい
• なるべくメモリを使わないように
• なるべくパ...
Halide
• スレッド
• SIMD
• GPU
• などなど・・・
[10]
[10]
Halide
[10]
• スレッド
• SIMD
• GPU
• などなど・・・
Halide
Halideなら,このコードで全ての環境にポートできる
[10]
• スレッド
• SIMD
• GPU
• などなど・・・
色々,すごいところ
• 論文として
• SIGGRAPH採択
• 実装すごすぎ
• ガチに実装してる
• ARM, Intel, GPUに出力可能
• C++にインラインでかける
• コミュニティにバカ受け
• CVPR2015で専用チュートリ...
Halideの使い方ー以下を書く
• 何をするか
• 処理内容
• いつやるか
• ループの場所
• どこでやるか
• バッファ
[11]
何を?
処理内容を書く
依存関係は勝手に解釈される
[10]
いつ?
256x32のタイルを作成し,タイル内で
8ピクセルずつ処理し,縦方向にタイルを並列処理する
[10]
いつ?
8ピクセルずつ処理する
[10]
どこで?
バッファ
[10]
Demo
Brightening, blurring for 768x1024 image[14]
Darkroom
• 並列化のためのDSLという点ではHalideと同じ
• 課題
• キャッシュが大きいとダメ
• パイプライン化しやすい
• メモリへのアクセスが最も電気代や速度を食う
[12]
Richardson-Lucy deconvolution
CCDの隣のセルに光子がポアソン仮定で,
飛んでいくので,それをキャンセルする?
• 誤差 = 観測値 x パラメタ畳み込み
• 真値(t) / 誤差 x パラメタ畳み込み
• 真値(...
カメラ
真値(t)
エラー
真値(t+1)
[12]
カメラ
真値(t)
エラー
真値(t+1)
[12]
カメラ
真値(t)
エラー
真値(t+1)
[12]
これを離散最適化に置き換え
時間的整合性
処理の前後関係の保証
コスト関数
キャッシュの総和
n(c,p,d) = sc − sp − d
n(c,p,d) ≥ 0
S = ( max
(c,p,d)∈U
n(c,p,d) )∗
p∈F
∑ b...
まとめ
• 並列化
• 色々なコーディングで問題がある
• 機械学習でアプローチするのいいね
• 実装して使ってもらうアプローチもいいね!
• llvmとかの応用を始めてもいいかも
参考文献
1. 奈良先端科学技術大学院大学 高前田先生のslide share - http://www.slideshare.net/shtaxxx/
2015-0918veriloggen?next_slideshow=1
2. http:...
Upcoming SlideShare
Loading in …5
×

Halide, Darkroom - 並列化のためのソフトウェア・研究

6,696 views

Published on

社内勉強会資料です.

Published in: Technology
  • Hello there! Get Your Professional Job-Winning Resume Here! http://bit.ly/topresum
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Halide, Darkroom - 並列化のためのソフトウェア・研究

  1. 1. Yuichi Yoshida Chief engineer, DENSO IT Laboratory, Inc. @sonson_twit © 2014 DENSO IT Laboratory, Inc., All rights reserved. Redistribution or public display not permitted without written permission from DENSO IT Laboratory, Inc. 最近,作業が地味すぎて疲れた男の勉強レポート Research 新技術研究会 並列処理最適化言語の研究
  2. 2. FPGA ここに回路を書き込む • 電気と通すと答えが出る • 余計な回路がないので電力使わない • クロックはそんなに高くない • 状態を保存する必要があると苦手 [17]
  3. 3. FPGA 人検出回路画像パッチ 人か否か データを流すと答えが出る 数クロックで答えが出る パイプライン化できれば見かけ1クロック 無駄な回路がないので電気代お得
  4. 4. FPGAの方式 • 回路を焼き切るタイプ • スイッチを切り替えるタイプ • LUTを使うタイプ • 今はこれ [1]
  5. 5. まとめてみる 自由度 速度 消費電力 開発コスト CPU ◎ ? ⃝ ⃝ GPU ? ⃝ ? FPGA ? ⃝ ⃝ ? ASIC ◎ ◎
  6. 6. [2,3,4,5]
  7. 7. Microsoft - Bing • 検索エンジン • 大規模化 • 電力効率向上 [6,7]
  8. 8. Microsoft - Bing • ポイント • FPGAをフェーズ毎に使い分ける • 耐障害性のために壊れた時にreconfigure • 特徴量抽出と合成 • 順序回路+メニーコア • 特化したCPUをFPGA上に多数構成→並列計算 • 検索? • 専用回路設計 • Deep LearningのFeed forwardをFPGA上で実装 • このために専用DSLを設計・実装
  9. 9. IBM • NoSQL • クエリ文を発行しない • オンメモリデータベース • ユーザのアカウント,属性,値の取得 • redis
  10. 10. IBM - Coherent Accelerator Processor Interface • POWER8のキャッシュとデバイスのメモリを接続 • 外部デバイスをキャッシュとして爆速アクセス? • 推察 • キャッシュにアクセスするように読み出し? • DBがキャッシュにあるように見える? • 方式に応じたアクセス • get - FPGA • put - CPU [5,8]
  11. 11. 応用方法の大別? ハードウェアからパターン CPUの補助するパターン [15,16,17]
  12. 12. FPGAの何が難しいのか 1から8まで数えたい 1から8まで数える回路 手で作る
  13. 13. FPGAの何が難しいのか 画像を微分してヒストグラムを作る え・・・・? 手で・・??
  14. 14. FPGAの難しさ • デバイスに近い・・・勉強するしかない • だから高速に処理できたりする • ソフトウェアの知識だけでは実装できない • 高位合成が発展途上・・・小人さんに任せる • C/C++→論理回路(まだまだ研究領域) • OpenCL(FPGAのGPU的利用方法?) • 並列化・・・がんばりどころか? • 状態管理等があるとCPUの方が早い • ハードウェアを理解し,並列化するのが難しい
  15. 15. 並列化 • CPU, GPU, ASIC全部共通の課題 • ムーアの法則がやばくなってきた以上,並列化重要 • レベルの高いアルゴリズムを並列化するのは難しい
  16. 16. 課題と最近出てきてる研究 • 実装に再利用性がない • SIMD, GPU, FGPA, ASIC • 対象で書き方が違う • 同じ対象でもハードウェアで違う • 並列化で高速化するのが難しい • なるべくメモリを使わないように • なるべくパイプライン化して多段実行できるように • そして,矛盾しないように
  17. 17. Halide • スレッド • SIMD • GPU • などなど・・・ [10] [10]
  18. 18. Halide [10] • スレッド • SIMD • GPU • などなど・・・
  19. 19. Halide Halideなら,このコードで全ての環境にポートできる [10] • スレッド • SIMD • GPU • などなど・・・
  20. 20. 色々,すごいところ • 論文として • SIGGRAPH採択 • 実装すごすぎ • ガチに実装してる • ARM, Intel, GPUに出力可能 • C++にインラインでかける • コミュニティにバカ受け • CVPR2015で専用チュートリアル[13] • 開発がガリガリ,Google, Adobeなどが投資?
  21. 21. Halideの使い方ー以下を書く • 何をするか • 処理内容 • いつやるか • ループの場所 • どこでやるか • バッファ
  22. 22. [11]
  23. 23. 何を? 処理内容を書く 依存関係は勝手に解釈される [10]
  24. 24. いつ? 256x32のタイルを作成し,タイル内で 8ピクセルずつ処理し,縦方向にタイルを並列処理する [10]
  25. 25. いつ? 8ピクセルずつ処理する [10]
  26. 26. どこで? バッファ [10]
  27. 27. Demo Brightening, blurring for 768x1024 image[14]
  28. 28. Darkroom • 並列化のためのDSLという点ではHalideと同じ • 課題 • キャッシュが大きいとダメ • パイプライン化しやすい • メモリへのアクセスが最も電気代や速度を食う [12]
  29. 29. Richardson-Lucy deconvolution CCDの隣のセルに光子がポアソン仮定で, 飛んでいくので,それをキャンセルする? • 誤差 = 観測値 x パラメタ畳み込み • 真値(t) / 誤差 x パラメタ畳み込み • 真値(t+1) 観測値:カメラのピクセル値 真値:求めたい真のピクセル値 繰り返して真値を求める [18]
  30. 30. カメラ 真値(t) エラー 真値(t+1) [12]
  31. 31. カメラ 真値(t) エラー 真値(t+1) [12]
  32. 32. カメラ 真値(t) エラー 真値(t+1) [12]
  33. 33. これを離散最適化に置き換え 時間的整合性 処理の前後関係の保証 コスト関数 キャッシュの総和 n(c,p,d) = sc − sp − d n(c,p,d) ≥ 0 S = ( max (c,p,d)∈U n(c,p,d) )∗ p∈F ∑ bp notationがよくわからなかった・・・・
  34. 34. まとめ • 並列化 • 色々なコーディングで問題がある • 機械学習でアプローチするのいいね • 実装して使ってもらうアプローチもいいね! • llvmとかの応用を始めてもいいかも
  35. 35. 参考文献 1. 奈良先端科学技術大学院大学 高前田先生のslide share - http://www.slideshare.net/shtaxxx/ 2015-0918veriloggen?next_slideshow=1 2. http://jp.reuters.com/article/2015/06/01/intel-to-acquire-altera-idJPKBN0OH2JT20150601 3. http://techon.nikkeibp.co.jp/article/NEWS/20141128/391400/ 4. http://itpro.nikkeibp.co.jp/article/NEWS/20140617/564785/ 5. https://twitter.com/Daniel_Bowers/status/372101503936253952 6. A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services 7. マイクロソフトはどうやってBingをFPGAで実装したか - http://qiita.com/kazunori279/items/ 6f517648e8a408254a50 8. XilinxがIBM POWER8とFPGAをつなげてKVS作った話 - http://qiita.com/kazunori279/items/ 5668350ef6273d21ecf7 9. きつねさんでもわかるLLVM ~コンパイラを自作するためのガイドブック~ 10. Decoupling algorithms from schedules for easy optimization of image processing pipelines 11. Halide Talk - https://www.youtube.com/watch?v=3uiEyEKji0M 12. Darkroom : Compiling High-Level Image Processing Code into Hardware Pipelines 13. Google Computer Vision research at CVPR 2015 - http://halide-lang.org/cvpr2015.html 14. Halide事始め - http://nebuta.hatenablog.com/entry/2013/08/04/135932 15. http://japan.xilinx.com/products/boards-and-kits/dk-z7-video-g.html 16. https://ja.wikipedia.org/wiki/ARMアーキテクチャ#/media/File:VY86C06020FC-2_02.jpg 17. https://en.wikipedia.org/wiki/Field-programmable_gate_array#/media/File:Fpga_xilinx_spartan.jpg 18. Richardson–Lucy deconvolution - https://en.wikipedia.org/wiki/Richardson–Lucy_deconvolution

×