Mercurial > hg > Members > kokubo > 2013-mid-thesis
view paper/cerium.tex @ 2:b7c8a956c10b
write benchmark and conclusion
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 06 Nov 2013 01:16:42 +0900 |
parents | f4b3de446113 |
children | 423b4d15e248 |
line wrap: on
line source
\section{Cerium における Task の生成}\label{section:cerium} Cerium では,user が createtask を行い、input data や依存関係の設定し spawn を行うと TaskManager で Task が生成される。 spawn の代わりに新たに用意した iterate を利用することで,Data 並列実行を行う Task として登録される。 Task 毎に依存関係を表す wait\_i と wait\_me というリストがあり、依存関係が解消されて実行可能になった Task は ActiveTaskList に移される。さらに、Scheduler に転送しやすい TaskList に変換してから各 Scheduler に 転送される。 以下に Data 並列実行を行う Task を生成する例題を示す。 input data を二つ用意し、 input 同士を乗算し、 output に格納する multiply という例題となる。 \begin{Verbatim}[fontsize=\footnotesize,xleftmargin=1cm] void multiply_init (HTaskPtr twice, int *i_data, int *o_data) { multiply = manager->create_task(MULTIPLY_TASK); // MULTIPLY_TASK is task id(enum) multiply->set_inData(0, i_data1, sizeof(int)*length); multiply->set_inData(1, i_data2, sizeof(int)*length); multiply->set_outData(0, o_data, sizeof(int)*length); multiply->set_cpu(SPE_ANY); multiply->iterate(length); } \end{Verbatim} \begin{tiny} \begin{table}[ht] \begin{center} \caption{Task 生成における API} \label{table:create_taskAPI} \scalebox{0.5}[0.9] \small \begin{tabular}[t]{c|l} \hline create\_task& Task を生成する \\ \hline set\_inData & Task への入力データのアドレスを追加 \\ \hline set\_outData & Task からの出力データのアドレスを追加 \\ \hline set\_cpu & Task を実行するデバイスの設定 \\ \hline iterate&Data 並列実行を行う Task として ActiveTaskList に登録 \\ \hline \end{tabular} \end{center} \end{table} \end{tiny} \begin{tiny} \begin{table}[ht] \begin{center} \caption{Task 側で使用する API} \label{table:created_taskAPI} \scalebox{0.5}[0.9] \small \begin{tabular}[t]{c|l} \hline get\_input&Scheduler から set\_inData したアドレスを取得\\ \hline get\_output&Scheduler から set\_outData したアドレスを取得\\ \hline \end{tabular} \end{center} \end{table} \end{tiny}