Mercurial > hg > Papers > 2012 > sugi-prosym
changeset 19:def2005a5525
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 26 Nov 2012 19:24:10 +0900 |
parents | d3cd92ac4bd8 |
children | 60962f5ce2f7 |
files | Paper/Makefile Paper/alice.ind Paper/sugi-prosym.tex |
diffstat | 3 files changed, 16 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/Makefile Mon Nov 26 18:53:53 2012 +0900 +++ b/Paper/Makefile Mon Nov 26 19:24:10 2012 +0900 @@ -40,6 +40,8 @@ + + PAPER = alice.ind
--- a/Paper/alice.ind Mon Nov 26 18:53:53 2012 +0900 +++ b/Paper/alice.ind Mon Nov 26 19:24:10 2012 +0900 @@ -4,14 +4,15 @@ -abstract: -本研究室では分散プログラミングにおいて、データをData Segment、タスクをCode Segmentという単位に分割して記述する方法を提唱している。 -しかし、前述した方法をプログラマーが一から記述することは大変である。そこで、本研究室で分散ネットフレームワーク Alice を作成した。本論文では実際にAliceを用>いてCode Segment と Data Segment によるプログラミング手法の例を示す。 +データをData Segment、タスクをCode Segmentという単位に分割して記述する +分散ネットフレームワーク Alice を作成した。Alice によるプログラミング例を示すと共に、 +本研究室で従来使ってきた Federated Linda との比較も示し、Java による実装について考察する。 -abstract-e: -We suggest that programmers develop a distributed program with splitting data as Data Segment and processing as Code Segment. -But it is difficult for programmers to develop on that way from scratch. So We developed distributed network framework 'Alice'. -We show example how to programming with Code Segment and Data Segment on this paper. +We have developed an distributed programming frame Alice, which uses Data Segment and Code Segment as programming units. +We show programming examples and comparisons with our old framework, Federated Linda. We show some consideration about +our Java implementation. @@ -31,7 +32,7 @@ カプセル化されたデータをプロセスがやり取りするのは、DFD(Data Flow Diagram)の古典的な手法であり、それ自体は新しくはない。むしろ、メインフレーム上でのソフトウェア開発に良く使われてきた手法である。Alice では、それを再実装する。 -Alice は Code Segment と Data Segment を Java と Message Pack で実装したフレームワークである。トポロジーマネージャーを持ち、Bldae 上での +Alice は Code Segment と Data Segment を Java と Message Pack で実装したフレームワークである。トポロジーマネージャーを持ち、Blade 上での 分散プログラムの実験を容易に行うことができる。また、SEDA Architecture \cite{SEDA2001} を採用しており、マルチコア上でのスループットの向上を期待している。 本論文では、Code Segment と Data Segment の Alice のAPIと、その設計方針を示し、それによって実装された水族館プログラムを示す。また、これまでの Federated @@ -42,7 +43,7 @@ --Data Segment API Data Segment は数値や文字列などのデータを構造体的に保持するが、Data Segment の相互参照が問題になる。 -AliceではData Semgnetをデータベースとして扱い、Data Segment は必ずキーを持つ。つまり、Data Segment を Key Value Store として考えることができる。 +AliceではData Segmentをデータベースとして扱い、Data Segment は必ずキーを持つ。つまり、Data Segment を Key Value Store として考えることができる。 通常のデータベースでは隠れているが、Key 毎のキューがあり、Key 毎に順に実行される。key 毎の追加と取得は、Linda に準じた設計になっている。 Data Segmentを管理するのがData Segment Managerである。ノード毎に local DS manager と remote DS manager がある。local manager は、ノードに固有の @@ -143,7 +144,7 @@ \item {\ttfamily byte[]で表現されたバイナリ} \end{itemize} -DataSegment APIでは、このMessagePack for JavaのValueオブジェクトを用いてデータが表現されている。 +Data Segment APIでは、このMessagePack for JavaのValueオブジェクトを用いてデータが表現されている。 MessagePackはJavaのように静的に型付けされたオブジェクトではなく、自己記述なデータ形式である。MessagePack for JavaのValueオブジェクトはMessagePackのバイナリにシリアライズできる型のみで構成されたJavaのオブジェクトである。そのため、Valueも自己記述式のデータ形式になっている。 @@ -165,14 +166,14 @@ Input Data Segment で作成された Data segment は、remote か local かと、key を指定する必要がある。Input Data Segment がすべて揃わないと Code Segment は active にならない。 -Ouput Data Segment で作成された Data segment にも、remote か local かと、key を指定する必要がある。Input/Ouput が Code Segment 間の +Output Data Segment で作成された Data segment にも、remote か local かと、key を指定する必要がある。Input/Output が Code Segment 間の 依存関係を自動的に記述することになる。 \begin{table}[tb] \lstinputlisting[label=fig:SendWidth, caption=Data Segment の例]{source/SendWidth.java} \end{table} -{\tt ids,ods} により、Input/Ouput を選択して Data Segment を作成する。Output には put 時にキーを指定する(図\ref{fig:SendWidth})。Input は setKey を使ってキーを指定する。 +{\tt ids,ods} により、Input/Output を選択して Data Segment を作成する。Output には put 時にキーを指定する(図\ref{fig:SendWidth})。Input は setKey を使ってキーを指定する。 もちろん、{\tt cs.width} のようにアクセスするのは Java 的には正しくない書き方であり避けるべきである。{\tt SendWidth} は Code Segment であり、 Data Segment が揃った時に、 {\tt Runnable} のように実行される。{\tt SendWidth} 内部で setKey する方が Java 的には望ましい。 @@ -192,7 +193,7 @@ --Code Segmentの記述方法 -Code Segmentをユーザーが記述する際にはCodeSegmentを継承して記述する。(ソースコード \ref{fig:CodeSegment})そのCodeSegmentはInputDataSegmentManagerとOutputDataSegmentManagerを利用することができる。 +Code Segmentをユーザーが記述する際にはCode Segmentを継承して記述する。(ソースコード \ref{fig:CodeSegment})そのCodeSegmentはInputDataSegmentManagerとOutputDataSegmentManagerを利用することができる。 \begin{table}[tb] \lstinputlisting[label=fig:StartCodeSegment, caption=StartCodeSegmentの例]{source/StartCodeSegment.java} @@ -314,7 +315,7 @@ 今回の実装は、Java により Code Segment と Data Segment に必要な API を洗い出すためのものであった。この実装でもいくつかの問題が明らかになっている。 -{\bf API } Class を継承したり、Input Datasegment や Output Datasegment の作成に factory object を使うのは Java を使う際の技術的なものであり、Alice のAPI自体は Java に固有である必要はない。むしろ、Java の Object 指向な記述が全体を煩雑にしている部分がある。{\tt update} は、Data Segmentの競合的な更新に使われるべきだと思われる。 +{\bf API } Class を継承したり、Input Data segment や Output Data segment の作成に factory object を使うのは Java を使う際の技術的なものであり、Alice のAPI自体は Java に固有である必要はない。むしろ、Java の Object 指向な記述が全体を煩雑にしている部分がある。{\tt update} は、Data Segmentの競合的な更新に使われるべきだと思われる。 {\bf SEDA } Federated Linad に比べて、通信のレスポンスが遅い原因の一つはSEDA architectureのせいだと思われる。SEDA はスループット重視の実装であり、多段のパイプラインのせいでレスポンスは遅れてしまう。実際、スレッドプールを使用しないほうが、Ring の結果は良くなる(図\ref{fig:ringnothread})。
--- a/Paper/sugi-prosym.tex Mon Nov 26 18:53:53 2012 +0900 +++ b/Paper/sugi-prosym.tex Mon Nov 26 19:24:10 2012 +0900 @@ -62,7 +62,7 @@ \title[Code Segment と Data Segment によるプログラミング手法]% {Code Segment と Data Segment によるプログラミング手法 } % 英文表題 -\etitle{How to Programming with Code Segment and Data Segment} +\etitle{Programming with Code Segment and Data Segment} % 所属ラベルの定義 \affilabel{URYUKYU}{琉球大学\\University of the Ryukyu} % 和文著者名