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