Mercurial > hg > Papers > 2016 > kkb-master
diff master_paper.tex @ 3:0fa000320b6a
add images
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 05 Feb 2016 04:17:47 +0900 |
parents | 22d2226f1783 |
children | 52eec0b77576 |
line wrap: on
line diff
--- a/master_paper.tex Tue Feb 02 22:08:26 2016 +0900 +++ b/master_paper.tex Fri Feb 05 04:17:47 2016 +0900 @@ -25,37 +25,40 @@ \end{minipage}} \markleftfoot{% 左下に挿入 \begin{minipage}{.8\textwidth} - Monad に基づくメタ計算を基本とする Gears OS の設計 + Code Segment と Data Segment によって構成される Gears OS の設計 \end{minipage}} \newcommand\figref[1]{図 \ref{fig:#1}} \newcommand\tabref[1]{表 \ref{tab:#1}} -\lstset{% - language={Java}, - basicstyle={\footnotesize},% - identifierstyle={\footnotesize},% - commentstyle={\footnotesize\itshape},% - keywordstyle={\footnotesize\bfseries},% - ndkeywordstyle={\footnotesize},% - stringstyle={\footnotesize\ttfamily}, - frame={tb}, - breaklines=true, - columns=[l]{fullflexible},% - numbers=left,% - xrightmargin=0zw,% - xleftmargin=1zw,% - numberstyle={\scriptsize},% - stepnumber=1, - numbersep=0.5zw,% - lineskip=-0.5ex% +\lstset{ + language=C, + tabsize=2, + frame=single, + basicstyle={\ttfamily\footnotesize},% + identifierstyle={\footnotesize},% + commentstyle={\footnotesize\itshape},% + keywordstyle={\footnotesize\bfseries},% + ndkeywordstyle={\footnotesize},% + stringstyle={\footnotesize\ttfamily}, + breaklines=true, + captionpos=b, + columns=[l]{fullflexible},% + xrightmargin=0zw,% + xleftmargin=1zw,% + aboveskip=1zw, + numberstyle={\scriptsize},% + stepnumber=1, + numbersep=1zw,% + lineskip=-0.5ex% } - %%% 索引のために以下の2行を追加 \usepackage{makeidx,multicol} \makeindex \begin{document} + +%rome \frontmatter \maketitle @@ -74,74 +77,29 @@ %表目次 \listoftables +%arabic \mainmatter + %chapters \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} +\input{cerium.tex} +\chapter{CbC} +\chapter{GearsOS} +Cerium と Alice の開発を通して得られた知見から並列分散処理には Code の分割だけではなく Data の分割も必要であることがわかった。 +当研究室で開発している Code Segment を基本的な処理単位とするプログラミング言語 Continuation based C(CbC) を用いて Data Segment を定義し、Gears OS の設計と基本的な機能の実装を行なった。 -\section{Cerium における Task} -Task は TaskManager の API を利用して生成する。 -生成された Task には以下の要素を設定することができる。 +本章では Gears OS の設計と実装した基本的な機能について説明する。 +\section{Code Gear と Data Gear} +Gears OS ではプログラムの単位として Gear を用いる。 +Gear は並列実行の単位、データの分割、Gear 間の接続等になる。 -\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} +Code Gear はプログラムの処理そのものになる。 +これは OpenCL/CUDA の kernel, Cerium の Task に相当する。 +Code Gear は任意の数の Data Gear を参照し、処理が完了すると 任意の数の Data Gear に書き込む。 +Code Gear は接続された Data Gear 以外にアクセスできない。 -TaskManager は ActiveTaskList と WaitTaskList - -\section{Task の Scheduling} - -\chapter{CbC} - -\chapter{GearsOS} \section{GearsOS の構成} -\section{Monad とメタ計算} -\section{Code Gear と Data Gear} +Gears OS は \section{Allocator} \section{List} \section{Synchronized Queue}