Mercurial > hg > Papers > 2016 > kkb-master
view paper/intro.tex @ 26:2310a20b6e28
create poster
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 21 Feb 2016 07:26:31 +0900 (2016-02-20) |
parents | faaba0936fa9 |
children |
line wrap: on
line source
\chapter{並列環境下における\\プログラミング} CPU の処理速度の向上のためクロック周波数の増加は発熱や消費電力の増大により難しくなっている。 そのため、クロック周波数を上げる代わりに CPU のコア数を増やす傾向にある。 マルチコア CPU の性能を発揮するには、処理をできるだけ並列化しなければならない。 これはアムダールの法則により、並列化できない部分が並列化による性能向上を制限することから言える。 つまり、プログラムを並列処理に適した形で記述するためのフレームワークが必要になる。 また、PC の処理性能を上げるためにマルチコア CPU 以外にも GPU や CPU と GPU を複合したヘテロジニアスなプロセッサが登場している。 並列処理をする上でこれらのリソースを無視することができない。 しかし、これらのプロセッサで性能を出すためにはこれらのアーキテクチャに合わせた並列プログラミングが必要になる。 並列プログラミングフレームワークではこれらのプロセッサを抽象化し、CPU と同等に扱えるようにすることも求められる。 本研究では Cerium を開発して得られた知見を元にこれらの性質を持つ並列プログラミングフレームワークとして Gears OS の設計・実装を行う。 Cerium は本研究室で開発していた並列プログラミングフレームワークである。 Cerium では Task と呼ばれる分割されたプログラムを依存関係に沿って実行することで並列実行を可能にする。 Cerium では依存関係を Task 間で設定するが、本来 Task はデータに依存するもので Task 間の依存関係ではデータの依存関係を保証することができない。 また、Task には汎用ポインタとしてデータの受け渡しを行うので型情報を失う。 Task 側で正しく明示的に型変換する必要があり、誤った型変換を行うとデータ構造自体を破壊する可能性がある。 型システムによって検査することも出来ず、型に基づく一連の不具合が常に付きまとう。 Gears OS は Code Segment と Data Segment によって構成される。 Code Segment は処理の単位、Data Segment はデータの単位となる。 Gears OS では Code/Data Segment を用いて記述することでプログラム全体の並列度を高めて、効率的に並列処理することが可能になることを目的とする。 また、Gears OS の実装自体が Code/Data Segment を用いたプログラミングの指針となるように実装する。 Gears OS における Task は実行する Code Segment と実行に必要な Input Data Segment, 出力される Output Data Segment の組で表現される。 Input/Output Data Segment によって依存関係が決定し、それに沿って並列実行する。 本論文では基本的な機能として Data Gear を管理する Persistent Data Tree, Task を管理する TaskQueue, 並列処理を行う Worker を実装し、簡単な例題を用いて Gears OS の評価を行う。