Mercurial > hg > Papers > 2017 > mitsuki-thesis
changeset 27:f38236c1362e
update
author | mir3636 |
---|---|
date | Thu, 16 Feb 2017 11:27:20 +0900 |
parents | 8644cade9765 |
children | fecc23286565 |
files | final_main/main.pdf presen/fig/context.svg presen/slide.md |
diffstat | 3 files changed, 168 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/fig/context.svg Thu Feb 16 11:27:20 2017 +0900 @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 522.42188 273.86725" + height="273.86725" + width="522.42188" + xml:space="preserve" + version="1.1" + id="svg2"><metadata + id="metadata8"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs6"><clipPath + id="clipPath18" + clipPathUnits="userSpaceOnUse"><path + id="path20" + d="m 0,0 417.9375,0 0,219.0938 L 0,219.0938 0,0 Z" /></clipPath></defs><g + transform="matrix(1.25,0,0,-1.25,0,273.86725)" + id="g10"><g + id="g12" /><g + id="g14"><g + clip-path="url(#clipPath18)" + id="g16"><path + id="path22" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m -16.03125,226.9688 856.00005,0 0,-739 -856.00005,0 0,739 z" /><path + id="path24" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 1.96875,189.1752 180.00005,0 0,-187.20645 -180.00005,0 0,187.20645 z" /><g + transform="matrix(1,0,0,-1,-16.03125,226.9688)" + id="g26"><path + id="path28" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 18,37.79359 180,0 L 198,225 18,225 18,37.79359 Z" /></g><g + transform="matrix(1,0,0,-1,91.96875,95.57195)" + id="g30"><text + id="text32" + style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-85,-67.79199)"><tspan + id="tspan34" + y="0" + x="0 8.592 17.488001 26.384001 40.032001 44.48 56.032001 65.216003 74.704002 83.295998 87.744003">enum Code {</tspan></text> +</g><g + transform="matrix(1,0,0,-1,91.96875,95.57195)" + id="g36"><text + id="text38" + style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-85,-49.34399)"><tspan + id="tspan40" + y="0" + x="0">…</tspan></text> +</g><g + transform="matrix(1,0,0,-1,91.96875,95.57195)" + id="g42"><text + id="text44" + style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-85,-30.896)"><tspan + id="tspan46" + y="0" + x="0">…</tspan></text> +</g><g + transform="matrix(1,0,0,-1,91.96875,95.57195)" + id="g48"><text + id="text50" + style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-85,-12.448)"><tspan + id="tspan52" + y="0" + x="0">}</tspan></text> +</g><g + transform="matrix(1,0,0,-1,91.96875,95.57195)" + id="g54"><text + id="text56" + style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-85,24)"><tspan + id="tspan58" + y="0" + x="0 8.8959999 17.792 21.344 30.528 39.424 43.872002 55.136002 63.728001 68.767998 77.360001 81.807999">union Data {</tspan></text> +</g><g + transform="matrix(1,0,0,-1,91.96875,95.57195)" + id="g60"><text + id="text62" + style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-85,42.448)"><tspan + id="tspan64" + y="0" + x="0">…</tspan></text> +</g><g + transform="matrix(1,0,0,-1,91.96875,95.57195)" + id="g66"><text + id="text68" + style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-85,60.896)"><tspan + id="tspan70" + y="0" + x="0">…</tspan></text> +</g><g + transform="matrix(1,0,0,-1,91.96875,95.57195)" + id="g72"><text + id="text74" + style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-85,79.34399)"><tspan + id="tspan76" + y="0" + x="0">}</tspan></text> +</g><g + transform="matrix(1,0,0,-1,90.1169,203.572)" + id="g78"><text + id="text80" + style="font-variant:normal;font-weight:normal;font-size:15px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-26.5275,5.290001)"><tspan + id="tspan82" + y="0" + x="0 10.83 19.440001 27.780001 32.505001 40.560001 48.330002">Context</tspan></text> +</g><path + id="path84" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 271.9688,118.9688 144,0 0,-54.00005 -144,0 0,54.00005 z" /><g + transform="matrix(1,0,0,-1,-16.03125,226.9688)" + id="g86"><path + id="path88" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 288,108 144,0 0,54 -144,0 0,-54 z" /></g><g + transform="matrix(1,0,0,-1,343.9688,91.96875)" + id="g90"><text + id="text92" + style="font-variant:normal;font-weight:normal;font-size:15px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="translate(-36.68701,6)"><tspan + id="tspan94" + y="0" + x="0 10.833 19.176001 27.518999 35.862 40.035 51.708 60.050999 68.393997">Code Gear</tspan></text> +</g><g + transform="matrix(1,0,0,-1,-16.03125,226.9688)" + id="g96"><path + id="path98" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="M 288,135 206.8562,94.45992" /></g><path + id="path100" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 183.6684,136.0843 5.8158,-6.2592 2.6816,5.3674 -8.4974,0.8918 z" /><g + transform="matrix(1,0,0,-1,-16.03125,226.9688)" + id="g102"><path + id="path104" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 199.6997,90.88446 5.8157,6.25916 2.6816,-5.3674 -8.4973,-0.89176 z" /></g></g></g></g></svg> \ No newline at end of file
--- a/presen/slide.md Thu Feb 16 09:19:18 2017 +0900 +++ b/presen/slide.md Thu Feb 16 11:27:20 2017 +0900 @@ -5,10 +5,10 @@ code-engine: coderay # メタ計算の重要性 -- プログラムを記述する際、通常の処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算を Meta Computation と呼ぶ。 -- Meta Computation はノーマルレベルの計算から切り離して記述したい。 +- プログラムを記述する際、ノーマルな処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。 +- メタ計算はノーマルな計算から切り離して記述したい。 - そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。 -- そこで当研究室では Meta Computation を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。 +- そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。 # Code Gear と Data Gear - Code Gear とはプログラムの処理の単位である。 @@ -34,14 +34,21 @@ # Gears OS - Gears OS は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。 - 並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。 -- またGears OS では Meta Computation を Meta Code Gear、Meta Data Gear で表現する。 -- Meta Code Gear は通常の Code Gear の直後に遷移され、Meta Computation を実行する。 -- Meta Code Gear で OS の 機能であるメモリ管理やスレッド管理を行う。 +- またGears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。 +- Meta Code Gear はノーマルの Code Gear の直後に遷移され、メタ計算を実行する。 +- Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。 + +# CbC による Gears OS 記述の問題点 +- Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 +- 本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 +- そのためのプロトタイプとして perl スクリプトを作成した。 # Context - Gears OS には Context と呼ばれる接続可能な Code/Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。 - Gears OSは必要なCode/DataGearに参照したい場合、このContext を通す必要がある。 +<img src="./fig/context.svg" alt="message" width="800" > + # Gearef、GearImpl - Context には Allocation で生成した Data Gear へのポインタが格納されている。 - Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すためコードが煩雑になってしまう。 @@ -66,8 +73,8 @@ # stub Code Gear - Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。 -- しかし、Context を直接扱うのはセキュリティ上好ましくない。 -- そこで Context から必要なデータを取り出して Code Gear に接続する stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。 +- しかし、メタであるContext をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。 +- そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。 ```stub __code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { @@ -104,8 +111,8 @@ ``` # Context、stub Code Gear の自動生成 -- Gears OS では通常の計算の他に Context や stub などの meta computation を記述する必要がある。 -- 現在の CbC で Gears OS を記述すると、この meta computation の記述も行わなくてはならず、これには多くの労力を要する。 +- Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。 +- 現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。 - この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。 # stub Code Gear の生成 @@ -126,5 +133,5 @@ # 今後の課題 - 本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。 - これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。 -- 今後の課題は Code Gear から meta computation を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 -- また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることも優先する。 +- 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 +- また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。