diff presentation/datasegment.ind @ 14:4b0a368cc858

add presentation
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 26 Sep 2011 10:38:35 +0900
parents
children 55787a891c8a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/presentation/datasegment.ind	Mon Sep 26 10:38:35 2011 +0900
@@ -0,0 +1,134 @@
+-title: Cerium における DataSegment API の設計
+
+-author:  金城裕 and 河野真治
+
+--affiliation:  琉球大学
+
+--Cell用TaskManager Cerium 
+
+もう、Linux が PS3 で動かないのでやっても意味がない。
+
+Open CL と似てる。
+
+--Cerium, Open/CLでの並列プログラミングの問題点
+
+	Task の取り扱うデータ型が示されない
+	Task 自体は簡単だが Task を構成する方法が繁雑
+	Open CL\cite{opencl} に比べても構文的に複雑
+	Task の種類が複雑
+	Task の依存関係の記述がデータの依存関係と無関係
+	Task Scheduler が大きくメモリを圧迫
+	C++ と Task 記述の相性が良くない
+	Task Manager が複雑になりすぎ
+
+--Continuation based C
+
+関数呼び出しの代わりに goto を持つ C
+
+Input Interface, Output Interface
+
+<pre>
+       __code f(struct input a) { goto g(struct input a) ; }
+       __code f(struct input a, __code (*g)()) { goto g(struct input b) ; }
+</pre>
+<img src="fig/code.jpg">
+
+--Code Segment 単位での並列実行
+
+First, make single process code segments.
+
+<img src="fig/single.jpg"     id="anim" alt=""/>
+
+<img src="fig/concurrent.jpg" id="anim" alt=""/>
+
+
+--再接続の問題
+
+    type miss match
+
+    fix argument type on applications
+
+<img src="fig/cbc.jpg">
+
+汎用の型でないと再接続できない。
+
+<img src="fig/reconnection.jpg" class="incremental">
+
+--Data segment
+
+Code Segment の双対。型を持つメモリの切れ端。
+
+Code Segment の Interface を置き換えるもの。
+
+   input datasegments
+   output datasegments
+
+<img src="fig/datasegment.jpg">
+
+--Data segmentを使ったパイプライン実行
+
+<img src="fig/pipeline.jpg">
+
+--Code segment の参照
+
+Data segment を処理する Code Segment への参照
+
+   Pointer ではない
+   GPGPUやSPUで、実行コードは別空間なことが多い
+
+GPGPUでも、通常のCPUでも両方で動かしたい。ポインタでは困る。
+
+--Task の生成
+
+Cerium では、メインCPUで動くTaskでしか Task を生成できなかった。
+
+SPU側にあまり複雑な Kernel を置けない。(256kb しかメモリがない)
+
+--Data Segement の型
+
+    Json で表す
+
+    分散計算でも使えるように
+
+    Protocol Buffer や MessagePack
+
+---Data Segment のAPI
+
+Data Segment は以下のAPIを持っている
+
+  create
+  read
+  update
+  delete
+
+--Data Segment 更新の Atomicity
+
+  Queuing
+  Update
+  Proority Queue
+
+生成された Data segment は synchronized queue として使うことができる。
+
+---Task Dependendcy
+
+Cerium では、
+
+    task->wait_for(task1);
+
+としていたが、繁雑。Data dependency が自然に依存関係を決めるので、それを
+使うのが良い。
+
+---Data Segment Storage Type
+
+    Main Memory
+    Local Memory
+    Cache Memory
+
+    Persitent Store
+
+
+
+
+
+
+