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