Mercurial > hg > Papers > 2015 > nozomi-sigos
annotate paper/sigos.tex @ 5:4a7fa91ef60a
not fix English Abstract
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 06 May 2015 05:23:37 +0900 |
parents | 683044bd29ed |
children | 1702e6278518 |
rev | line source |
---|---|
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
1 \documentclass[techrep, ,dvipdfmx]{ipsjpapers} |
2 | 2 \usepackage[dvipdfmx]{graphicx} |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
3 \usepackage[dvipdfmx]{color} |
0 | 4 \usepackage{url} |
5 \usepackage{listings} | |
6 \lstset{% | |
7 language={C++},%使用言語 | |
8 basicstyle={\small},%書体 | |
9 commentstyle={\small\itshape},%コメントの書体 | |
10 keywordstyle={\small\bfseries},%キーワードの書体 | |
11 %identifierstyle={\small},% | |
12 %ndkeywordstyle={\small},% | |
13 stringstyle={\small},%文字列の書体 | |
14 frame={trlb},%外枠 | |
15 breaklines=true,%改行 | |
16 columns=[l]{fullflexible},% | |
17 xrightmargin=0zw,% | |
18 xleftmargin=3zw,% | |
19 %numbers=none,%行番号の表示 | |
20 %numberstyle={\scriptsize},%行番号の書体 | |
21 %numbersep=1zw,% | |
22 %stepnumber=1, | |
23 lineskip=-0.5ex,% | |
24 captionpos=b,%キャプションの位置 | |
25 } | |
26 \renewcommand{\lstlistingname}{Code} | |
27 \input{dummy.tex} %% Font | |
28 | |
29 % ユーザが定義したマクロなど. | |
30 \makeatletter | |
31 | |
32 \begin{document} | |
33 | |
34 % 和文表題 | |
35 \title{分散フレームワークAliceの圧縮機能} | |
36 % 英文表題 | |
37 \etitle{} | |
38 | |
39 % 所属ラベルの定義 | |
40 \affilabel{1}{琉球大学工学部情報工学科\\Information Engineering, University of the Ryukyus.} | |
41 \affilabel{2}{琉球大学大学院理工学研究科情報工学専攻 \\Interdisciplinary Information Engineering, Graduate School of Engineering and Science, University of the Ryukyus.} | |
42 \affilabel{3}{琉球大学工学部情報工学科\\Information Engineering, University of the Ryukyus.} | |
43 | |
44 % 和文著者名 | |
45 \author{ | |
46 照屋 のぞみ\affiref{1}\and | |
47 杉本 優\affiref{2}\and | |
48 河野 真治\affiref{3} | |
49 } | |
50 | |
51 % 英文著者名 | |
52 \eauthor{ | |
53 Nozomi TERUYA\affiref{1}\and | |
54 Yu SUGIMOTO\affiref{2}\and | |
55 Shinji KONO\affiref{3} | |
56 } | |
57 | |
58 % 連絡先(投稿時に必要.製版用では無視される.) | |
59 \contact{照屋 のぞみ\\ | |
60 〒903-0213 沖縄県西原町千原1番地\\ | |
61 琉球大学工学部情報工学科\\ | |
62 TEL: (098)895-2221\qquad FAX: (098)895-8727\\ | |
63 email: kokubo@cr.ie.u-ryukyu.ac.jp} | |
64 | |
65 % 和文概要 | |
66 \begin{abstract} | |
67 当研究室ではデータをData Segment、タスクをCode Segmentという単位で分割して記述する手法を提唱しており、そのプロトタイプとして並列分散フレームワークAliceを開発している。 | |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
68 Aliceが分散プログラムを記述する能力を有することは確認された。しかし、Aliceで実用的なアプリケーションを作成するには、通信時にData Segmentの形式を選択できる機能が必要である。本研究では、Data Segmentの多態性を実現するため、Data SegmentをObject型、MessagePackを使ったByteArray型、圧縮されたByteArray型の3つの形式で表現できるメタ計算の設計と実装を行った。 |
0 | 69 |
70 | |
71 \end{abstract} | |
72 | |
73 % 英文概要 仮 | |
74 \begin{eabstract} | |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
75 Alice is a prototype framework for distributed programming, which uses Data Segment and Code Segment as programming units. We checked Alice has an ability to write distributed program by previous research. |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
76 In this paper, we add Alice computation of compress. HOGE |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
77 for DataSegment polymerism. |
0 | 78 \end{eabstract} |
79 | |
80 % 表題などの出力 | |
81 \maketitle | |
82 | |
83 % 本文はここから始まる | |
84 | |
85 \section{研究背景と目的} | |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
86 当研究室ではデータをData Segment、タスクをCodeSegmentという単位で分割して記述する並列分散フレームワークAliceの開発を行っている。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
87 Aliceでは分散環境の構築に必要な処理をMeta Computationとして提供することで、スケーラブルな分散プログラムを信頼性高く記述できる環境を実現している。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
88 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
89 先行研究にてAlice が分散プログラムを記述する能力を有することは確認された。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
90 だが、実用的な分散プログラムを作成するためには、受け取ったデータをそのまま転送したい場合や圧縮されたデータ形式で通信を行いたい場合がある。 |
0 | 91 |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
92 本研究では、 Aliceを用いて画面共有システムAliceVNCを実装するにあたり必要となった |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
93 flip機能と圧縮機能を Meta Computation として実装した。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
94 プログラムに Alice の制御を行うメタプログラムを記述することにより、 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
95 扱うデータの形式を元のコードを大きく変更することなく指定することができる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
96 そして、データの多態性を実現し、扱いたいデータの状態に合わせてDataSegmentManagerを切り替えることで、ノード間通信における自由度の向上を図った。 |
0 | 97 |
98 | |
99 \section{分散フレームワーク Alice の概要} | |
100 \subsection{Data SegmentとCode Segment} | |
101 AliceはデータをData Segment、(以下DS)タスクをとCode Segment(以下CS)という単位に分割してプログラミングを行う。 | |
102 DSはAliceが内部にもつデータベースによって管理されている。DSに対応する一意のkeyが設定されており、そのkeyを用いてデータベースを操作する。 | |
103 | |
104 CSは実行に必要なDSが揃うと実行されるという性質を持ち、入力されたDSに応じた結果が出力される。 | |
105 CSを実行するために必要な入力DSはInputDS、CSが計算を行った後に出力されるDSはOutput DSと呼ばれる。データの依存関係にないCSは並列実行が可能であるため、並列度を上げるためにはCSの処理内容を細かく分割して依存するデータを少なくするのが望ましい。 | |
106 | |
107 \subsection{Data Segment} | |
108 複数のスレッドから1つのデータに変更を行うためには、データの不整合を防ぐためのlockが必要になる。複数の関係のない要素を1つのデータオブジェクトで表現した場合、全ての操作でlockが必要になる。このlockがスケラビリティーを低下させる。つまりデータのサイズも並列計算には重要である。 | |
109 | |
110 Aliceはデータを細かく分割して記述する。その細かく分割されたデータをDSと呼ぶ。 | |
111 実際には特定のオブジェクトにマッピングされ、マッピングされたクラスを通してアクセスされる。 | |
112 | |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
113 |
0 | 114 \subsection{Data Segment Manager} |
115 DSは実際にはqueueに保存される。queueには対になるkeyが存在し、keyの数だけqueueが存在する。 | |
116 このkeyを指定してDSの保存、取得を行う。queueの集合体はデータベースとして捉えられる。このデータベースをAliceではDS Manager(以下DSM)と呼ぶ。DSMにはLocal DSMとRemote DSMが存在する。Local DSMは各ノード固有のデータベースである。Remote DSMは他のノードのLocal DSMのproxyであり、接続しているノードの数だけ存在する。(図\ref{fig:RemoteDSM})Remote DSMに対して書き込むと対応するノードのLocal DSMに書き込まれる。 | |
117 | |
118 \begin{figure}[htbp] | |
119 \begin{center} | |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
120 \includegraphics[width=70mm]{images/remote_datasegment.pdf} |
0 | 121 \end{center} |
122 \caption{Remote DSMは他のノードのLocal DSMのproxy } | |
123 \label{fig:RemoteDSM} | |
124 \end{figure} | |
125 | |
126 \subsection{Data Segment API} | |
127 以下のData Segment APIを用いてデータベースにアクセスする。 | |
128 putとupdateはDSを追加する際に、peekとtakeはDSを取得する際に使用する。 | |
129 | |
130 \begin{itemize} | |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
131 \item {\ttfamily void put(String managerKey, String key, \\ Object val)} |
0 | 132 \end{itemize} |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
133 DSをqueueに追加するためのAPIである。第一引数で指定したDSMの中の、第二引数に対応するqueueに対してDSを追加している。 |
0 | 134 \begin{itemize} |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
135 \item {\ttfamily void update(String managerKey, String key, \\ Object val)} |
0 | 136 \end{itemize} |
137 updateもqueueに追加するためのAPIである。putとの違いは、先頭のDSを削除してからDSを追加することである。そのためAPI実行前後でqueueの中にあるDSの個数は変わらない。 | |
138 | |
139 \begin{itemize} | |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
140 \item {\ttfamily void take(String managerKey, String key)} |
0 | 141 \end{itemize} |
142 takeはDSを読み込むためのAPIである。読み込まれたDSは削除される。要求したDSが存在しなければ、CSの待ち合わせ (Blocking)が起こる。putやupdateによりDSに更新があった場合、takeが直ちに実行される。 | |
143 | |
144 \begin{itemize} | |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
145 \item {\ttfamily void peek(String managerKey, String key)} |
0 | 146 \end{itemize} |
147 peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである。 | |
148 | |
149 | |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
150 DSの表現にはMessagePack for Javaを利用している。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
151 \begin{itemize} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
152 \item {\ttfamily DSは一般的なJavaのクラスオブジェクト} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
153 \item {\ttfamily MessagePackを用いて変換したbyte[]で表現されたバイナリオブジェクト} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
154 \end{itemize} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
155 の2種類があり、LocalDSMにputされた場合は一般的なJavaのクラスオブジェクトとしてenQueueされる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
156 RemoteDSMにputされた場合は通信時にbyteArrayに変換されたバイナリオブジェクトがenQueueされる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
157 |
0 | 158 \section{Code Segment} |
159 Alice上で実行されるタスクの単位がCSである。ユーザーはCSを組み合わせることでプログラミングを行う。CSをユーザーが記述する際に、内部で使用するDSの作成を記述する。 | |
160 | |
161 Input DS と Output DSはCSに用意されているAPIを用いて作成する。 | |
162 Input DSは、LocalかRemoteか、またkeyを指定する必要がある。CSは、記述したInput DSが全て揃うとThread poolに送られ、実行される。 | |
163 | |
164 Output DSもLocalかRemoteか、またkeyを指定する必要がある。 | |
165 Inputの場合はsetKeyを呼ぶ際、Outputの場合はput(またはupdate)の際にノードとkeyの指定を行っている。 | |
166 しかし、どの時点でノードとkeyの指定を行えばよいか、どのようなAPIを用意するべきかは、議論の余地がある。 | |
167 | |
168 \section{Code Segmentの記述方法} | |
169 CSをユーザーが記述する際にはCSを継承して記述する(ソースコード \ref{src:StartCodeSegment} ,\ref{src:CodeSegment})。 | |
170 継承することによりCode Segmentで使用するAPIを利用する事ができる。 | |
171 | |
172 \begin{table}[html] | |
173 \lstinputlisting[label=src:StartCodeSegment, caption=StartCodeSegmentの例]{source/StartCodeSegment.java} | |
174 \lstinputlisting[label=src:CodeSegment, caption=CodeSegmentの例]{source/TestCodeSegment.java} | |
175 \end{table} | |
176 | |
177 Alice には、Start CS (ソースコード \ref{src:StartCodeSegment})というC の main に相当するような最初に実行される CS がある。 | |
178 Start CSはどのDSにも依存しない。つまりInput DSを持たない。 | |
179 このCSをmainメソッド内でnewし、executeメソッドを呼ぶことで実行を開始させることができる。 | |
180 | |
181 ソースコード \ref{src:StartCodeSegment}は、5行目で次に実行させたいCS(ソースコード \ref{src:CodeSegment})を作成している。8行目でOutput DSMを通してLocal DSMに対してDSをputしている。 | |
182 Output DSMはCSの{\tt ods}というフィールドを用いてアクセスする。 | |
183 Output DSMは{\tt put}と{\tt update}を実行することができる。 | |
184 TestCodeSegmentはこの"cnt"というkeyに対して依存関係があり、8行目でupdateが行われるとTestCodeSegmentは実行される。 | |
185 | |
186 ソースコード\ref{src:CodeSegment}は、0から10までインクリメントする例題である。 | |
187 2行目で取得されたDSが格納される受け皿を作る。Input DSMがもつcreateメソッド使うことで作成できる。 | |
188 \begin{itemize} | |
189 \item {\ttfamily Receiver create(CommandType type)} | |
190 \end{itemize} | |
191 | |
192 引数にはCommandTypeが取られ、指定できるCommandTypeは{\tt PEEK}または{\tt TAKE}である。 | |
193 Input DSM はCSの{\tt ids}というフィールドを用いてアクセスする。 | |
194 | |
195 4行目から6行目はコンストラクタである。コンストラクタはオブジェクト指向のプログラミング言語で新たなオブジェクトを生成する際に呼び出されて内容の初期化を行う関数である。 | |
196 | |
197 TestCodeSegmentのコンストラクタが呼ばれた際には、 | |
198 \begin{enumerate} | |
199 \item TestCodeSegmentが持つフィールド変数Receiver input1の定義が行われる。 | |
200 \item 次にCSのコンストラクタが呼ばれ、CSが持つフィールド変数の定義と初期化が行われる。 | |
201 \item {\tt ids.create(CommandType.TAKE)}が行われ、input1の初期化が行われる。 | |
202 \item 最後にTestCodeSegmentのコンストラクタの5行目が実行される。 | |
203 \end{enumerate} | |
204 | |
205 5行目はInput DSMがもつsetKeyメソッドによりLocal DSMからDSを取得している。 | |
206 \begin{itemize} | |
207 \item \verb+void setKey(String managerKey, String key)+ | |
208 \end{itemize} | |
209 setKeyメソッドにより、どのDSMのあるkeyに対してpeekまたはtakeコマンドを実行させるかを指定できる。コマンドの結果がレスポンスとして届き次第CSは実行される。 | |
210 | |
211 runメソッドの内容としては10行目で取得されたDSをInteger型に変換してcountに代入している。 | |
212 16行目で もう一度TestCodeSegmentのCSが作られる。 | |
213 17行目でcountの値をインクリメントしてLocal DSMに値を追加する。 | |
214 13行目が終了条件であり、countの値が10になれば終了する。 | |
215 | |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
216 \subsection{ComputationとMeta Computation} |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
217 AliceのComputationは、keyで指し示されるDSを待ち合わせてCSを実行させると定義できる。 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
218 それに対して、AliceのMeta Computationは、AliceのComputationを支えているComputationのプログラミングと定義できる。 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
219 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
220 例えば、トポロジーを指定するAPIはMeta Computationである。Aliceが動作するためにはトポロジーを決める必要がある。つまりトポロジーの構成はAliceのComputationを支えているComputationとみなすことができる。トポロジーが決定するとそのトポロジーを構成する計算が行われる。トポロジーを指定するAPIはその構成の計算をプログラミングして変更するものである。 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
221 他にも再接続の動作を決めるAPIや切断時の動作を決めるAPIはMeta Computationである。 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
222 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
223 これらのMeta ComputationがAliceのComputationに影響することはない。プログラマーはCSを記述する際にトポロジーや切断、再接続という状況を予め想定した処理にする必要はない。プログラマーは目的の処理だけ記述する。そして、切断や再接続が起こった場合の処理を記述しMeta Computationで指定する。 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
224 このようにプログラムすることで、通常処理と例外処理を分離することができるため、シンプルなプログラムを記述できる。 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
225 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
226 |
0 | 227 \section{Meta Data Segment} |
228 DSは、アプリケーションに管理されているデータのことである。アプリケーションを構成するCSによってその値は変更される。 | |
229 それに対してMeta DSは、分散フレームワークAliceが管理しているデータである。Aliceを構成するCSによってのみ、その値は変更される。一部のMeta DSはアプリケーションに利用することができる。 | |
230 | |
231 例えば、"start"というkeyでは、ノードがStart CSを実行可能かどうかの状態を表す。他にも"\_CLIST"というkeyでは、利用可能なRemote DSの一覧が管理されている。ユーザーはこの一覧にある名前を指定することで、動的にDSの伝搬などを行うことができる。 | |
232 | |
233 また、Input DSに付随しているものもある。Input DSはCS内部でReceiverという入れ物に格納される。ユーザーは、Receiverに対して操作することでDSを入手できる。 | |
234 このReceiverには、fromというフィールドがあり、このDSを誰がputしたという情報が入っている。この情報をデータの伝搬する際に利用することで、DSをputしたノードに送り返すことを防ぐことができる。 | |
235 | |
236 Meta DSはDS同様にDS APIを用いて取得できる。 | |
237 | |
238 \section{Meta Code Segment} | |
239 CSはアプリケーションを動作させるために必要なタスクであり、ユーザーによって定義される。 | |
240 それに対してMeta CSはAliceを構成するタスクである。つまりMeta CSの群はAliceのComputationと言い換えることができる。一部のみユーザーが定義をすることができ、Aliceの挙動を変更することができる。 | |
241 | |
242 | |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
243 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
244 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
245 \section{AliceVNC} |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
246 当研究室では授業向け画面共有システムTreeVNCの開発を行っている。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
247 授業でVNCを使う場合、1つのコンピュータに多人数が同時につながるため、性能が大幅に落ちてしまう(図\ref{fig:vnc})。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
248 この問題をノード同士を接続させ、木構造を構成することで負荷分散を行い解決したものがTreeVNCである(図\ref{fig:treestructure})。 |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
249 |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
250 Aliceが実用的なアプリケーションを記述する能力をもつことを確認するために、TreeVNCをAliceを用いて実装したAliceVNCの作成を行った。 |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
251 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
252 \begin{figure}[htbp] |
2 | 253 \begin{center} |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
254 \includegraphics[width=60mm]{images/vnc.pdf} |
2 | 255 \end{center} |
256 \caption{VNCの構造 } | |
257 \label{fig:vnc} | |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
258 \end{figure} |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
259 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
260 \begin{figure}[htbp] |
2 | 261 \begin{center} |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
262 \includegraphics[height=50mm]{images/treestructure.pdf} |
2 | 263 \end{center} |
264 \caption{TreeVNC, AliceVNCの構造 } | |
265 \label{fig:treestructure} | |
1
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
266 \end{figure} |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
267 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
268 |
e13be99f69b6
can't view graphix correct place
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
269 |
5
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
270 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
271 \section{Aliceの新機能} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
272 実用的なアプリケーションであるTreeVNCをAlice上で実装することで、Aliceに必要な機能を洗い出した。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
273 \subsection{flip機能} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
274 Data Segment APIのput、updateを呼ぶとOutput Data Segmentが毎回新しく作成される。そして出力するデータのコピーが行われる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
275 しかし、AliceVNCのようにInput Data Segmentとして取得したデータをそのまま子ノードにOutput Data Segmentとして出力する場合、コピーを行なうのは無駄である。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
276 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
277 そこで、このコピーを無くしData Segmentの更新におけるオーバーヘッドを減らす方法としてflip機能の実装を行った。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
278 ソースコード\ref{src:exampleFlip}のようにInput Data SegmentであるReceiverをflipメソッドに引数として渡すことで、無駄なコピーを減らす。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
279 \begin{table}[html] |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
280 \lstinputlisting[label=src:flipAlice, caption=Aliceにおけるflip]{source/flip.java} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
281 \end{table} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
282 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
283 \begin{table}[html] |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
284 \lstinputlisting[label=src:exampleFlip,caption=flipの使用例]{source/Sort.java} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
285 \end{table} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
286 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
287 \subsection{Data Segmentの表現の追加(圧縮機能)} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
288 TreeVNCでは画面配信の際、データを圧縮してノード間通信を行っている。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
289 そのため、AliceVNCにも圧縮されたデータ形式を扱える機能が必要だと考えた。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
290 しかし、ただデータを圧縮する機構を追加すればいいわけではない。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
291 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
292 AliceVNCでは、ノードは受け取った画面データを描画すると同時に、子ノードのRemote DS Managerに送信する。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
293 ノードはDSを受信するとそれを一度解凍して画面を表示し、再圧縮して子ノードに送信する。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
294 しかし、受け取ったデータを自分の子ノードに対して送信する際には、解凍する必要はない。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
295 圧縮状態のまま子ノードに送信ができれば、解凍・再圧縮するオーバーヘッドを無くすことができる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
296 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
297 そこで、1つのData Segmentに対し複数の表現を持たせることで、必要に応じた形式でDSを扱うことを可能にした。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
298 DSを扱うReceiveData.classに、次の3種類の表現を同時に持つことができる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
299 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
300 \begin{enumerate} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
301 \item 一般的なJavaのクラスオブジェクト |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
302 \item MessagePack for Javaでシリアライズ化されたバイナリオブジェクト |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
303 \item 2を圧縮したバイナリオブジェクト |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
304 \end{enumerate} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
305 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
306 ソースコード\ref {src:ReceiveData}はReceiveData.classが持つ表現であり、{\tt val}に1. 一般的なJavaのクラスオブジェクト の表現でデータ本体が保存される。{\tt messagePack}には2. シリアライズ化されたバイナリオブジェクトが保存され、通常のRemoteDSMへの通信にこの表現が扱われる。そして、{\tt zMessagePack}には3. 圧縮されたバイナリオブジェクトが保存される。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
307 \begin{table}[html] |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
308 \lstinputlisting[label=src:ReceiveData, caption=データを表現するクラス]{source/ReceiveData.java} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
309 \end{table} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
310 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
311 また、圧縮状態を持つDSを扱うDSMとしてLocalとRemoteそれぞれにCompressed Data Segment Managerの追加した。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
312 put/updateでは、ソースコード\ref{src:zput}のように指定するDSM名の先頭に"compressed"をつけることでDSは自動で圧縮状態も持つようになる。さらに、take/peekもソースコード\ref{src:ztake}のようにsetKeyを実行する際にDSM名の先頭に"compressed"をつけることで圧縮形式でDSを受け取ることができる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
313 \begin{table}[html] |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
314 \lstinputlisting[label=src:zput, caption=圧縮DSのput]{source/compress_put.java} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
315 \end{table} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
316 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
317 \begin{table}[html] |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
318 \lstinputlisting[label=src:ztake,caption=圧縮DSのtake]{source/compress_take.java} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
319 \end{table} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
320 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
321 これによりユーザは指定するDSMを変えるだけで、他の計算部分を変えずに圧縮表現を持つDSを扱うことができる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
322 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
323 ノードは圧縮されたDSを受け取った後、そのまま子ノードにflipすれば圧縮状態のまま送信されるので、送信の際の再圧縮がなくなる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
324 また、画面表示の際は{\tt asClass()}(ソースコード\ref {src:asClass} )を使うことで適切な形式でデータを取得できる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
325 {\tt asClass()}はDSを目的の型にcastするメソッドであり、圧縮されていれば解凍してcastを行っている。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
326 これにより必要なDSを必要な時にだけ解凍できる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
327 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
328 \begin{table}[html] |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
329 \lstinputlisting[label=src:asClass, caption=asClassの処理]{source/asClass.java} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
330 \end{table} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
331 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
332 \subsection{パケットの再設計} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
333 2.4で述べたように、Remoteからputされたデータは必ずシリアライズ化されておりbyteArrayで表現される。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
334 しかし、putされたbyteArrayが全てシリアライズ化された状態であるとはいえない。Localからも一般的なJavaのクラスオブジェクトとしてbyteArrayが使用されている場合が存在する。例えば、AliceVNCで使われる画像データはbyteArrayで表現されているが、これはLocalからputされている。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
335 また、データの表現に圧縮形式を追加したことで、RemoteからでもputされたbyteArrayが圧縮されているのかそうでないのかが判断できなくなった。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
336 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
337 ここからわかることは、データを表現するにはデータ単体をやりとりするだけでは不十分ということである。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
338 そこで、データとデータの状態を表すヘッダをまとめて1つのオブジェクトとして扱うように変更した。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
339 Aliceの通信におけるヘッダにあたるCommandMessage.class(ソースコード\ref {src:CommandMessage}にシリアライズ状態表すフラグと、圧縮状態を表すフラグを追加した。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
340 これによってputされたDSMはフラグに応じた適切な形式でReceiveData.class内にDSを格納できる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
341 また、CommandMessage.classに圧縮前のデータサイズも追加したことで、適切な解凍が可能になった。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
342 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
343 \begin{table}[html] |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
344 \lstinputlisting[label=src:CommandMessage, caption=変更後のCommandMessage]{source/CommandMessage.java} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
345 \end{table} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
346 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
347 \begin{table}[htbp] |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
348 \caption{CommandMessageの変数名の説明} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
349 \label{tb:variable} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
350 \begin{center} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
351 \begin{tabular} {|l|l|} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
352 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
353 変数名&説明\\ |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
354 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
355 type&CommandType {\tt PEEK, PUT}などを表す\\ |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
356 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
357 seq&\shortstack{Data Segmentの待ち合わせを行っている\\Code Segmentを表すunique number }\\ |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
358 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
359 key&どのKeyに対して操作を行うか指定する\\ |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
360 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
361 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
362 quickFlag&SEDAを挟まずCommandを処理を行うかを示す\\ |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
363 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
364 serialized&データ本体のシリアライズ状態を示す\\ |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
365 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
366 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
367 compressed&データ本体のシリアライズ状態を示す\\ |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
368 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
369 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
370 dataSize&圧縮前のデータサイズを表す\\ |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
371 \hline |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
372 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
373 \end{tabular} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
374 \end{center} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
375 \end{table} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
376 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
377 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
378 \section{まとめ} |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
379 本研究では、まずはじめに並列分散フレームワークAliceの計算モデルと実装について説明を行い、Aliceにおけるプログラミング手法を述べた。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
380 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
381 次に、Aliceが実用的なアプリケーションを記述するために必要なMeta Computationとして、データの多態性を実現し、指定するDSMの切り替えで扱うデータ表現を変えるようにした。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
382 これにより、必要に応じた形式を扱うことができ、ユーザが記述するComputation部分を大きく変えずに自由度の高い通信を行うことが可能になった。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
383 同様の手法を用いれば、圧縮形式以外にも暗号形式・JSON形式などの複数のデータ表現をユーザに扱いやすい形で拡張することができる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
384 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
385 今後の課題としては、より実用的なアプリケーションを記述するために、データの永続性の確保等が挙げられる。 |
4a7fa91ef60a
not fix English Abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
386 現在のAliceはOn memoryであるためプロセスの終了とともにDS全て失われてしまう。この問題を解決するには、DSを他のKey Value Store等のシステムに保存し、永続性を確保する必要がある。 |
0 | 387 |
388 \nocite{*} | |
389 %\nocite{opencl} | |
390 %\nocite{opencl:ref} | |
391 %\nocite{opencl:applied} | |
392 %\nocite{yutaka:os} | |
393 %\bibliographystyle{ipsjunsrt} | |
394 %\bibliography{sigos} | |
395 %\bibliography{cerium,book} | |
396 | |
397 | |
398 \end{document} |