Mercurial > hg > Papers > 2018 > parusu-master
changeset 42:d6cf9ceea3d4
Add go section
author | Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 05 Feb 2018 04:04:16 +0900 |
parents | 5e604f9f9022 |
children | 1d8a79195742 |
files | paper/evaluation.tex paper/master_paper.pdf paper/reference.bib |
diffstat | 3 files changed, 33 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/evaluation.tex Mon Feb 05 03:11:35 2018 +0900 +++ b/paper/evaluation.tex Mon Feb 05 04:04:16 2018 +0900 @@ -149,7 +149,24 @@ また、 OpenMPはコードとデータを厳密に分離していないため、データの待ち合わせ処理をバリア等のアノテーションで記述する。 Gears OS では Input Data Gear が揃った Code Gear は並列に実行されるため、プログラム全体の並列度を高めることが出来る。 -また 並列処理のコードとデータの依存関係を``par goto'' で簡潔に記述することが出来る。 +また 並列処理のコードとデータの依存関係を par goto 文で簡潔に記述することが出来る。 \section{Go との比較} -Go言語\cite{go} +Go言語\cite{go} は Google社が開発しているプログラミング言語である。 +Go 言語によるTwice の実装例を\coderef{go}に示す。 + +\lstinputlisting[caption=Go 言語での Twice, label=code:go]{./src/go.go} + +Go は並列実行を ``go function(argv)'' のような構文で行う。 +この並列実行を goroutine と呼ぶ。 + +Go は goroutin 間のデータ送受信をチャネルというデータ構造で行う。 +チャネルによるデータの送受信は ``\textless-'' を使って行われる。 +例えばチャネルのデータ構造であるchannel に対して ``channel \textless- data'' とすると、 data を channel に送信を行う。 +``\textless- channel'' とすると、 channel から送信されたデータを1つ取り出す。 +channel にデータが送信されていない場合はchannel にデータが送信されるまで実行をブロックする。 +Go 言語はチャネルにより、データの送受信が簡潔に書ける。 +しかし、チャネルは複数の goroutine で参照できるためデータの送受信は送信元が推測しづらいという問題がある。 + +Gears OS では goroutine は par goto 文とほぼ同等に扱うことが出来る。 +また、Code Gear は par goto 文で書き出す Output Data Gear を指定して実行するため、Data Gear の書き出し元が推測しやすい。
--- a/paper/reference.bib Mon Feb 05 03:11:35 2018 +0900 +++ b/paper/reference.bib Mon Feb 05 04:04:16 2018 +0900 @@ -85,6 +85,19 @@ keywords = {operating system, run-time system, type safety, verification}, } +@article{go, +author={J. Meyerson}, +journal={IEEE Software}, +title={The Go Programming Language}, +year={2014}, +volume={31}, +number={5}, +pages={104-104}, +keywords={Andrew Gerrand;C;Go;Google;arrays;build times;compilers;garbage collection;golang;imports;interfaces;open source;readability;scalability;slices;standard library;syntax}, +doi={10.1109/MS.2014.127}, +ISSN={0740-7459}, +month={Sept},} + @article{moggi-monad, author = {Moggi, Eugenio}, title = {Notions of Computation and Monads}, @@ -199,3 +212,4 @@ school = "琉球大学 大学院理工学研究科 情報工学専攻", year = "2016" } +