# HG changeset patch # User tobaru # Date 1508924804 -32400 # Node ID 6508682e0d517d1bcea5bfbf2b92f3870a89d49f # Parent 82e5501f21055f027da2d2b25fb3be2afe4e0fbf fix diff -r 82e5501f2105 -r 6508682e0d51 mid_thesis.aux --- a/mid_thesis.aux Tue Oct 24 12:14:59 2017 +0900 +++ b/mid_thesis.aux Wed Oct 25 18:46:44 2017 +0900 @@ -1,14 +1,19 @@ \relax +\@writefile{toc}{\contentsline {section}{\numberline {1}Gears OS}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {2}CbC}{1}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces goto による code gear 間の継続}}{1}} +\newlabel{fig:cs}{{1}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {3}Code Gear と Data Gear}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {4}Context}{1}} \citation{*} \bibstyle{junsrt} \bibdata{reference} \bibcite{kaito:2015}{1} \bibcite{gears}{2} \bibcite{llvm}{3} -\@writefile{toc}{\contentsline {section}{\numberline {1}CbC}{1}} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces goto による code gear 間の継続}}{1}} -\newlabel{fig:cs}{{1}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {2}Gears OS}{1}} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Gears OS の構成図}}{1}} -\newlabel{fig:gearsos}{{2}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {3}Raspberry Pi 上での実装}{1}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Gears OS の構成図}}{2}} +\newlabel{fig:gearsos}{{2}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {5}Raspberry Pi 上での実装}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {6}xv6}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {7}LLVM CrossCompile}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {8}clang のバージョンアップ}{2}} diff -r 82e5501f2105 -r 6508682e0d51 mid_thesis.dvi Binary file mid_thesis.dvi has changed diff -r 82e5501f2105 -r 6508682e0d51 mid_thesis.log --- a/mid_thesis.log Tue Oct 24 12:14:59 2017 +0900 +++ b/mid_thesis.log Wed Oct 25 18:46:44 2017 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 24 OCT 2017 11:42 +This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 25 OCT 2017 18:44 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -128,7 +128,14 @@ (/usr/local/texlive/2016/texmf-dist/tex/latex/url/url.sty \Urlmuskip=\muskip10 Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. -) (./dummy.tex) +) + +! LaTeX Error: File `dummy.tex' not found. + +Type X to quit or to proceed, +or enter new name. (Default extension: tex) + +Enter file name: LaTeX Warning: Unused global option(s): [9.5pt]. @@ -159,11 +166,11 @@ LaTeX Font Info: External font `cmex10' loaded for size (Font) <6> on input line 29. LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 33. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 32. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 33. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 32. -Underfull \hbox (badness 1735) in paragraph at lines 34--38 +Underfull \hbox (badness 1735) in paragraph at lines 41--45 []\OT1/cmr/m/n/10 Gears OS \JY1/mc/m/n/10 の実装には \OT1/cmr/m/n/10 LLVM/Clang \JY1/mc/m/n/10 上に実装した [] @@ -171,15 +178,9 @@ File: pic/codesegment.pdf Graphic file (type pdf) File: pic/gearsos.pdf Graphic file (type pdf) - (./mid_thesis.bbl -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 13. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 13. -) + File: pic/emblem-bitmap.pdf Graphic file (type pdf) - - + Package Fancyhdr Warning: \headheight is too small (0.0pt): Make it at least 20.37784pt. @@ -189,14 +190,19 @@ [1 -] (./mid_thesis.aux) ) +] (./mid_thesis.bbl +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 13. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 13. +) [2] (./mid_thesis.aux) ) Here is how much of TeX's memory you used: - 1222 strings out of 493693 - 15030 string characters out of 6149787 - 78544 words of memory out of 5000000 - 4798 multiletter control sequences out of 15000+600000 + 1194 strings out of 493693 + 14646 string characters out of 6149787 + 80544 words of memory out of 5000000 + 4772 multiletter control sequences out of 15000+600000 13256 words of font info for 52 fonts, out of 8000000 for 9000 929 hyphenation exceptions out of 8191 - 27i,15n,43p,444b,362s stack positions out of 5000i,500n,10000p,200000b,80000s + 27i,15n,43p,530b,367s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on mid_thesis.dvi (1 page, 5040 bytes). +Output written on mid_thesis.dvi (2 pages, 10392 bytes). diff -r 82e5501f2105 -r 6508682e0d51 mid_thesis.pdf Binary file mid_thesis.pdf has changed diff -r 82e5501f2105 -r 6508682e0d51 mid_thesis.tex --- a/mid_thesis.tex Tue Oct 24 12:14:59 2017 +0900 +++ b/mid_thesis.tex Wed Oct 25 18:46:44 2017 +0900 @@ -29,12 +29,19 @@ \maketitle \thispagestyle{fancy} +\section{Gears OS} +当研究室では、Code Segment と Data Segment によって構成される Gears OS の開発を行っている。Gears OS は、並列プログラミングフレームワークの Cerium と 分散フレームワークの Alice の開発を通して得られた知見を元に開発を進めている。 \\ + Cerium はオブジェクト指向言語である C++ を用いて開発した並列プログラミングフレームワークである。Cell、マルチコアCPU、GPU を用いた並列実行をサポートしている。並列処理の単位として Task を記述し、Task に他の Task との依存関係を設定する事で並列実行を実現するが、データは汎用ポインタで Task に渡されるため、データの依存関係を保証できない。データの正しさや依存関係を保証できていないので、並列処理は行えるが、信頼性が低い。その知見から、並列分散処理 には Code の分割だけではなく Data の分割も必要である事が分かった。\\ + Alice では処理の単位である、 Code Segment、データの単位である Data Segment を用いてプログラムを記述する。Code Segment は使用する Input Data Segment、Output Data Segment を指定することで処理とデータの依存関係を解決する。Gears OSでは、Gear という単位を用いてプログラムを Code Gear、Data Gear に細かく分割するが、これは Alice のCode Segment、Data Segment にそれぞれ対応する。\\ + Gears OS では 当研究室で開発している CbC を用いて Data Sement を定義し、実装を行っている。 +%当研究室で開発している Code Segment を処理単位とする プログラミング言語 CbC を用いて Data Segment を定義し、Gears OS の実装を行っている。 + \section{CbC} - Gears OS の実装には LLVM/Clang 上に実装した CbC(Continuation based C)を用いる。 -CbC は Code Segment を基本的な処理単位とする。C の関数とは異なり返り値を持たないが、Code Segment の宣言は C の関数の構文と同じように行い、型に \_\_code を用いる。 - CbC は for 文や while 文といったループ制御構文を持たないので、ループ処理は自分自身への再帰的な継続を行う事で実現する。 - 現在の Code Segment から次の Code Segment への移動は goto の後に Code Segment 名と引数を並べて記述する。この goto による処理の遷移を継続と呼ぶ。C と異なり、戻り値を持たない Code Segment ではスタックに値を積んで行く必要が無くスタックは変更されない。このようなスタックに値を積まない継続を軽量継続と呼ぶ。この軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようになる。 + Gears OS の実装には LLVM/Clang 上に実装した CbC(Continuation based C)を用いる。\\ +CbC は Code Segment を基本的な処理単位とする。C の関数とは異なり返り値を持たないが、Code Segment の宣言は C の関数の構文と同じように行い、型に \_\_code を用いる。\\ + CbC は for 文や while 文といったループ制御構文を持たないので、ループ処理は自分自身への再帰的な継続を行う事で実現する。\\ + 現在の Code Segment から次の Code Segment への移動は goto の後に Code Segment 名と引数を並べて記述する。この goto による処理の遷移を継続と呼ぶ。C と異なり、戻り値を持たない Code Segment ではスタックに値を積んで行く必要が無くスタックは変更されない。このようなスタックに値を積まない継続を軽量継続と呼ぶ。この軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようになる。\\ \begin{figure}[htpb] @@ -45,9 +52,10 @@ \label{fig:cs} \end{figure} -\section{Gears OS} -当研究室では、Code Segment と Data Segment によって構成される Gears OS の開発を行っている。Gears OS は、並列プログラミングフレームワークの Cerium と 分散フレームワークの Alice の開発を通して得られた知見を元に開発を進めている。 - その知見から、並列分散処理 には Code の分割だけではなく Data の分割も必要である事が分かった。当研究室で開発している Code Segment を処理単位とする プログラミング言語 CbC を用いて Data Segment を定義し、Gears OS の実装を行っている。 +\section{Code Gear と Data Gear} +Gears OS では、プログラムの単位として Gear を用いる。Gear は並列実行の単位、データの分割、Gear 間の接続等になる。 + Code Gear はプログラムの処理そのものであり、任意の数の Data Gear を参照し、処理が完了すると任意の数の Data Gear に書き込む。Code Gear は接続された Data Gear 以外にアクセスできない。Code Segment と同じように Code Gear から次の Code Gear への処理の移動は goto の後に Code Gear の名前と引数を指定する事で実現できる。 + Data Gear はデータそのものを表す。int や 文字列などの Primitive Data Type を持っている。Gear の特徴として処理やデータの構造が Code Gear、Data Gear に閉じている事にある。これにより、実行時間、メモリ使用量などを予測可能なものにすることができる。 \begin{figure}[htpb] \begin{center} @@ -57,9 +65,24 @@ \label{fig:gearsos} \end{figure} +\section{Context} + 接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear 等のためのメモリ空間を持っており、Context を通してアクセスすることができる。Context にはメインとなる Context と Worker 用の Context がある。Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉する事はできない。 \section{Raspberry Pi 上での実装} -本研究では、ARM で動くシングルボードコンピュータである Raspberry Pi 上で Gears OS を動かせるようになる事で、ハードウェア上でも信頼性があり、並列実行ができるプログラミングを を記述できるようになる事を目指している。 +本研究では、ARM で動くシングルボードコンピュータである Raspberry Pi 上で Gears OS を動かせるようになる事で、ハードウェア上でも信頼性があり、並列実行ができるプログラミングを を記述できるようになる事を目指している。\\ + +\section{xv6} + xv6とは、マサチューセッツ工科大の大学院生向け講義の教材として使うために、UNIX V6 という OS を ANSI-C に書き換え、x86に移植した OS である。 +xv6 を CbC に書き直す事で、Raspberry Pi で CbC を動かす。 + +\section{LLVM CrossCompile} +Raspberry Pi だとメモリが足りないため、LLVM をコンパイルする事ができない。OSX 上で CrossCimpile する事でこの問題を解決する。 +OSX 上でCrossCimpiler を行える arm-linux-gnueabihf をインストールし、そこに入っている arm-linux-gnueabihf-gcc を指定してコンパイルすることで arm のバイナリを出力することができる。 + +\section{clang のバージョンアップ} + CbC はバージョン 3.9 の clang を使用している。現在のバージョンの LLVM と clang を使用して、CbCをコンパイラできるように修正を加える必要がある。 + +