# HG changeset patch # User Shohei KOKUBO # Date 1430918956 -32400 # Node ID 37c481e6d758197596426accad3c4ff4b146ba0e # Parent 92f7c78d8d6c186b547d3fe7b5c640c32e646447 edit diff -r 92f7c78d8d6c -r 37c481e6d758 paper/images/arch.bb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/arch.bb Wed May 06 22:29:16 2015 +0900 @@ -0,0 +1,5 @@ +%%Title: ./images/arch.pdf +%%Creator: extractbb 20140317 +%%BoundingBox: 0 0 750 427 +%%CreationDate: Wed May 6 22:22:42 2015 + diff -r 92f7c78d8d6c -r 37c481e6d758 paper/images/arch.pdf Binary file paper/images/arch.pdf has changed diff -r 92f7c78d8d6c -r 37c481e6d758 paper/images/arch.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/arch.xbb Wed May 06 22:29:16 2015 +0900 @@ -0,0 +1,8 @@ +%%Title: ./images/arch.pdf +%%Creator: extractbb 20140317 +%%BoundingBox: 0 0 750 427 +%%HiResBoundingBox: 0.000000 0.000000 750.000000 427.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed May 6 22:22:53 2015 + diff -r 92f7c78d8d6c -r 37c481e6d758 paper/images/synchronizedQueue.bb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/synchronizedQueue.bb Wed May 06 22:29:16 2015 +0900 @@ -0,0 +1,5 @@ +%%Title: ./images/synchronizedQueue.pdf +%%Creator: extractbb 20140317 +%%BoundingBox: 0 0 505 821 +%%CreationDate: Wed May 6 21:06:15 2015 + diff -r 92f7c78d8d6c -r 37c481e6d758 paper/images/synchronizedQueue.pdf Binary file paper/images/synchronizedQueue.pdf has changed diff -r 92f7c78d8d6c -r 37c481e6d758 paper/sigos.bib --- a/paper/sigos.bib Wed May 06 19:55:44 2015 +0900 +++ b/paper/sigos.bib Wed May 06 22:29:16 2015 +0900 @@ -77,3 +77,8 @@ howpublished = "{https://developer.nvidia.com/category/zone/cuda-zone/}" } +@misc{ + msg, + title = "MessagePack", + howpublished = "{http://msgpack.org/}" +} \ No newline at end of file diff -r 92f7c78d8d6c -r 37c481e6d758 paper/sigos.pdf Binary file paper/sigos.pdf has changed diff -r 92f7c78d8d6c -r 37c481e6d758 paper/sigos.tex --- a/paper/sigos.tex Wed May 06 19:55:44 2015 +0900 +++ b/paper/sigos.tex Wed May 06 22:29:16 2015 +0900 @@ -82,11 +82,10 @@ \begin{eabstract} We are developing parallel framework using a Code/Data Gear. Code/Data Gear are unit of processing and data. - We obtains meta function for parallel execution, based on a Monad in Functional Language. - Meta Code/Data Gear attached to Code/Data Gear with designed a Gears OS. - Meta Code Gear is executed after a Code Gear, which perform a Meta Computation. + Meta function for parallel execution based on a Monad in Functional Language is used in Geas OS. + A Meta Code/Data Gear attached to a Code/Data Gear as a Monad. Meta Computation performs Network Management, Memory Management and more. - We designs basic functions and evaluate it using CbC. + We show same implemetation of Gears OS using CbC(Continuation based C). \end{eabstract} % 表題などの出力 @@ -96,7 +95,7 @@ % Introduce \section{Cerium と Alice} -本研究室では並列プログラミングフレームワーク Cerium\cite{cerium} と分散ネットフレームワーク Alice\cite{alice} の開発を行なっていた。 +本研究室では並列プログラミングフレームワーク Cerium\cite{cerium} と分散ネットフレームワーク Alice\cite{alice} の開発を行なってきた。 Cerium と Alice を開発して得られた知見から Inherent Parallel, Distributed Open Computation をキーワードとして並列分散フレームワーク Gears OS の設計・開発を行う。 @@ -117,7 +116,7 @@ また、Data Segment にアクセスする API のシンタックスが特殊で Alice を用いてプログラムを作成するためには慣れが必要になる。 \section{Gears OS} -Cerium と Alice から得られた知見から並列実行には Code の単位だけでなく、Data の単位も必要であることがわかった。 +Cerium と Alice の例題から Code の単位だけでなく、Data の単位も必要であることがわかった。 Gears OS では Gear という単位を用いてプログラムを Code Gear, Data Gear に細かく分割する。 Code Gear は Input Data Gear から Output Data Gear を生成する。 Input と Output の関係から Code Gear 同士の依存関係を解決し、並列実行するフレームワークの開発を行う。 @@ -128,7 +127,7 @@ Cerium は初め Cell 向けのフレームワークとして設計されたという経緯からプロセッサ毎の実行機構が異なる。 Gears OS では Many Core CPU, GPU をはじめとする様々なプロセッサを同等な実行機構でサポートする。 -Gears OS は本研究室で開発している CbC(Continuation based C)\cite{cbc} で実装する。 +本研究室で開発している CbC(Continuation based C)\cite{cbc} を用いて、Gears OS を実装する。 CbC はプログラムを Code Segment, Data Segment という単位で記述する。 CbC において Code Segment 間の処理の移動は function call ではなく、goto を用いた軽量継続を用いる。 CbC のコンパイルには LLVM をバックエンドとしたコンパイラ\cite{cbc-llvm}を用いる。 @@ -145,6 +144,14 @@ Gears OS は Many Core CPU, GPU といった並列実行環境に合わせた設計・実装を行う。 また、接続する Gear を変更することでプログラムの振る舞いを変更することを可能にする柔軟性、Monad に基づくメタ計算による並行制御、Model Checking を用いた信頼性の確保を目的とする。 +Gears OS の構成は図\ref{fig:arch}の通りである。 + +\begin{figure}[!h] + \centering + \includegraphics[width=70mm]{images/arch.pdf} + \caption{Gears OS の構成} + \label{fig:arch} +\end{figure} % Theory \section{Monad とメタ計算} @@ -294,7 +301,17 @@ \section{Synchronized Queue} Gears OS では List を表現する Code/Data Gear に CAS(Compare and Swap) を行う Meta Code/Data Gear を接続することで Synchronized Queue を実現する。 -Synchronized Queue があれば並行制御を行うことが可能となり、Gears OS は Cerium と同等の機能を持つことになる。 +Gears OS の機能は状態遷移図とクラスダイアグラムを組み合わせた図で表現する。 +この図を GearBox と呼ぶことにする。 +図\ref{fig:sync}は Synchronized Queue の GearBox である。 +M:receiver/sender が CAS を行う Meta Code Gear となる。 + +\begin{figure}[!h] + \centering + \includegraphics[width=70mm]{images/synchronizedQueue.pdf} + \caption{Synchronized Queue} + \label{fig:sync} +\end{figure} \section{比較} Cerium/Alice, OpenCL/CUDA, 従来の OS との比較を以下に示す。 @@ -306,7 +323,7 @@ これは Alice の Data Segment と同等のものである。 Gears OS では Alice と同様に Code と Data の関係から依存関係を解決する。 -Alice は Data Segment を MessagePack を利用して通信することで分散実行を実現する。 +Alice は Data Segment を MessagePack\cite{msg} を利用して通信することで分散実行を実現する。 Gears OS 上での分散実行も Alice に沿って設計・実装する。 \paragraph*{OpenCL/CUDA}