annotate paper/sigos.tex @ 12:818786ab5a5a

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