Mercurial > hg > Papers > 2016 > kkb-master
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 |