Mercurial > hg > Papers > 2019 > mitsuki-master
changeset 24:63e8ec026778
update
author | mir3636 |
---|---|
date | Sun, 03 Feb 2019 16:04:10 +0900 |
parents | f3c8f355c05a |
children | 64a07484a5f3 |
files | paper/gearsOS.tex paper/master_paper.pdf |
diffstat | 2 files changed, 19 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/gearsOS.tex Sun Feb 03 03:56:52 2019 +0900 +++ b/paper/gearsOS.tex Sun Feb 03 16:04:10 2019 +0900 @@ -31,18 +31,29 @@ \label{fig:gearsos} \end{figure} -TaskManager は Task である Context の生成を行う(眠い) +TaskManager は Task である Context の生成を行う。 +実行する Task の Input Data Gear が揃っているなら TaskQueue へ put する。 +Worker は Task の取得を行い、Task を実行する。 +Task 実行後 Data Gear の書き出しを行い、再び Task の取得を行う。 +Data Gear の依存関係が解決されると Task Queue に Task が送り込まれる。 \section{Context} -Context は Task でもあり、Taskは通常のOSのスレッドに対応する。 -Task は実行する Code Gear と Data Gear をすべて持っている。 +Context は実行する Code Gear と Data Gear を全て持っている Meta Data Gear である。 +Context は通常の OS のスレッドに対応する。 +また Context は並列実行における Task の表現としても用いられる。 Context は、ソースコード \ref{contexth} のように定義されている。 -ソースコード \ref{contexth} 5、6行目で記述されているように Code Gear のリスト、Data Gear のリストを持っている。 -ソースコード \ref{contexth} 13〜30行目は並列実行用の Task として扱うための情報である。 +Context は、実行される Task への Code Gear や、 +ソースコード \ref{contexth} 5、6行目で記述されているように Code Gear のリスト、Data Gear のリスト、 +Data Gear を確保するためのメモリ空間を持っている。 Context が持つ Data Gear のメモリ空間は事前に確保され、 Data Gear のメモリ確保の際に heap の値をずらしメモリを割り当てる。 -Data Gear は構造体で定義されている。 +ソースコード \ref{contexth} 13〜30行目は並列実行用の Task として扱うための情報である。 +待ち合わせの Input Data Gear のカウンタ、Input/Output Data Gear が格納されている場所を示すインデックス、 +GPU での実行フラグを持っている。 + + +Gears OS では Data Gear は構造体で定義されている。 メタ計算では任意の Data Gear を一律で扱うため、全て union で定義されている。(ソースコード \ref{contexth} 33行目〜) \lstinputlisting[label=contexth, caption=Context]{./src/context.h} @@ -96,7 +107,7 @@ \section{TaskQueue} Gears OS における TaskQueue は Synchronized Queue で実現される。 -Worker の Queue はTaskManager を経由して Task を送信するスレッドと、 +Worker TaskQueue は TaskManager を経由して Task を送信するスレッドと、 Task を取得する Worker 自身のスレッドで扱われる。 Gears OS の TaskQueue はマルチスレッドでの操作を想定しているため、データの一貫性を保証する必要がある。 そのため、データの一貫性を並列実行時でも保証するために Compare and Swap(CAS) を利用して Queue の操作を行っている。 @@ -112,6 +123,6 @@ 生成されたスレッドはまず、Context を生成する。 Context をスレッド毎に生成することで、メモリ空間をスレッド毎に持てるため他のスレッドを止めることはない。 Context の生成後は Queue から Task を取得する。 -Task は Context であるため Context を入れ替え、Task を実行する。 +Task は Context で実現されているため Worker 自身の Context と Context である Task を入れ替え、Task を実行する。 Task の実行後に Data Gear の書き出しと依存関係の解決を行う。 その後、Context を Worker の Context に入れ替え、再び Task を取得する。