Successfully reported this slideshow.

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

8

Share

Loading in …3
×
1 of 35
1 of 35

More Related Content

Slideshows for you

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

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

×