annotate Paper/paper.tex @ 0:c0689037215f

first commit
author Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
date Sat, 21 Jul 2012 09:20:45 +0900
parents
children fa9cfac50776
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 \usepackage[dvipdfmx]{graphicx}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 \usepackage{url}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 \usepackage{picins}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 \usepackage{fancyhdr}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 \pagestyle{fancy}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 \lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}}Technical Reading \& Writing}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 \rhead{}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 \cfoot{}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 \setlength{\headheight}{0mm}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 \setlength{\headsep}{5mm}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{15mm}}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{15mm}}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 \setlength{\textwidth}{181mm}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 \setlength{\textheight}{261mm}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 \setlength{\footskip}{0mm}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 \pagestyle{empty}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 \begin{document}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 \title{Implementation of Cerium Parallel Task Manager on Multi-core}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 \author{128569G Daichi TOMA}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 \date{}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 \maketitle
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 \thispagestyle{fancy}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 \section{はじめに}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 プロセッサメーカは, 消費電力, 発熱及びクロックの限界という観点から,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 マルチコア構成の路線を打ち出しており, 今後ますますマルチコアプロセッサが主流になると想像できる.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 マルチコアプロセッサ上で, リソースを有効活用するためには, 並列プログラミングを行う必要があるが,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 効率の良い並列プログラムを書くことは難しい.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 そこで, 本研究室で作成した Cerium Task Manager\cite{gongo:2008a} をマルチコアプロセッサに対応させることで,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 マルチコアプロセッサ上での Task 単位による並列プログラミングをサポートする.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 今まで, Cerium Task Manager は, PlayStation 3/Cell\cite{cell} 上でのみ, 並列実行を可能にしていたが,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 今回新たに Mac OS X, Linux 上での並列実行に対応した.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 本論文では, まず既存の Cerium Task Manager の実装について説明する.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 その後, 新たに実装した並列実行の機構について説明する.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 \section{Cerium Task Manager}\label{section:cerium}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 Cerium Task Manager は, Cell 用に開発されたゲームフレームワークであり,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 Rendering Engine を含む.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 Cerium Task Manager では, 並列処理を Task 単位で記述する.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 関数やサブルーチンを Task として扱い,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 Task には, input データ, output データ及び依存関係を設定する.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 Cerium Task Manager によってそれらの Task は管理され, 実行される.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 Cerium Task Manager は, PlayStation 3/Cell, Mac OS X 及び Linux 上で利用することができ,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 それぞれのプラットフォームで同じプログラムを動作させることができる.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 これにより, アーキテクチャに依存しないプログラムを記述することが可能である.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 Cerium Task Manager では, プログラムの様々なレベルでパイプラインが構成されるので,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 プログラムの性能向上が見込める (図\ref{fig:scheduler}) .
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 また, Task 自体は入力データから, 出力データを計算するだけなので非常に単純だが,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 その入出力データをダブルバッファリングとして切り替えたり,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 適切な並列度が得られるように徐々に生成するのは非常に煩雑となる.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 さらに, これらのデータ管理は, 並列実行を行うアーキテクチャに特化した処理が必要となる\cite{yutaka:2011b}.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 Cerium Task Manager を利用することで, このような処理を代わりに行ってくれるため,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 並列計算の実装に集中することができる.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 \begin{figure}[h]
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 \begin{center}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 \includegraphics[scale=0.4]{./pic/scheduler.pdf}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 \end{center}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 \caption{Scheduler}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 \label{fig:scheduler}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 \end{figure}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 \section{マルチコア上での並列実行の機構}\label{section:impl}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 PlayStation 3/Cell 上の場合, 各 SPE に Task が割り当てられ, 並列に実行される.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 今回新たに, Mac OS X, Linux 上でも並列に実行させることを可能にした.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 これは, PlayStation 3/Cell の Mailbox に対応させる形で,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 Synchronized Queue を用いて Mac OS X, Linux 側の Cerium Task Manager へ移植したものである.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 操作しているスレッドが常に1つになるよう, バイナリセマフォで管理されている.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 各スレッドは, input 用と output 用として Synchronized Queue を2つ持っており,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 管理スレッドからタスクを受けて並列に実行するようになっている.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 また, PlayStation 3/Cell と違い各 CPU で同じメモリ空間が利用できるため,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 DMA転送を用いていた箇所をポインタ渡しをするように修正し, 速度の向上を図った.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 % \subsection{Mailbox}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 % Mailbox は, Cell の機能の1つである.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 % Mailbox は, PPE と SPE の間を双方向で, 32 bit メッセージの受け渡しが可能であり,
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 % FIFO キュー構造になっている.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 \section{ベンチマーク}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 Word Count, Sort 及び Prime Counter の例題を用いて, 計測した.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 それぞれ入力として, 100MB のテキストファイルの単語数カウント, 10 万入力のソート, 100 万までの範囲の素数を全て数え上げるようになっている.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 比較対象として, PlayStation 3/Cell においても同様の例題を用いて計測している.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 どちらも, 最適化レベルは最大にしてある.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 表\ref{table:benchmark}に結果を示す.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 {\bf 実験環境}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 CentOS/Xeon
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 \begin{small}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 \begin{itemize}\small
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 \item OS : CentOS 6.0
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 \item CPU : Intel\textregistered Xeon\textregistered X5650 @2.67GHz * 2
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 \item Memory : 128GB
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 \item Compiler : GCC 4.4.4
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 \end{itemize}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 \end{small}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 PlayStation 3/Cell
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 \begin{small}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 \begin{itemize}\small
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 \item OS : Yellow Dog Linux 6.1
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 \item CPU : Cell Broadband Engine @ 3.2GHz
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 \item Memory : 256MB
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 \item Compiler : GCC 4.1.2
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 \end{itemize}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 \end{small}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 \begin{tiny}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 \begin{table}[h]
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 \caption{Benchmark}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 \label{table:benchmark}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 \small
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 \begin{tabular}[t]{c||r|r|r}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 \hline
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 & Word Count & Sort & Prime Counter\\
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 \hline\hline
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 1 CPU (Cell)& 2381 ms & 6244 ms & 2081 ms \\
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 \hline
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 6 CPU (Cell)& 1268 ms & 1111 ms & 604 ms\\
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 \hline
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 1 CPU (Xeon)& 354 ms & 846 ms & 266 ms\\
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 \hline
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 6 CPU (Xeon)& 70 ms & 163 ms & 50 ms\\
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 \hline
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 12 CPU (Xeon)& 48 ms & 127 ms & 36 ms\\
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 \hline
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 24 CPU (Xeon)& 40 ms & 100 ms & 31 ms\\
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 \hline
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 \end{tabular}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 \end{table}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 \end{tiny}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 % Word Count 354 / 70 = 5.0571
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 % Sort 846 / 163 = 5.1901
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 % Prime Counter 266 / 50 = 5.32
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 表\ref{table:benchmark}より, CentOS上で 6 CPU を利用した場合, 1 CPU を利用した場合と比較して
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 Word Count の例題で約 5.1 倍, Sort の例題で約 5.2 倍, Prime Counter の例題で, 約 5.3倍の速度向上が見られる.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 しかしながら, 24 CPU を利用した場合, 12 CPU を利用した場合と比較して速度は上がっているものの速度向上率が落ちている.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 これは並列化率が低いために性能を活かすことができず, 速度向上が頭打ちになっているとアムダールの法則\cite{amdahl}から考えられる.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 並列化率の向上は今後の課題である.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 % また, 図\ref{fig:multi_result}より, 台数効果が確認できる.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 \section{まとめ}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 本稿では, 既存の Cerium Task Manager の実装と新しい並列実行の機構について説明した.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 新しく実装した並列実行の機構を用いることによって, Mac OS X, Linux 上でのマルチプロセッサ環境に対応できる.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 今後の課題として, 並列化率を向上させ, プロセッサ数が増えた時の速度向上率を改善する.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 また, 現在の Cerium Task Manager は Task の種類が増え, Open CL\cite{opencl} に比べても記述が煩雑であるなどの欠点がある.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 これは Task の依存関係を, ユーザ側ではなくシステム側が記述するようにすることで解決できると考える.
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
169
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 \nocite{cell_abi}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 % \nocite{yutaka:2010a, cell_abi, cell_cpp, cell_sdk, libspe2, ydl, clay200912, fix200609}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 \bibliographystyle{junsrt}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 \bibliography{cerium.bib,book.bib}
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
174
c0689037215f first commit
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 \end{document}