Mercurial > hg > Papers > 2011 > yutaka-jssst
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 + + + + + + +