annotate paper/introduciton.tex @ 77:f9b73e12a52f

fix
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Mon, 23 Feb 2015 19:12:19 +0900
parents 48db1f674a83
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
55
48db1f674a83 update pdf
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
1 \chapter{マルチプラットフォームな\\フレームワークにおける\\並列プログラミング}
48
8d6a0f047d5a create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
2 \pagenumbering{arabic}
77
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
3
1
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
4
77
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
5  プログラムが PC に要求する処理性能は上がってきているが、
48
8d6a0f047d5a create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
6 消費電力・発熱・クロックの限界から、 CPU の性能を上げることによる処理性能の向上は難しい。
31
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
7 プロセッサメーカーはマルチコア CPU や GPU を含むヘテロジニアス構成の路線を打ち出している。
27
27aeea97bf42 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
8 クロックの性能を上げるのではなく、コア数を増やすことでパフォーマンスを向上させている。
1
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
9
77
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
10 マルチコア CPU や GPU といった、マルチプラットフォームなアーキテクチャ上でリソースを有効活用するには、
31
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
11 それぞれのプラットフォームに対して最適な形でプログラムを並列に動作させる必要がある。
77
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
12 ここでいう最適な形とは、実行の順番やどのリソース上で Task を実行するかといった、
26
82b54ebd26f5 fix abstract
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
13 Scheduling を含めたチューニングの事である。
82b54ebd26f5 fix abstract
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
14
77
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
15 しかし、これらのチューニングは複雑で、コーディング時に毎回行うと煩雑さや拡張性の点で問題がある。
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
16 このような問題を解決するため、本研究では並列プログラミングフレームワーク Cerium の開発を行った。
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
17 Cerium により、プラットフォーム間で統一的にコードを記述できる。
48
8d6a0f047d5a create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
18 一般的なマルチプラットフォームフレームワークとして OpenCL や CUDA が挙げられるが、
8d6a0f047d5a create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
19 これらと同等の並列度を維持したい。
31
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
20
77
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
21 Cerium では、Task という単位で処理を記述し、それらは並列に実行される。
44
edf3a38f96d8 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
22 プログラマが Task 間の依存関係を設定するとパイプラインが構成され、高い並列度で実行される。
31
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
23 プログラマが生成した Task は TaskManager に送信され、設定した依存関係の解決を行った後、 Scheduler に送信される。
44
edf3a38f96d8 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
24 Scheduler がパイプラインの機構を持っており、Task はそのパイプラインに沿って実行される。
77
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
25 Scheduler が受信した Task は、既に TaskManager が依存関係を解決しているため実行順序は任意で良い。
31
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
26
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
27 計算機において並列処理を行うための設計様式として、1つの命令を同時に複数のデータに適用し、並列に処理する方式がある。
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
28 これをSIMD と呼ぶ。
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
29 GPU や Cell といったヘテロジニアスなアーキテクチャでは、 SIMD 型が主流である。
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
30 Cerium は SIMD 型において高い並列度を維持するため、データ並列実行の機構を備えている。
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
31
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
32 Cerium においてプログラマは Task を記述し、Input データを用意した後はデータ並列用の API で Task を spawn するだけで
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
33 データ並列実行することができる。
44
edf3a38f96d8 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
34 TaskManager はプログラマが記述した単一の Task を複数生成し、
edf3a38f96d8 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
35 受け取ったデータ(Input/Output)に対しその Task を割り当てる。
edf3a38f96d8 fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 31
diff changeset
36 生成した復数の Task を並列実行する事でデータ並列実行を実現した。
77
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
37 更に、Sort 、Word Count 、FFT の例題を元に、
31
f0060254db3f fix introduction
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
38 Cerium の持つ並列実行機構がマルチプラットフォームにおける並列プログラミングで有効に作用する事を示す。