changeset 6:ae099fad4c1e

add source
author sugi
date Mon, 01 Apr 2013 21:47:04 +0900
parents 2a0cb8fdecfc
children 653cdc2f74e5
files alice.tex improvement.tex problem.tex sigos.tex source/LocalDataSegmentManager.java source/OutputDataSegment.java source/Sort.java
diffstat 7 files changed, 22 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/alice.tex	Mon Apr 01 21:23:04 2013 +0900
+++ b/alice.tex	Mon Apr 01 21:47:04 2013 +0900
@@ -1,5 +1,5 @@
 \section{分散ネットフレームワークAlice}
-Aliceは、本研究室で開発を行なっている分散管理フレームワークである。Cell用の並列フレームワークCerium\cite{kono09b} \cite{cerium-sourceforge}に似たタスク管理機構を持つ。Data Semgnetの通信ではLinda\cite{linda} を相互接続した分散フレームワークであるFedaradeLinda に似た構造をもつ。
+Alice\cite{kono11g}は、本研究室で開発を行なっている分散管理フレームワークである。Cell用の並列フレームワークCerium\cite{kono09b} \cite{cerium-sourceforge}に似たタスク管理機構を持つ。Data Semgnetの通信ではLinda\cite{linda} を相互接続した分散フレームワークであるFedaradeLinda\cite{kono05b}\cite{kono10d}に似た構造をもつ。
 
 まず、Aliceを使用するに必要なData Segment、Code Segmentについて説明を行う。
 \subsection{Data Segment API}
--- a/improvement.tex	Mon Apr 01 21:23:04 2013 +0900
+++ b/improvement.tex	Mon Apr 01 21:47:04 2013 +0900
@@ -11,7 +11,7 @@
 従って、Data Segmentの送信先がRemoteであるならばValue型に変換を行い、Localであるならば変換しないという具合に改善をすれば、LocalにおけるMessage Packのオーバーヘッドを減らすことができる。
 
 
-\subsection{SEDA Archtecture }
+\subsection{SEDA Architecture }
 Localにおいてはput や peek に沿ったCommand を作成するステージ(Code Segmentが実行されているスレッド)、受け取ったCommandを処理するステージ、Code SegmentにData Segmentをセットするステージの三段のパイプラインで構成されている。これを全て同一のステージにまとめ、Localの環境下においてSEDAを使用せずに処理を行うように変更する。
 \subsection{Data Segmentの再構成}
 Data Segmentの更新におけるオーバーヘッドを減らす方法としてCeriumでも良好な結果を得ているflipを提案する。
@@ -22,4 +22,4 @@
 \end{table}
 {\tt readbuf}がInput Data Segment、{\tt writebuf}がOutput Data Segmentである。
 Output がinput の書き換えならばswapを行い、2つの領域を入れ替えることで無駄なmemcopyを防ぐことができる。
-AliceにおいてもCeriumと同様にflipを実装することで、無駄なデータのコピーを防ぐ。
+AliceにおいてもCeriumと同様にflipを実装することで、無駄なデータのコピーを防ぐ。
\ No newline at end of file
--- a/problem.tex	Mon Apr 01 21:23:04 2013 +0900
+++ b/problem.tex	Mon Apr 01 21:47:04 2013 +0900
@@ -1,7 +1,7 @@
 \section{現状のAliceの問題点}
 Aliceを用いた例題を通して、様々な問題点が明らかになった。
 APIのシンタックス的問題、永続性の問題、実行速度の問題など解決すべき問題は多々ある。
-特に実行速度の問題では分散環境をテストする例題として作成されたRingの例題(トポロジーを円状に構成し、メッセージが1周する時間を計測する)ではシングルスレッドで実装されているFederated Lindaに実行速度で及ばない。また、並列環境をテストする例題として作成したbitonic sortの例題も期待した結果を得ることができなかった。そこで、実行速度の改善を行うために、オーバーヘッドになっている原因の洗い出しを行った。その結果以下のような原因が見つかっている。
+特に実行速度の問題では分散環境をテストする例題として作成されたRingの例題(トポロジーを円状に構成し、メッセージが1周する時間を計測する)ではシングルスレッドで実装されているFederated Lindaに実行速度で及ばない。また、並列環境をテストする例題として作成したbitonic sortの例題も期待した結果を得ることができなかった。そこで、実行速度の改善を行うために、オーバーヘッドの洗い出しを行った。その結果以下のような原因が見つかっている。
 
 {\bf HashMapの多用 } 
 AliceではData Segment Managerのマネージャーキーによる探索、Data Segmentのキーによる探索などHashMapを多用している。この探索を行う際に排他制御を行うためかかる時間が多少ではあるが、オーバーヘッドになっていると予想される。
--- a/sigos.tex	Mon Apr 01 21:23:04 2013 +0900
+++ b/sigos.tex	Mon Apr 01 21:47:04 2013 +0900
@@ -40,13 +40,13 @@
 
 % 和文概要
 \begin{abstract}
-Aliceは、データをDataSegment、タスクをCodeSegmentという単位に分割して記述する分散フレームワークである。Aliceを使用して水族館の例題を通して分散フレームワークとしての記述能力を確認した。一方で、bitonic sortなどの並列処理では、Data Segmentの更新のオーバーヘッドが大きいことがわかった。本論文ではこれを解決する手法としてData Segmentのflipを提案し、効果の測定を行った。
+Aliceは、データをData Segment、タスクをCode Segmentという単位に分割して記述する分散フレームワークである。Aliceを使用して水族館の例題を通して分散フレームワークとしての記述能力を確認した。一方で、bitonic sortなどの並列処理では、Data Segmentの更新のオーバーヘッドが大きいことがわかった。本論文ではこれを解決する手法としてData Segmentのflipを提案し、効果の測定を行った。
 
 \end{abstract}
 
 % 英文概要
 \begin{eabstract}
-Alice is an distributed programming frame work, which uses Data Segment and Code Segment as programming units.  We checked  Alice has an ability to write distributed program using aquarium example.
+Alice is an distributed programming framework, which uses Data Segment and Code Segment as programming units.  We checked  Alice has an ability to write distributed program using aquarium example.
 In bitonic sort example refined Data Segment update is slow. So We propose a new API ``flip'' to  solve the problem and show its variation.
 \end{eabstract}
 % 表題などの出力
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/LocalDataSegmentManager.java	Mon Apr 01 21:47:04 2013 +0900
@@ -0,0 +1,6 @@
+public class LocalDataSegmentManager extends DataSegmentManager {
+    public void putObject(String key, Object obj) {
+        DataSegmentKey dataSegmentKey = getDataSegmentKey(key);
+        Command cmd = new Command(CommandType.PUT, null, key, obj, 0, 0, null, null, reverseKey);
+        dataSegmentKey.runCommand(cmd);
+    }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/OutputDataSegment.java	Mon Apr 01 21:47:04 2013 +0900
@@ -0,0 +1,4 @@
+public class OutputDataSegment {
+    public void flip(Receiver receiver) {
+        DataSegment.getLocal().putObject(receiver.key, receiver.getObj());
+    }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/Sort.java	Mon Apr 01 21:47:04 2013 +0900
@@ -0,0 +1,6 @@
+
+
+
+public void flip(Receiver receiver) {
+    DataSegment.getLocal().putObject(receiver.key, receiver.getObj());
+}
\ No newline at end of file