Mercurial > hg > Papers > 2015 > yuhi-master
annotate paper/conclusion.tex @ 43:20d5ad074628
fix conclusion
author | Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 16 Feb 2015 18:51:39 +0900 |
parents | 9334c3e08e49 |
children | edf3a38f96d8 |
rev | line source |
---|---|
0 | 1 \chapter{結論} \label{chapter:conclusion} |
2 | |
3 \section{まとめ} | |
19
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
4 本研究室で開発している Cerium を用いて、 |
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
5 マルチプラットフォーム対応並列プログラミングフレームワークに関する研究を行った。 |
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
6 |
37
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
7 マルチコア CPU や GPU といったマルチプラットフォームなアーキテクチャ上でリソースを有効活用するには、 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
8 それぞれのプラットフォームに対して適した形でプログラムが並列に動作できるようチューニングする必要がある。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
9 しかしこれらのチューニングは非常に複雑になる。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
10 動作させたいプラットフォームに対応した、適切なチューニングを行えるフレームワークが必要である。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
11 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
12 Cerium では Scheduler がパイプラインの機構を持っており、Task はパイプラインに沿って実行されている。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
13 Scheduler が受信した Task は既に TaskManager が依存関係を解決しているため、実行順序は任意で良く、パイプラインによる実行が可能となっている。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
14 Cerium はプログラムの様々なレベルでパイプライン処理を行っており、 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
15 WordCount のようなシンプルな問題でも並列化することで性能向上が確認できた。 |
19
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
16 |
37
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
17 マルチコア CPU への対応として、 SynchronizedQueue を用いた機構を実装し、並列実行を可能にした。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
18 WordCount と Sort による測定の結果、高い並列度を維持出来ていることを確認した。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
19 また、より高い性能を持つ計算機で測定したところ、速度の向上を確認できた。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
20 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
21 OpenCL と CUDA を用いて GPGPU への対応を行った。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
22 WordCount による測定を行ったが、データ並列実行をサポートすることで飛躍的な性能を確認できた。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
23 SIMD 型であることやループ命令を苦手とするといった理由から、 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
24 GPU における演算はデータ並列による実行をサポートしなければ性能が出ない事がわかった。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
25 Cerium においてプログラマは Task を記述し、 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
26 Input データを用意した後はデータ並列用の API で Task を spawn することでデータ並列用の Task を生成する。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
27 TaskManager はプログラマが記述した単一の Task を複数生成し、受け取ったデータ(Input)に対しその Task を割り当てる。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
28 生成した複数の Task を並列実行する事でデータ並列実行を実現した。 |
19
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
29 また、GPU は SharedMemory でないため、入出力がネックになる場合が多い。 |
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
30 それらのオーバヘッドを吸収するために GPU 制御のコマンドはパイプライン形式で実行していくのが望ましい。 |
0 | 31 |
37
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
32 更に、 Blocked Read による並列処理向けのI/Oの実装を行った。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
33 I/O 専用の Thread を追加し、Task が割り込みが起きた際のオーバーヘッドを減らすことに成功した。 |
40 | 34 一般的な file open である mmap と read の測定も行い、BlockedRead を含めたそれぞれの読み込みに対して、 |
37
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
35 どのような状況でより性能を発揮できるのか考察を行った。 |
7c5bf9ec7eb3
conclusion.but should fix.
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
36 |
0 | 37 \section{今後の課題} |
40 | 38 Cerium による GPGPU に関して、さらなる性能向上が見込める。 |
39 今回のベンチマークで、 Cerium による GPGPU と OpenCL 単体による GPGPU で、 | |
40 Cerium の実行時間が OpenCL の1.01倍と、ほぼ同じ結果になった。 | |
41 Cerium は Task の入出力と処理の部分をパイプラインにより並列に実行している。 | |
42 本来であれば Cerium がパイプライン処理の分だけ並列度は高くなる。 | |
43 パイプラインが適切に機能していないか、別のオーバーヘッドの存在が考えられる。 | |
44 FFT 以外にも例題を作成し、オーバーヘッド部分の特定を行う必要がある。 | |
45 | |
46 更に、GPGPU の改善案として CPU と GPU の同時実行が考えられる。 | |
47 Cerium では Task を CPU と GPU の両方に振り分けることができる。 | |
48 Task を CPU で動かす場合と GPU で動かす場合では、 | |
49 プラットフォームの得意とする計算が異なる事からも実行速度に差が生じるのは自明である。 | |
50 CPU と GPU の両方の資源を活用して Task を実行することで、高い並列度が期待できる。 | |
51 しかし Task をどの程度どのプラットフォームに振り分ければ良いかというのはあまり自明でない。 | |
52 プラットフォームに対する Task の振り分けるは、Cerium が自動で Scheduling するのが望ましい。 | |
53 基本的には GPU の方がコア数が多いため、優先して Task を振ることになる。 | |
54 データの転送がオーバーヘッドとなる際に CPU 側に Task を振ることで並列度の向上が見込める。 | |
55 依存関係のある Task を CPU と GPU に分けて振ってしまうとデバイス間の転送が起こり、 | |
43 | 56 ロックが起きてしまうので注意する必要がある。 |
41 | 57 |
40 | 58 【メモ】 |
39 | 59 |
60 マルチコア CPU :特に無い? | |
61 | |
62 GPGPU : 同時実行の話をいれる?同時実行時のschedulingを課題にする? | |
63 | |
64 io : キャッシュの話。読み込みサイズが一定以上になるとキャッシュが無効になる。なんで?みたいな流れ | |
65 | |
40 | 66 新設計:入れるにしてもなにから書こう。CS、DSから? |
39 | 67 |
68 全体:Cerium を使用したアプリケションも何か欲しい |