comparison 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
comparison
equal deleted inserted replaced
2:22d2226f1783 3:0fa000320b6a
23 \includegraphics[height=1zw,clip,keepaspectratio]{images/emblem-bitmap.eps} 23 \includegraphics[height=1zw,clip,keepaspectratio]{images/emblem-bitmap.eps}
24 琉球大学大学院学位論文(修士) 24 琉球大学大学院学位論文(修士)
25 \end{minipage}} 25 \end{minipage}}
26 \markleftfoot{% 左下に挿入 26 \markleftfoot{% 左下に挿入
27 \begin{minipage}{.8\textwidth} 27 \begin{minipage}{.8\textwidth}
28 Monad に基づくメタ計算を基本とする Gears OS の設計 28 Code Segment と Data Segment によって構成される Gears OS の設計
29 \end{minipage}} 29 \end{minipage}}
30 30
31 \newcommand\figref[1]{図 \ref{fig:#1}} 31 \newcommand\figref[1]{図 \ref{fig:#1}}
32 \newcommand\tabref[1]{表 \ref{tab:#1}} 32 \newcommand\tabref[1]{表 \ref{tab:#1}}
33 33
34 \lstset{% 34 \lstset{
35 language={Java}, 35 language=C,
36 basicstyle={\footnotesize},% 36 tabsize=2,
37 identifierstyle={\footnotesize},% 37 frame=single,
38 commentstyle={\footnotesize\itshape},% 38 basicstyle={\ttfamily\footnotesize},%
39 keywordstyle={\footnotesize\bfseries},% 39 identifierstyle={\footnotesize},%
40 ndkeywordstyle={\footnotesize},% 40 commentstyle={\footnotesize\itshape},%
41 stringstyle={\footnotesize\ttfamily}, 41 keywordstyle={\footnotesize\bfseries},%
42 frame={tb}, 42 ndkeywordstyle={\footnotesize},%
43 breaklines=true, 43 stringstyle={\footnotesize\ttfamily},
44 columns=[l]{fullflexible},% 44 breaklines=true,
45 numbers=left,% 45 captionpos=b,
46 xrightmargin=0zw,% 46 columns=[l]{fullflexible},%
47 xleftmargin=1zw,% 47 xrightmargin=0zw,%
48 numberstyle={\scriptsize},% 48 xleftmargin=1zw,%
49 stepnumber=1, 49 aboveskip=1zw,
50 numbersep=0.5zw,% 50 numberstyle={\scriptsize},%
51 lineskip=-0.5ex% 51 stepnumber=1,
52 numbersep=1zw,%
53 lineskip=-0.5ex%
52 } 54 }
53
54 55
55 %%% 索引のために以下の2行を追加 56 %%% 索引のために以下の2行を追加
56 \usepackage{makeidx,multicol} 57 \usepackage{makeidx,multicol}
57 \makeindex 58 \makeindex
58 \begin{document} 59 \begin{document}
60
61 %rome
59 \frontmatter 62 \frontmatter
60 63
61 \maketitle 64 \maketitle
62 \newpage 65 \newpage
63 66
72 \listoffigures 75 \listoffigures
73 76
74 %表目次 77 %表目次
75 \listoftables 78 \listoftables
76 79
80 %arabic
77 \mainmatter 81 \mainmatter
82
78 %chapters 83 %chapters
79 \chapter{並列分散環境下におけるプログラミング} 84 \chapter{並列分散環境下におけるプログラミング}
85 \input{cerium.tex}
86 \chapter{CbC}
87 \chapter{GearsOS}
88 Cerium と Alice の開発を通して得られた知見から並列分散処理には Code の分割だけではなく Data の分割も必要であることがわかった。
89 当研究室で開発している Code Segment を基本的な処理単位とするプログラミング言語 Continuation based C(CbC) を用いて Data Segment を定義し、Gears OS の設計と基本的な機能の実装を行なった。
80 90
81 \chapter{並列プログラミングフレームワーク Cerium} 91 本章では Gears OS の設計と実装した基本的な機能について説明する。
82 Cerium は PlayStation 3(PS3) に搭載された Cell Broadband Engine(Cell) 向けの Fine-Grain TaskManager として当研究室で設計・開発されたフレームワークである。 92 \section{Code Gear と Data Gear}
83 本章では Cerium の実装について説明する。 93 Gears OS ではプログラムの単位として Gear を用いる。
94 Gear は並列実行の単位、データの分割、Gear 間の接続等になる。
84 95
85 \section{Cerium の概要} 96 Code Gear はプログラムの処理そのものになる。
86 Cerium は、TaskManager, SceneGraph, Rendering Engine の3つの要素から構成される。 97 これは OpenCL/CUDA の kernel, Cerium の Task に相当する。
87 Cell 用のゲームフレームワークとして開発されたが、現在では Multi-Core CPU, GPU も計算資源として利用可能な汎用計算フレームワークとなっている。 98 Code Gear は任意の数の Data Gear を参照し、処理が完了すると 任意の数の Data Gear に書き込む。
99 Code Gear は接続された Data Gear 以外にアクセスできない。
88 100
89 \section{TaskManager}
90 TaskManager は、Task と呼ばれる分割されたプログラムを管理する。
91 サブルーチンまたは関数が Task の単位となる。
92 Task には依存関係が設定されており、TaskManager で依存関係が解決されると実行可能な状態になる。
93 TaskManager が提供する API を表:\ref{table:TaskManager_api}に示す。
94 \begin{table}[htpb]
95 \begin{center}
96 \small
97 \begin{tabular}[htpb]{|c|l|} \hline
98 create\_task & Task の生成 \\ \hline
99 allocate & 環境のアライメントに考慮した allocator \\ \hline
100 set\_inData & Task への入力データのアドレスを追加 \\ \hline
101 set\_outData & Task からのデータ出力先アドレスを追加 \\ \hline
102 set\_param & Task のパラメータ(32 bits) \\ \hline
103 wait\_for & Task の依存関係を設定 \\ \hline
104 set\_cpu & Task を実行する Device の設定 \\ \hline
105 spawn & Task を Queue に登録 \\ \hline
106 iterate & データ並列で実行する Task として Queue に登録 \\ \hline
107 \end{tabular}
108 \caption{TaskManager API}
109 \label{table:TaskManager_api}
110 \end{center}
111 \end{table}
112
113 \section{Cerium における Task}
114 Task は TaskManager の API を利用して生成する。
115 生成された Task には以下の要素を設定することができる。
116
117 \begin{itemize}
118 \item input data \\
119 set\_inData を用いて設定する Task が実行する処理に必要なデータの入力元となるアドレス。
120 関数を呼び出す際の引数に相当する。
121 汎用ポインタ(void* 型) なので Task 側で適切なキャストを行う必要がある。
122 \item output data \\
123 set\_outData を用いて設定する Task が処理したデータの出力先となるアドレス。
124 関数の戻り値に相当する。
125 \item parameter \\
126 set\_param を用いて設定するデータの処理に必要な実数値(index 等)。
127 \item cpu type \\
128 set\_cpu を用いて設定する Task が実行される Device の組み合わせ。
129 Cell, Multi-Core CPU, GPU またはこれらの組み合わせを指定することができる。
130 \item dependency \\
131 wait\_for を用いて設定する他の Task との依存関係。
132 依存関係が解決された Task は実行可能な状態となる。
133 \end{itemize}
134
135 TaskManager は ActiveTaskList と WaitTaskList
136
137 \section{Task の Scheduling}
138
139 \chapter{CbC}
140
141 \chapter{GearsOS}
142 \section{GearsOS の構成} 101 \section{GearsOS の構成}
143 \section{Monad とメタ計算} 102 Gears OS は
144 \section{Code Gear と Data Gear}
145 \section{Allocator} 103 \section{Allocator}
146 \section{List} 104 \section{List}
147 \section{Synchronized Queue} 105 \section{Synchronized Queue}
148 \section{Red-Black Tree} 106 \section{Red-Black Tree}
149 107