Mercurial > hg > Papers > 2014 > kkb-sigos
comparison cerium.tex @ 2:bff486ef0e8c
commit
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 21 Apr 2014 03:30:37 +0900 |
parents | a0fad656a7ea |
children | 2921110c23aa |
comparison
equal
deleted
inserted
replaced
1:a0fad656a7ea | 2:bff486ef0e8c |
---|---|
26 \end{center} | 26 \end{center} |
27 \caption{Task Manager} | 27 \caption{Task Manager} |
28 \label{fig:createTask} | 28 \label{fig:createTask} |
29 \end{figure} | 29 \end{figure} |
30 | 30 |
31 依存関係が解消され、実行可能になった Task は ActiveTaskList に移される。 | |
32 さらに、Scheduler に転送しやすい TaskList に変換してから cpy type に対応する Scheduler に転送される。 | |
33 Task が終了すると Scheduler から TaskManager に通知される。 | |
34 その通知に従って依存関係が解消され、再び TaskManager から Scheduler に Task が転送される。 | |
35 図:\ref{fig:createTask}は Cerium が Task を生成/実行する場合のクラスの構成である。 | 31 図:\ref{fig:createTask}は Cerium が Task を生成/実行する場合のクラスの構成である。 |
32 TaskManager で依存関係が解消され、実行可能になった Task は ActiveTaskList に移される。 | |
33 ActiveTaskList に移された Task は依存関係が存在しないのでどのような順序で実行されても問題ない。 | |
34 Task は Scheduler に転送しやすい TaskList に変換してから cpy type に対応する Scheduler に Synchronized Queue である mail を通して転送される。 | |
35 Scheduler ではパイプラインで task が処理される(図:\ref{fig:task_scheduler})。 | |
36 Task が終了すると Scheduler から TaskManager に mail を通して通知される。 | |
37 その通知に従って依存関係が処理され、再び TaskManager から Scheduler に Task が転送される。 | |
38 | |
39 \begin{figure}[!h] | |
40 \begin{center} | |
41 \includegraphics[scale=0.4]{./images/scheduler.pdf} | |
42 \end{center} | |
43 \caption{Task Scheduler} | |
44 \label{fig:task_scheduler} | |
45 \end{figure} | |
36 | 46 |
37 以下に Task を生成する例題を示す。 | 47 以下に Task を生成する例題を示す。 |
38 表:\ref{table:TaskManager_api}は Task を生成に用いる API を示している。 | 48 表:\ref{table:TaskManager_api}は Task を生成に用いる API を示している。 |
39 input データを2つ用意し、input データの各要素同士を乗算し、output に格納する multiply という例題である。 | 49 input データを2つ用意し、input データの各要素同士を乗算し、output に格納する multiply という例題である。 |
40 | 50 |
48 set\_inData & Task への入力データのアドレスを追加 \\ \hline | 58 set\_inData & Task への入力データのアドレスを追加 \\ \hline |
49 set\_outData & Task からのデータ出力先アドレスを追加 \\ \hline | 59 set\_outData & Task からのデータ出力先アドレスを追加 \\ \hline |
50 set\_param & Task のパラメータ \\ \hline | 60 set\_param & Task のパラメータ \\ \hline |
51 wait\_for & Task の依存関係 \\ \hline | 61 wait\_for & Task の依存関係 \\ \hline |
52 set\_cpu & Task を実行する Device の設定 \\ \hline | 62 set\_cpu & Task を実行する Device の設定 \\ \hline |
53 spawn & Task を Queue に登録する \\ \hline | 63 spawn & Task を登録する \\ \hline |
54 iterate & データ並列で実行する Task として Queue に登録する \\ \hline | 64 iterate & データ並列で実行する Task として登録する \\ \hline |
55 \end{tabular} | 65 \end{tabular} |
56 \caption{Task 生成に用いる API} | 66 \caption{Task 生成に用いる API} |
57 \label{table:TaskManager_api} | 67 \label{table:TaskManager_api} |
58 \end{center} | 68 \end{center} |
59 \end{table} | 69 \end{table} |
84 | 94 |
85 \begin{table}[h] | 95 \begin{table}[h] |
86 \begin{center} | 96 \begin{center} |
87 \small | 97 \small |
88 \begin{tabular}[t]{c||c|c|c|c} \hline | 98 \begin{tabular}[t]{c||c|c|c|c} \hline |
89 stage&CPU0& CPU1&CPU2&CPU3 \\ \hline | 99 &CPU0& CPU1&CPU2&CPU3 \\ \hline |
90 1&0&1&2&3 \\ \hline | 100 1&0&1&2&3 \\ \hline |
91 2&4&5&6&7 \\ \hline | 101 2&4&5&6&7 \\ \hline |
92 3&8&9& & \\ \hline | 102 3&8&9& & \\ \hline |
93 \end{tabular} | 103 \end{tabular} |
94 \caption{Data 並列実行時の index の割り当て} | 104 \caption{Data 並列実行時の index の割り当て} |