annotate paper/conclusion.tex @ 44:edf3a38f96d8

fix introduction
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Mon, 16 Feb 2015 19:15:37 +0900
parents 20d5ad074628
children 83d4c75a334a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \chapter{結論} \label{chapter:conclusion}
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
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
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 \section{今後の課題}
40
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
38 Cerium による GPGPU に関して、さらなる性能向上が見込める。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
39 今回のベンチマークで、 Cerium による GPGPU と OpenCL 単体による GPGPU で、
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
40 Cerium の実行時間が OpenCL の1.01倍と、ほぼ同じ結果になった。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
41 Cerium は Task の入出力と処理の部分をパイプラインにより並列に実行している。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
42 本来であれば Cerium がパイプライン処理の分だけ並列度は高くなる。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
43 パイプラインが適切に機能していないか、別のオーバーヘッドの存在が考えられる。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
44 FFT 以外にも例題を作成し、オーバーヘッド部分の特定を行う必要がある。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
45
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
46 更に、GPGPU の改善案として CPU と GPU の同時実行が考えられる。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
47 Cerium では Task を CPU と GPU の両方に振り分けることができる。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
48 Task を CPU で動かす場合と GPU で動かす場合では、
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
49 プラットフォームの得意とする計算が異なる事からも実行速度に差が生じるのは自明である。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
50 CPU と GPU の両方の資源を活用して Task を実行することで、高い並列度が期待できる。
44
edf3a38f96d8 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
51
40
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
52 しかし Task をどの程度どのプラットフォームに振り分ければ良いかというのはあまり自明でない。
44
edf3a38f96d8 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
53 プラットフォームに対する Task の振り分けは、Cerium が自動で Scheduling するのが望ましい。
40
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
54 基本的には GPU の方がコア数が多いため、優先して Task を振ることになる。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
55 データの転送がオーバーヘッドとなる際に CPU 側に Task を振ることで並列度の向上が見込める。
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
56 依存関係のある Task を CPU と GPU に分けて振ってしまうとデバイス間の転送が起こり、
43
20d5ad074628 fix conclusion
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 41
diff changeset
57 ロックが起きてしまうので注意する必要がある。
41
9334c3e08e49 future issue,io
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 40
diff changeset
58
40
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
59 【メモ】
39
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
60
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
61 マルチコア CPU :特に無い?
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
62
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
63 GPGPU : 同時実行の話をいれる?同時実行時のschedulingを課題にする?
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
64
44
edf3a38f96d8 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
65 io : キャッシュの話。読み込みサイズが一定以上になるとキャッシュが無効になってしまう
39
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
66
40
6e74a202e975 future issue
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
67 新設計:入れるにしてもなにから書こう。CS、DSから?
39
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
68
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
69 全体:Cerium を使用したアプリケションも何か欲しい