Mercurial > hg > Papers > 2017 > ikkun-sigos
changeset 10:a7d96c2f588b
Update
author | one |
---|---|
date | Sat, 22 Apr 2017 16:51:58 +0900 |
parents | 8e5011d1947d |
children | 9920afa285ef |
files | paper/sigos.tex paper/src/par_goto.c |
diffstat | 2 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/sigos.tex Sat Apr 22 16:23:28 2017 +0900 +++ b/paper/sigos.tex Sat Apr 22 16:51:58 2017 +0900 @@ -71,6 +71,8 @@ % 和文概要 \begin{abstract} + 現代の OS では拡張性と信頼性を両立させることが要求されている。 + 信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。 Gears OS は継続を中心とした言語で記述されており、メタ計算をノーマルレベルと分けて記述することができる。並列処理はメタ計算によって記述されており、CbC自体には並列処理の機能はない。Gears OS のプログラムはCode Gear とData Gear の集まりであるinterfaceによって行われる。Gears OSでのスレッドはinterfaceの集合で出来ており、code gear data gearを接続するcontextというmeta data gear を持つ。 並行実行する場合は新しくcontextを生成し、それを時分割または、物理的なCPUに割り当てることによって実現される。 つまり、contextそのものがスレッドとなる。 Gears OSでの同期機構はdata gear を待ち合わせることによって行われる。例えば、GPU上で実行する場合は必要なdata gearをGPU内部に転送し、それらが揃った時点で並列実行される。data gear の待ち合わせはメモリ上のdata gearのmeta data gear に待ち合わせ用のキューを作ることによって行われる。キューにはGears OSのスレッドつまりcontext meta data gearが入る。 @@ -232,6 +234,7 @@ GPUへのデータ転送及びGPU側でのTaskの実行はTaskのMeta Code Gear で行われる。 % session 名変えたい +% __exit は そのcontext(thread)での終わりを示している(説明追加) \section{Task の設定の Meta Computation の問題} 現在の Gears OS では 並列実行する Task の設定を Code\ref{src:setting_task} のように行っている。 Code\ref{src:setting_task} では 実行する CodeGear、揃っていない Input Data Gear の数、Input/Output Data Gear への参照等の設定をノーマルレベルで記述している。
--- a/paper/src/par_goto.c Sat Apr 22 16:23:28 2017 +0900 +++ b/paper/src/par_goto.c Sat Apr 22 16:51:58 2017 +0900 @@ -1,3 +1,4 @@ -__code createTask(Integer *integer1, Integer *integer2, Integer *output) { - par goto add(integer1, integer2, output); +__code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) { + par goto add(integer1, integer2, output, __exit); + goto next(...); }