# HG changeset patch # User Yuhi TOMARI # Date 1424081737 -32400 # Node ID edf3a38f96d8bfff4b54c0ce8e024acf89f1c8f5 # Parent 20d5ad0746283c4b3408dca5eb8830fcaceaf8bc fix introduction diff -r 20d5ad074628 -r edf3a38f96d8 paper/chapter6.tex --- a/paper/chapter6.tex Mon Feb 16 18:51:39 2015 +0900 +++ b/paper/chapter6.tex Mon Feb 16 19:15:37 2015 +0900 @@ -86,7 +86,7 @@ Cerium において、 WordCount で必要な Task を全て生成してしまうと、 その Task のデータ構造自体がメモリを消費してしまう。 そこである程度の量の Task を起動し、それが終了してから(正確には終了する前に)次の Task を生成するようになっている。 -それらの機能を持った関数が6行目にあたる run\_tasks である。 +それらの機能を持った関数が6行目にあたる runTask である。 run\_tasks に wait\_for による ReadTask との待ち合わせの処理を入れれば良い。 BlockedRead の Task をいかに示す。 diff -r 20d5ad074628 -r edf3a38f96d8 paper/conclusion.tex --- a/paper/conclusion.tex Mon Feb 16 18:51:39 2015 +0900 +++ b/paper/conclusion.tex Mon Feb 16 19:15:37 2015 +0900 @@ -48,8 +48,9 @@ Task を CPU で動かす場合と GPU で動かす場合では、 プラットフォームの得意とする計算が異なる事からも実行速度に差が生じるのは自明である。 CPU と GPU の両方の資源を活用して Task を実行することで、高い並列度が期待できる。 + しかし Task をどの程度どのプラットフォームに振り分ければ良いかというのはあまり自明でない。 -プラットフォームに対する Task の振り分けるは、Cerium が自動で Scheduling するのが望ましい。 +プラットフォームに対する Task の振り分けは、Cerium が自動で Scheduling するのが望ましい。 基本的には GPU の方がコア数が多いため、優先して Task を振ることになる。 データの転送がオーバーヘッドとなる際に CPU 側に Task を振ることで並列度の向上が見込める。 依存関係のある Task を CPU と GPU に分けて振ってしまうとデバイス間の転送が起こり、 @@ -61,7 +62,7 @@ GPGPU : 同時実行の話をいれる?同時実行時のschedulingを課題にする? -io : キャッシュの話。読み込みサイズが一定以上になるとキャッシュが無効になる。なんで?みたいな流れ +io : キャッシュの話。読み込みサイズが一定以上になるとキャッシュが無効になってしまう 新設計:入れるにしてもなにから書こう。CS、DSから? diff -r 20d5ad074628 -r edf3a38f96d8 paper/introduciton.tex --- a/paper/introduciton.tex Mon Feb 16 18:51:39 2015 +0900 +++ b/paper/introduciton.tex Mon Feb 16 19:15:37 2015 +0900 @@ -24,11 +24,10 @@ Cerium の開発を行った。 Cerium では Task という単位で処理を記述し、それらは並列に実行される。 -プログラマは Task 間の依存関係を設定するだけでパイプラインが構成され、高い並列度を維持した実行が可能となる。 +プログラマが Task 間の依存関係を設定するとパイプラインが構成され、高い並列度で実行される。 プログラマが生成した Task は TaskManager に送信され、設定した依存関係の解決を行った後、 Scheduler に送信される。 -Scheduler がパイプラインの機構を持っており、Task はパイプラインに沿って実行されている。 +Scheduler がパイプラインの機構を持っており、Task はそのパイプラインに沿って実行される。 Scheduler が受信した Task は既に TaskManager が依存関係を解決しているため、実行順序は任意で良い。 -そのため、パイプラインによる実行が可能となっている。 計算機において並列処理を行うための設計様式として、1つの命令を同時に複数のデータに適用し、並列に処理する方式がある。 これをSIMD と呼ぶ。 @@ -37,8 +36,9 @@ Cerium においてプログラマは Task を記述し、Input データを用意した後はデータ並列用の API で Task を spawn するだけで データ並列実行することができる。 -TaskManager はプログラマが記述した単一の Task を複数生成し、受け取ったデータ(Input)に対しその Task を割り当てる。 -生成した Task を並列実行する事でデータ並列実行を実現した。 +TaskManager はプログラマが記述した単一の Task を複数生成し、 +受け取ったデータ(Input/Output)に対しその Task を割り当てる。 +生成した復数の Task を並列実行する事でデータ並列実行を実現した。 Sort 、Word Count 、FFT の例題を元に、 Cerium の持つ並列実行機構がマルチプラットフォームにおける並列プログラミングで有効に作用する事を示す。