# HG changeset patch # User Shohei KOKUBO # Date 1454416957 -32400 # Node ID e55fa2471718b1834d939f73f38d5919c21ce448 # Parent 5eccffd1cdd0654df3f76f43bb007700e78536a5 fix stylefile diff -r 5eccffd1cdd0 -r e55fa2471718 master_paper.sty --- a/master_paper.sty Tue Dec 22 18:35:03 2015 +0900 +++ b/master_paper.sty Tue Feb 02 21:42:37 2016 +0900 @@ -169,6 +169,27 @@ \if@restonecol\twocolumn\fi } +\newcommand\frontmatter{% + \cleardoublepage + %\@mainmatterfalse + \pagenumbering{roman} +} + +\newcommand\mainmatter{% + \cleardoublepage + % \@mainmattertrue + \pagenumbering{arabic} +} + +\newcommand\backmatter{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + % \@mainmatterfalse +} + %付録 \renewcommand{\appendix}{\par \setcounter{chapter}{0}% diff -r 5eccffd1cdd0 -r e55fa2471718 master_paper.tex --- a/master_paper.tex Tue Dec 22 18:35:03 2015 +0900 +++ b/master_paper.tex Tue Feb 02 21:42:37 2016 +0900 @@ -25,7 +25,7 @@ \end{minipage}} \markleftfoot{% 左下に挿入 \begin{minipage}{.8\textwidth} - マルチプラットフォーム対応並列プログラミングフレームワーク + Monad に基づくメタ計算を基本とする Gears OS の設計 \end{minipage}} \newcommand\figref[1]{図 \ref{fig:#1}} @@ -56,12 +56,11 @@ \usepackage{makeidx,multicol} \makeindex \begin{document} +\frontmatter \maketitle \newpage -%\input{judge.tex} - %要旨 \begin{abstract} \end{abstract} @@ -75,20 +74,91 @@ %表目次 \listoftables +\mainmatter %chapters \chapter{並列分散環境下におけるプログラミング} -\chapter{マルチプラットフォームフレームワーク} + +\chapter{並列プログラミングフレームワーク Cerium} +Cerium は PlayStation 3(PS3) に搭載された Cell Broadband Engine(Cell) 向けの Fine-Grain TaskManager として当研究室で設計・開発されたフレームワークである。 +本章では Cerium の実装について説明する。 + +\section{Cerium の概要} +Cerium は、TaskManager, SceneGraph, Rendering Engine の3つの要素から構成される。 +Cell 用のゲームフレームワークとして開発されたが、現在では Multi-Core CPU, GPU も計算資源として利用可能な汎用計算フレームワークとなっている。 + +\section{TaskManager} +TaskManager は、Task と呼ばれる分割されたプログラムを管理する。 +サブルーチンまたは関数が Task の単位となる。 +Task には依存関係が設定されており、TaskManager で依存関係が解決されると実行可能な状態になる。 +TaskManager が提供する API を表:\ref{table:TaskManager_api}に示す。 +\begin{table}[htpb] + \begin{center} + \small + \begin{tabular}[htpb]{|c|l|} \hline + create\_task & Task の生成 \\ \hline + allocate & 環境のアライメントに考慮した allocator \\ \hline + set\_inData & Task への入力データのアドレスを追加 \\ \hline + set\_outData & Task からのデータ出力先アドレスを追加 \\ \hline + set\_param & Task のパラメータ(32 bits) \\ \hline + wait\_for & Task の依存関係を設定 \\ \hline + set\_cpu & Task を実行する Device の設定 \\ \hline + spawn & Task を Queue に登録 \\ \hline + iterate & データ並列で実行する Task として Queue に登録 \\ \hline + \end{tabular} + \caption{TaskManager API} + \label{table:TaskManager_api} + \end{center} +\end{table} + +\section{Cerium における Task} +Task は TaskManager の API を利用して生成する。 +生成された Task には以下の要素を設定することができる。 + +\begin{itemize} +\item input data \\ + set\_inData を用いて設定する Task が実行する処理に必要なデータの入力元となるアドレス。 + 関数を呼び出す際の引数に相当する。 + 汎用ポインタ(void* 型) なので Task 側で適切なキャストを行う必要がある。 +\item output data \\ + set\_outData を用いて設定する Task が処理したデータの出力先となるアドレス。 + 関数の戻り値に相当する。 +\item parameter \\ + set\_param を用いて設定するデータの処理に必要な実数値(index 等)。 +\item cpu type \\ + set\_cpu を用いて設定する Task が実行される Device の組み合わせ。 + Cell, Multi-Core CPU, GPU またはこれらの組み合わせを指定することができる。 +\item dependency \\ + wait\_for を用いて設定する他の Task との依存関係。 + 依存関係が解決された Task は実行可能な状態となる。 +\end{itemize} + +TaskManager は ActiveTaskList と WaitTaskList + +\section{Task の Scheduling} + \chapter{CbC} -\chapter{Gears OS} -\chapter{Monad とメタ計算} -\chapter{Code Gear と Data Gear} -\chapter{} -\chapter{ベンチマーク} + +\chapter{GearsOS} +\section{GearsOS の構成} +\section{Monad とメタ計算} +\section{Code Gear と Data Gear} +\section{Allocator} +\section{List} +\section{Synchronized Queue} +\section{Red-Black Tree} + \chapter{比較} +\section{Cerium} +\section{従来の OS} + +\chapter{評価} +\section{Twice} + \chapter{結論} %謝辞 -\chapter{謝辞} +\addcontentsline{toc}{chapter}{謝辞} +\chapter*{謝辞} %参考文献 \nocite{*}