# HG changeset patch # User ikkun # Date 1494906760 -32400 # Node ID 6f5ce3e82fbf15c3988901750157cbe8da979b19 # Parent e7780283d3eef3c258e25bb61b7676e53ae11e29 fix diff -r e7780283d3ee -r 6f5ce3e82fbf presen/s6/themes/blank.css --- a/presen/s6/themes/blank.css Tue May 16 09:53:12 2017 +0900 +++ b/presen/s6/themes/blank.css Tue May 16 12:52:40 2017 +0900 @@ -72,7 +72,6 @@ font-size: 160%; } li { - margin-top: 15px; margin-bottom: 15px; } p, diff -r e7780283d3ee -r 6f5ce3e82fbf presen/scripts/prettify.css --- a/presen/scripts/prettify.css Tue May 16 09:53:12 2017 +0900 +++ b/presen/scripts/prettify.css Tue May 16 12:52:40 2017 +0900 @@ -1,18 +1,14 @@ /* CSS from google html5slides(https://code.google.com/p/html5slides/) */ -code { - display: inline-block; -} - pre > code { - display: block; - font-family: 'Droid Sans Mono', 'Courier New', monospace; font-size: 20px; line-height: 28px; padding: 5px 10px; + letter-spacing: -1px; + margin-top: 40px; margin-bottom: 40px; diff -r e7780283d3ee -r 6f5ce3e82fbf presen/slide.html --- a/presen/slide.html Tue May 16 09:53:12 2017 +0900 +++ b/presen/slide.html Tue May 16 12:52:40 2017 +0900 @@ -4,7 +4,7 @@ Gears OS における並列処理 - + @@ -32,6 +32,7 @@ $('code').each(function(_, el) { if (!el.classList.contains('noprettyprint')) { el.classList.add('prettyprint'); + el.style.display = 'block'; } }); prettyPrint(); @@ -85,8 +86,8 @@
@@ -191,35 +192,44 @@
  • Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。
  • Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。
  • Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
  • -
  • -

    stub -# Gears OS の並列性

    -
  • -
  • Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。
  • +
  • stub
  • + + + +
    +
    + +

    Gears OS の並列性

    + +
    - message + message
    -

    Gears OS の構成

    +

    Gears OS の構成

    - message + message
    @@ -229,14 +239,14 @@

    Context

    - message + message
    @@ -251,7 +261,7 @@
    - message + message
    @@ -260,13 +270,13 @@

    Worker

    - message + message
    @@ -275,8 +285,8 @@

    GPGPU

    @@ -303,18 +313,18 @@
  • GPU へのデータ転送及びGPU側でのTaskの実行はTaskのMeta Code Gear で行われる。
  • - - -

    Task の設定におけるメタ計算の問題

    +

    Gears OSにおけるTask生成構文

    + +
        par goto add(integer1, integer2, output, __exit);
    +
    + + +
    +
    + +

    Task生成のメタレベルでの実装

    +
    __code createTask(TaskManager* taskManager, Context* task, Integer *integer1, Integer *integer2, Integer *output) {
    -    task->next = C_add; // set Code Gear                                                                                                                          
    -    task->idgCount = 2; // set Input Data Gear Counter                                                                                                            
    -    task->data[task->idg] = (union Data*)integer1; // set Input Data Gear reference                                                                               
    -    task->data[task->idg+1] = (union Data*)integer2;
    +    task->next = C_add; // set Code Gear
    +    task->idgCount = 2; // set Input Data Gear Counter
    +    task->data[task->idg] = (union Data*)integer1; // set Input Data Gear reference                                                                                   task->data[task->idg+1] = (union Data*)integer2;
         task->maxIdg = task->idg + 2;
    -    task->odg = task->maxIdg; // Output Data Gear index                                                                                                           
    -    task->data[task->odg] = (union Data*)output; // set Output Data Gear reference                                                                                
    +    task->odg = task->maxIdg; // Output Data Gear index
    +    task->data[task->odg] = (union Data*)output; // set Output Data Gear reference
         task->maxOdg = task->odg + 1;
         taskManager->next = C_createTask1;
    -    goto meta(context, taskManager->taskManager->TaskManager.spawn); // spawn task                                                                                
    +    goto meta(context, taskManager->taskManager->TaskManager.spawn); // spawn task
     }
     
    -// code gear                                                                                                                                                      
    +// code gear
     __code add(Integer *integer1, Integer *integer2, Integer *output) {
         ....
     }
    @@ -408,31 +432,13 @@
     
    -

    Task の設定におけるメタ計算の問題

    - -
    __code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) {
    -    par goto add(integer1, integer2, output, __exit);
    -    goto next(...);
    -}
    -
    - - -
    -
    -

    従来のシステムとの比較

    diff -r e7780283d3ee -r 6f5ce3e82fbf presen/slide.md --- a/presen/slide.md Tue May 16 09:53:12 2017 +0900 +++ b/presen/slide.md Tue May 16 12:52:40 2017 +0900 @@ -1,4 +1,4 @@ -title: Gears OS における並列処理 +title: Gears OS における並列処理 author: 東恩納 琢偉 profile:琉球大学工学部 lang: Japanese @@ -68,22 +68,26 @@ - Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。 - Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。 - Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。 -- stub +- stub によってMeta Code Gear から + # Gears OS の並列性 -- Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。 +- Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Output Data Gear の組を Task と呼ぶ。 - Code Gear は Task 以外とは依存関係がない - 依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。
    - message + message
    # Gears OS の構成 - Gears OS は以下の要素で構成される。 - - Context - TaskQueue - TaskManager - Worker + - Context + - TaskQueue + - TaskManager + - Worker
    message @@ -91,9 +95,9 @@ # Context -- Gears OS は Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。 -- Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。 -- Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、Code Gear の実行に必要な Input Data Gear のカウンタ等をもっている。 +- Context は接続可能な Code Gear、Data Gear のリスト等を持っている Meta Data Gear である +- Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある +- Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、実行に必要な Input Data Gear のカウンタ等をもっている
    @@ -110,17 +114,17 @@
    # Worker -- Worker は thread と実行する Task が入っている Queue を持っている。 -- Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。 -- Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。 -- Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。 +- Worker は thread と実行する Task が入っている Queue を持っている +- TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する +- Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される +- Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する
    - message + message
    # GPGPU -- もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと。 -- GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる。 +- もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと +- GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる - CPUに比べ複雑な計算ができない、GPU単体に直接命令を書き込むこともできないなど、問題点も存在する。 # CPUWoker @@ -134,18 +138,18 @@ - CUDA ライブラリの初期化を行う以外の動作はCPUWoker と全く同じとなる。 - GPU へのデータ転送及びGPU側でのTaskの実行はTaskのMeta Code Gear で行われる。 - -