view paper/cerium.tex @ 1:f4b3de446113

write introduction and cerium
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Tue, 05 Nov 2013 23:59:45 +0900
parents 9e88a388ec83
children b7c8a956c10b
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}