view 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 source

-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