annotate cerium-manager.tex @ 7:bd8574dedd1b

*** empty log message ***
author gongo
date Tue, 25 Mar 2008 15:51:53 +0900
parents a46c6f313a0b
children b70a62630a57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
30bf38a518e8 *** empty log message ***
gongo
parents: 4
diff changeset
1 \section{Task Manager}
3
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
2 Task Manager は、Task と呼ばれる分割された各プログラムを
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
3 管理するライブラリである。Task 同士の依存関係を考慮しながら
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
4 メモリ上にマッピングし、SPE 上ではそのプログラムを
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
5 DMA 転送によりロードする (\figref{fig-manager-load}) 。
4
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
6 SPE は 256KB という小さなデータ量しか持てず、
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
7 大量のプログラムを全て SPE 上に置いておくことはできない可能性がある。
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
8 そのため、必要な時に必要な実行プログラムだけが SPE 上にロード
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
9 されていることが望ましい。
3
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
10
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
11 \begin{figure}[tb]
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
12 \begin{center}
4
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
13 \includegraphics[scale=0.45]{figure/manager-load.pdf}
3
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
14 \caption{Task Manager}
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
15 \label{fig-manager-load}
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
16 \end{center}
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
17 \end{figure}
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
18
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
19 現在実装されている Task Manager の API を \tabref{tab:manager-api} に示す。
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
20
6
a46c6f313a0b *** empty log message ***
gongo
parents: 5
diff changeset
21 \begin{table}[htbp]
3
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
22 \caption{Task Manager API} \label{tab:manager-api}
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
23 \hbox to\hsize{\hfil
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
24 \begin{tabular}{r|l} \hline \hline
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
25 create\_task & Task を生成する \\ \hline
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
26 spawn & Task を実行 Task Queue に登録する \\ \hline
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
27 set\_depend & Task の依存関係の考慮 \\\hline
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
28 set\_cpu & Task を実行する CPU の設定 \\ \hline
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
29 run & 実行 Task Queue の実行 \\ \hline
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
30 \end{tabular}\hfil}
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
31 \end{table}
2ef36d40ee96 *** empty log message ***
gongo
parents: 2
diff changeset
32
7
bd8574dedd1b *** empty log message ***
gongo
parents: 6
diff changeset
33
4
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
34 以下に Task Manager を使った記述を示す。
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
35
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
36 {\small
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
37 \begin{verbatim}
6
a46c6f313a0b *** empty log message ***
gongo
parents: 5
diff changeset
38
4
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
39 int
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
40 main(void)
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
41 {
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
42 TaskManager *manager = new TaskManager;
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
43 Task *task1, *task2;
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
44
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
45 /**
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
46 * cmd : 実行するタスクID
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
47 * size : in_addr で取得するデータのバイト数
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
48 * in_addr : 入力データ元アドレス
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
49 * out_addr : 出力データ先アドレス
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
50 */
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
51 task1 = create_task(CMD_RUN1, size1,
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
52 in_addr1, out_addr2);
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
53 task2 = create_task(CMD_RUN2, size2,
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
54 in_addr2, out_addr2);
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
55
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
56 // task2 は task1 が終了してから開始する
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
57 task2->set_depend(task1);
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
58
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
59 task1->spawn();
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
60 task2->spawn();
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
61
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
62 manager->run();
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
63
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
64 return 0;
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
65 }
6
a46c6f313a0b *** empty log message ***
gongo
parents: 5
diff changeset
66
4
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
67 \end{verbatim}
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
68 }
869c475cc108 *** empty log message ***
gongo
parents: 3
diff changeset
69
7
bd8574dedd1b *** empty log message ***
gongo
parents: 6
diff changeset
70 \input{manager-task}
bd8574dedd1b *** empty log message ***
gongo
parents: 6
diff changeset
71 \input{manager-cr}