Mercurial > hg > Papers > 2014 > masakoha-sigos
comparison paper/cerium.tex @ 15:5bdd06f52b61
add expriment Data
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 21 Apr 2014 21:15:36 +0900 |
parents | 6f6f482b9f12 |
children | d354ebd64148 |
comparison
equal
deleted
inserted
replaced
14:6e9ee8c1f303 | 15:5bdd06f52b61 |
---|---|
1 \section{Cerium TaskManager}\label{section:cerium} | 1 \section{Cerium TaskManager}\label{section:cerium} |
2 | 2 |
3 Cerium Task Manager は並列プログラミングフレームワークであり、内部では C や C++ で実装されている。 | 3 Cerium Task Manager は並列プログラミングフレームワークであり、内部では C や C++ で実装されている。 |
4 Cerium Task Manager は、User が並列処理を Task 単位で記述し、関数やサブルーチンを Task として扱い、その Task に対して Input Data、Output Data 及び依存関係を設定する。 | 4 Cerium Task Manager は、User が並列処理を Task 単位で記述し、関数やサブルーチンを Task として扱い、その Task に対して Input Data、Output Data を設定する。 |
5 Input Data、Output Data とは関数でいう引数に相当する。そして Task が複数存在する場合、それらに依存関係を設定することができる。 | |
5 そして、それに基づいた設定の元で Task Manager にて管理し実行される。 | 6 そして、それに基づいた設定の元で Task Manager にて管理し実行される。 |
6 Cerium Task Manager は PlayStation 3/Cell、Mac OS X 及び Linux 上で利用することが可能である。 | 7 Cerium Task Manager は PlayStation 3/Cell、Mac OS X 及び Linux 上で利用することが可能である。 |
7 | 8 |
8 図\ref{fig:cerium} は Cerium が Task を作成・実行する場合のクラスの構成となる。User が createtask を行い、input data や Task の依存関係の設定を行うと、TaskManager で Task が生成される。 | 9 図\ref{fig:cerium} は Cerium が Task を作成・実行する場合のクラスの構成となる。User が createtask を行い、input data や Task の依存関係の設定を行うと、TaskManager で Task が生成される。 |
9 Task 毎に依存関係を表す wait\_i と wait\_me というリストがあり、依存関係が解消されて実行可能になった Task は ActiveTaskList に移される。さらに、Scheduler に転送する際には TaskList に変換を行ってから各 Scheduler に転送される。 | 10 Task 毎に依存関係を表す wait\_i と wait\_me というリストがあり、依存関係が解消されて実行可能になった Task は ActiveTaskList に移される。さらに、Scheduler に転送する際には TaskList に変換を行ってから各 Scheduler に転送される。 |
61 \end{tabular} | 62 \end{tabular} |
62 \caption{Task 生成における API} | 63 \caption{Task 生成における API} |
63 \end{center} | 64 \end{center} |
64 \end{table} | 65 \end{table} |
65 \end{tiny} | 66 \end{tiny} |
67 set\_inData には、WordCount Task が担当するテキストの範囲を設定し、set\_outData にはその範囲の単語数や行数、範囲の先頭と末尾の状態を表すフラグを配列として格納してる。 | |
68 input data は分割されたデータが送られてくるため、分割された前後のテキストがどうなっているかはわからない。 | |
69 そのため、担当範囲であるデータの先頭と末尾のパラメータを単語数と行数の他に付け加える。後にそのデータを他の WordCount の結果と照らし合わせ、分割されたテキストを正しく整合する。 | |
66 | 70 |
67 しかし、input data は分割されたデータが送られてくるため、分割された前後のテキストがどうなっているかはわからない。 | |
68 そのため担当範囲であるデータの先頭と末尾のパラメータを単語数と行数の他に付け加える。後にそのデータを他の WordCount の結果と照らし合わせ、分割されたテキストを正しく整合する。 | |
69 Task の記述は以下のようになる。 | 71 Task の記述は以下のようになる。 |
70 \\ | 72 \\ |
71 | 73 |
72 \begin{verbatim} | 74 \begin{verbatim} |
73 wordcount(SchedTask *s, void *rbuf, void *wbuf) | 75 wordcount(SchedTask *s, void *rbuf, void *wbuf) |
127 \end{center} | 129 \end{center} |
128 \end{table} | 130 \end{table} |
129 \end{tiny} | 131 \end{tiny} |
130 | 132 |
131 Print Task は WordCount Task によって書き出された単語数と行数を集計し、結果を出力する Task である。 | 133 Print Task は WordCount Task によって書き出された単語数と行数を集計し、結果を出力する Task である。 |
132 WordCount Task が全て走り終わったあとに、Print Task が走るように wait をかけている。(図\ref{fig:wordcount}) | 134 WordCount Task が全て走り終わったあとに、Print Task が走るように依存関係を設定している。(図\ref{fig:wordcount}) |
135 | |
133 | 136 |
134 \begin{figure}[htbp] | 137 \begin{figure}[htbp] |
135 \begin{center} | 138 \begin{center} |
136 \includegraphics[scale=0.4]{images/wordcount.pdf} | 139 \includegraphics[scale=0.4]{images/wordcount.pdf} |
137 \end{center} | 140 \end{center} |
138 \caption{WordCount Model} | 141 \caption{WordCount Model} |
139 \label{fig:wordcount} | 142 \label{fig:wordcount} |
140 \end{figure} | 143 \end{figure} |
141 | 144 |
145 \if0 | |
142 単語数や行数、そして担当範囲の先頭と末尾の文字列の状態を配列としてデータを保持している。 | 146 単語数や行数、そして担当範囲の先頭と末尾の文字列の状態を配列としてデータを保持している。 |
143 その配列を Print Task にて処理を行い単語数、行数を集計する。 | 147 その配列を Print Task にて処理を行い単語数、行数を集計する。 |
144 | 148 |
145 しかし、分割のされ方によっては、単語数がカウントされない場合がある。(((図が必要!!!))) | 149 しかし、分割のされ方によっては、単語数がカウントされない場合がある。(((図が必要!!!))) |
146 | 150 |
178 s->printf("%llu ",word_data[i]); | 182 s->printf("%llu ",word_data[i]); |
179 } | 183 } |
180 return 0; | 184 return 0; |
181 } | 185 } |
182 \end{verbatim} | 186 \end{verbatim} |
187 \fi |