annotate midterm.tex @ 1:a152319fb196

Edit midterm 10/23
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Fri, 23 Oct 2015 23:06:05 +0900
parents 5efcfe9a1b42
children 030fafbcb3ef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 \usepackage[dvips]{graphicx}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 \usepackage{picins}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 \usepackage{fancyhdr}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 %\pagestyle{fancy}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 \rhead{}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 \cfoot{}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 \setlength{\headheight}{0mm}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 \setlength{\headsep}{5mm}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 \setlength{\textwidth}{181mm}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 \setlength{\textheight}{261mm}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 \setlength{\footskip}{0mm}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 \pagestyle{empty}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 \begin{document}
1
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
21 \title{Monad に基づくメタ計算を基本とする Gears OS の設計}
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
22 \author{125716B 伊波 立樹{}{} 指導教員 : 河野 真治}
0
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 \date{}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 \maketitle
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 \thispagestyle{fancy}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
1
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
27 \section{先行研究}
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
28 本研究室では並列プログラミングフレームワーク Cerium\cite{cerium} と分散ネットフレームワーク Alice\cite{alice} の開発を行なってきた。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
29
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
30 CeriumではTaskと呼ばれる分割されたプログラムを依存関係に沿って実行することで並列実行を実現する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
31 依存関係はプログラマ自身が意識して記述する必要があり、
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
32 Taskの種類が増えると記述が複雑になり、 負担が大きくなる。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
33 Taskの依存関係がデータの依存関係を正しく保証しない場合があるという問題がある。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
34 また、Taskの取り扱うデータに型情報がないため、 汎用ポインタをキャストして利用するしかなく、型の検査が行われていない。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
35 Cerium は C++で実装されているが、オブジェクトと並列処理が直接対応していないのでオブジェクト指向で記述する利点が少ない。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
36
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
37 Alice では処理の単位である Code Segment、 データの単位である Data Segment を用いてプログラムを記述\cite{segment}する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
38 Code Segment は使用する Input Data Segment, Output Data Segment を指定することで処理とデータの依存関係を解決する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
39 Alice は Javaで実装されており、実効速度が遅いという問題がある。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
40 また、 Data SegmentをアクセスするAPIのシンタックスが特殊なため、Aliceを用いてプログラムを作成するには慣れが必要になる。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
41
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
42 \section{Gears OS}
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
43 Cerium と Alice を開発して得られた知見から、並列実行をサポートするだけでなく、信頼性も確保したGears OS の設計・開発を行う。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
44
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
45 Gears OS では Gear という単位を用いてプログラムを Code Gear, Data Gear に細かく分割する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
46 Code Gear は Input Data Gear から Output Data Gearを生成する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
47 Input と Outputの関係から Code Gear 同士の依存関係を解決し、並列実行を行う。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
48
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
49 Ceriumは初め、Cell\cite{cell} 向けのフレームワークとして設計されたという経緯からプロセッサ毎の実行形式が異なる。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
50 Gears OSでは Many Core CPU、GPUをはじめとする様々なプロセッサを同等な実行機構でサポートする。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
51
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
52 従来の OS が行う排他制御、メモリ管理、並列実行などは Meta Computation に相当する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
53 Meta Computationは本論のComputationを支えるComputationのことである。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
54 関数型言語では Meta Computation に Monad を用いる手法\cite{monad}がある。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
55 Gears OS では、Meta Code/Data Gear を Monadとして定義し、Meta Computationを実現する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
56
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
57 Gears OS は並列実行をサポートするだけでなく、 信頼性も確保する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
58 そのために Gears OSを用いて作成されたプログラムに対する Model Checkingを行う機能\cite{model-check}を提供する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
59 並列プログラムに Model Checking を行うことでそのプログラムがとり得る状態を列挙する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
60 これにより、並列実行時のデッドロックの検出などを行うことでプログラムの信頼性を確保する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
61 Model Checking の実現には Meta Code/Data Gearを用いる。
0
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
1
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
63 Gears OS は Many Core CPU, GPU といった並列実行環境に合わせた設計・実装を行う。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
64 また、接続する Gear を変更することでプログラムの振る舞いを変更することを可能にする柔軟性、Monad に基づくメタ計算による並行制御、Model Checking を用いた信頼性の確保を目的とする。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
65
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
66 \section{Code Gear と Data Gear}
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
67 Gears OS ではプログラムの実行単位として様々な Gear を使う。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
68 Gear が平行実行の単位、データ分割、Gear 間の接続などになる。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
69
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
70 Code Gear はプログラムの実行コードそのものであり、OpenCL\cite{opencl}/CUDA\cite{cuda}
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
71 の kernel に相当する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
72 Code Gear は複数の Input Data Gear を参照し、一つまたは複数の Output Data Gear に書
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
73 き込む。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
74 Code Gear は接続された Data Gear 以外には参照を行わない。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
75 Code Gear はfunction callではないので、呼び出し元に戻る概念はない。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
76 その代わりに、次に実行する Code Gear を指定する機能(軽量継続)を持つ。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
77
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
78 Data Gear には、int や文字列などの Primitive Data Type が入る。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
79 自分が持っていない Code Gear, Data Gear は名前で指し示す。
0
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
1
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
81 Gear の特徴の一つはその処理が Code Gear, Data Gear に閉じていることに
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
82 ある。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
83 これにより、Code Gear の実行時間、メモリ使用量を予測可能なものにする。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
84
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
85 Code Gear, Data Gear はポインタを直接には扱わない。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
86 これにより、Code と Data の分離性を上げて、ポインタ関連のセキュリティフ
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
87 ローを防止する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
88
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
89 Code Gear, Data Gear はそれぞれ関係を持っている。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
90 例えば、ある Code Gear の次に実行される Code Gear、全体で木構造を持つ
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
91 Data Gear などである。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
92 Gear の関連付けは Meta Gear を通して行う。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
93 Meta Gear は、いままでの OS におけるライブラリや内部のデータ構造に相当
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
94 する。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
95 なので、Meta Gear は Code Gear, Data Gear へのポインタを持っている。
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
96
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
97 \section{Context}
0
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99
1
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
100 \section{List}
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
101
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
102 \section{Synchronized Queue}
0
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 \begin{thebibliography}{9}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 \bibitem{1}
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
5efcfe9a1b42 Add template files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 \end{thebibliography}
1
a152319fb196 Edit midterm 10/23
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
109 \end{document}