view midterm/midterm.tex @ 3:0a1db96aef41

modify
author Daichi Toma <toma@cr.ie.u-ryukyu.ac.jp>
date Sat, 19 Nov 2011 03:05:11 +0900
parents 7ea29212ac38
children
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\usepackage[dvips]{graphicx}
\usepackage{picins}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}}琉球大学主催 工学部情報工学科 卒業研究発表会}
\rhead{}
\cfoot{}

\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
\setlength{\headheight}{0mm}
\setlength{\headsep}{5mm}
\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
\setlength{\textwidth}{181mm}
\setlength{\textheight}{261mm}
\setlength{\footskip}{0mm}
\pagestyle{empty}

\begin{document}
\title{Cerium Task Manager における マルチコア 上での並列実行機構の実装}
\author{085740J 當眞 大千 {}{} 指導教員 : 河野 真治}
\date{}
\maketitle
\thispagestyle{fancy}

\section{はじめに}
プロセッサメーカは, 消費電力, 発熱及びクロックの限界という観点から, 
マルチコア構成の路線を打ち出しており, 今後ますますマルチコアプロセッサが主流になると想像できる.

マルチコアプロセッサ上で, リソースを有効活用するためには, 並列プログラムを行う必要があるが, 
効率の良い並列プログラムを書くことは難しい.

そこで, 本研究室で作成した Cerium Task Manager\cite{gongo:2008a} をマルチコアプロセッサに対応させることで,
マルチコアプロセッサ上での Task 単位による並列プログラミングをサポートする.

今まで, Cerium Task Manager は, PlayStation 3/Cell\cite{cell} 上でのみ, 並列実行を可能にしていたが,
今回新たに Mac OS X, Linux 上での並列実行に対応した.

本論文では, まず既存の Cerium Task Manager の実装について説明する. 
その後, 新たに実装した並列実行の機構について説明する.

\section{Cerium Task Manager}\label{section:cerium}

Cerium Task Manager は, Cell 用に開発されたゲームフレームワークであり, 
Rendering Engine を含む.

Cerium Task Manager では, 並列処理を Task 単位で記述する.
関数やサブルーチンを Task として扱い,
Task には, input データ, output データ及び依存関係を設定する.
Cerium Task Manager によってそれらの Task は管理され, 実行される.

Cerium Task Manager は, PlayStation 3/Cell, Mac OS X 及び Linux 上で利用することができ,
それぞれのプラットフォームで同じプログラムを動作させることができる.
これにより, アーキテクチャに依存しないプログラムを記述することが可能である.

\subsection{Cerium Task Manager の特長}
Cerium Task Manager では, プログラムの様々なレベルでパイプラインが構成されるので,
プログラムの性能向上が見込める\cite{kaito:master}.

また, Task 自体は入力データから, 出力データを計算するだけなので非常に単純だが,
その入出力データをダブルバッファリングとして切り替えたり, 
適切な並列度が得られるように徐々に生成するのは非常に煩雑となる.
さらに, これらのデータ管理は, 並列実行を行うアーキテクチャに特化した処理が必要となる\cite{yutaka:2011b}.
Cerium Task Manager を利用することで, このような煩わしいことから解放され, 
並列計算の実装に集中することができる.


\section{新たに実装した並列実行の機構}\label{section:impl}

PlayStation 3/Cell 上の場合, 各 SPE に Task が割り当てられ, 並列に実行される.

今回新たに, Mac OS X, Linux 上でも並列に実行させることを可能にした.
これは, PlayStation 3/Cell の Mailbox に対応させる形で, 
Synchronized Queue を用いて Mac OS X, Linux 側の Cerium Task Manager の設計をし直したものである.

\subsection{Mailbox}
Mailbox は, Cell の機能の1つである.
Mailbox は, PPE と SPE の間を双方向で, 32 bit メッセージの受け渡しが可能であり,
FIFO キュー構造になっている.

\begin{figure}[h]
\begin{center}
\includegraphics[scale=0.4]{./pic/Mailbox.eps}
\end{center}
\caption{Mailbox}
\label{fig:mailbox}
\end{figure}

\subsection{Synchronized Queue}
Maiilbox に対応させる形で作成した, Linux 上で動作する同期キューである.
キューを操作しているスレッドが常に1つになるよう, バイナリセマフォで管理されている.
各スレッドは, input 用と output 用として Synchronized Queue を2つ持っており, 
管理スレッドからタスクを受けて並列に実行するようになっている.

\subsection{ベンチマーク}
0からnまでに含まれる素数の探索を行う例題を用いた.
表\ref{table:benchmark}に結果を示す.

{\bf 実験環境}
\begin{itemize}
\item OS : CentOS 6.0
\item CPU : Intel(R) Xeon(R) CPU X5650 @2.67GHz (仮想環境で 4 コアのみ使用)
\item Memory : 8GB
\end{itemize}

\begin{table}[h]
\begin{center}
\caption{ベンチマーク}
\label{table:benchmark}
\begin{tabular}[t]{l||l|l}
\hline
スレッド数 & $\displaystyle n =10^6$ & $\displaystyle n =10^7 $\\
\hline\hline
1 スレッド & 239 ms & 2641 ms\\
\hline
4 スレッド & 104 ms & 1010 ms\\
\hline
\end{tabular}
\end{center}
\end{table}

表\ref{table:benchmark}から, 台数効果が出ていることが確認できる.

\section{まとめ}
本稿では, 既存の Cerium Task Manager の実装と新しい並列実行の機構について説明した.
新しく実装した並列実行の機構を用いることによって, Mac OS X, Linux 上でのマルチプロセッサ環境に対応できる. 

\nocite{yutaka:2010a, cell_abi, cell_cpp, cell_sdk, libspe2, ydl, clay200912, fix200609}
\thispagestyle{fancy}

\nocite{yutaka:2010a}
\bibliographystyle{junsrt}
\bibliography{cerium,book}

\end{document}