Mercurial > hg > Papers > 2015 > yuhi-master
annotate paper/introduciton.tex @ 55:48db1f674a83
update pdf
author | Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 17 Feb 2015 13:47:08 +0900 |
parents | e2790efcd306 |
children | f9b73e12a52f |
rev | line source |
---|---|
55 | 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} |
1 | 3 % 動画の編集や再生、ゲームといったPCやタブレット等の端末でできる事・やりたい事が増えてきている。 |
4 | |
19
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
5 % PCやタブレットの一般的な利用方法として動画の編集や再生、ゲームといったアプリケーションの利用が挙げられる。 |
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
6 % Rednering や物理演算といった処理から |
51 | 7 プログラムが PC に要求する処理性能は上がってきているが、 |
19
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
8 %-ゲームや動画再生といったアプリケーションが高水準(?)になるにつれて |
79d16cee0afd
Benchmark gpu.minor fix abstruct
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
9 %-高水準:高解像度だったり、ぬるぬる動いたり |
48
8d6a0f047d5a
create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
10 消費電力・発熱・クロックの限界から、 CPU の性能を上げることによる処理性能の向上は難しい。 |
31 | 11 プロセッサメーカーはマルチコア CPU や GPU を含むヘテロジニアス構成の路線を打ち出している。 |
27 | 12 クロックの性能を上げるのではなく、コア数を増やすことでパフォーマンスを向上させている。 |
1 | 13 |
31 | 14 マルチコア CPU や GPU といったマルチプラットフォームなアーキテクチャ上でリソースを有効活用するには、 |
15 それぞれのプラットフォームに対して最適な形でプログラムを並列に動作させる必要がある。 | |
26 | 16 ここでいう最適な形とは、実行の順番やどのリソース上で Task を実行するかといった |
17 Scheduling を含めたチューニングの事である。 | |
18 | |
48
8d6a0f047d5a
create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
19 しかしこれらのチューニングは複雑で、コーディング時に毎回行うと煩雑さや拡張性の点で問題がある。 |
8d6a0f047d5a
create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
20 そういった問題を解決するため、本研究では並列プログラミングフレームワーク Cerium の開発を行った。 |
8d6a0f047d5a
create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
21 Cerium によりプラットフォーム間で統一的にコードを記述できる。 |
8d6a0f047d5a
create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
22 一般的なマルチプラットフォームフレームワークとして OpenCL や CUDA が挙げられるが、 |
8d6a0f047d5a
create task in sort bench example
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
23 これらと同等の並列度を維持したい。 |
31 | 24 |
25 Cerium では Task という単位で処理を記述し、それらは並列に実行される。 | |
44 | 26 プログラマが Task 間の依存関係を設定するとパイプラインが構成され、高い並列度で実行される。 |
31 | 27 プログラマが生成した Task は TaskManager に送信され、設定した依存関係の解決を行った後、 Scheduler に送信される。 |
44 | 28 Scheduler がパイプラインの機構を持っており、Task はそのパイプラインに沿って実行される。 |
31 | 29 Scheduler が受信した Task は既に TaskManager が依存関係を解決しているため、実行順序は任意で良い。 |
30 | |
31 計算機において並列処理を行うための設計様式として、1つの命令を同時に複数のデータに適用し、並列に処理する方式がある。 | |
32 これをSIMD と呼ぶ。 | |
33 GPU や Cell といったヘテロジニアスなアーキテクチャでは、 SIMD 型が主流である。 | |
34 Cerium は SIMD 型において高い並列度を維持するため、データ並列実行の機構を備えている。 | |
35 | |
36 Cerium においてプログラマは Task を記述し、Input データを用意した後はデータ並列用の API で Task を spawn するだけで | |
37 データ並列実行することができる。 | |
44 | 38 TaskManager はプログラマが記述した単一の Task を複数生成し、 |
39 受け取ったデータ(Input/Output)に対しその Task を割り当てる。 | |
40 生成した復数の Task を並列実行する事でデータ並列実行を実現した。 | |
26 | 41 |
42 Sort 、Word Count 、FFT の例題を元に、 | |
31 | 43 Cerium の持つ並列実行機構がマルチプラットフォームにおける並列プログラミングで有効に作用する事を示す。 |