view paper/introduciton.tex @ 1:5dbcea03717e draft

fix
author Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
date Tue, 07 Feb 2012 17:38:59 +0900
parents 6d80c2c895e4
children
line wrap: on
line source

\chapter{序論}
\pagenumbering{arabic}

\section{研究背景と目的}
本研究では、当研究室で開発した並列プログラミングフレームワーク Cerium の改良を行った。
マルチコアCPUという複数のコアを持つCPUの登場により、その台数効果を得るために並列プログラミングを行う必要がでてきた。複数のコア上でプログラムを動作させる場合、並列プログラミングが必要になる。
並列プログラミングで台数効果を出すためには、プログラム全体を対象にした並列度が高くなければならない。そのため、並列化部分の特定を行う必要がある。明示的な並列化部分はループ部分であるが、それがプログラムの大部分でなければ、台数効果はでない。そのためループ部分以外ではプログラマが効率的な並列化を考えなければならない。また並列化の際には各コアへの通信、同期、排他制御等の要素が追加され、これらは逐次プログラミングにおいては考慮する必要がなかった。加えて非同期での処理が含まれるため、再現性のないバグが発生する可能性があり、それに対応するデバッグが必要である。またアーキテクチャを理解し、最適なプログラムを書く必要がある。
これらのように、並列プログラミングでは、その信頼性を維持するために考慮すべき点が逐次プログラミングより多く、開発には技術と手間が必要で、時間がかかる問題がある。
Cell上でのゲーム作成を行う学生実験でも講義期間中に作品が一定のレベルに達しない問題が生じた。そこで、当研究室では並列プログラミングフレームワーク Cerium を開発した。Cerium は ゲームのシーンを記述する SceneGraph、ソフトウェアレンダリングを行う RenderingEngine、Task をスケジューリングする TaskManager から構成されている。Task とは Cerium が提供するデータ構造で、処理を Task として記述していくことで、TaskManager が自動的にスケジューリングを行い Task の情報に沿った、各コアへの処理の割り振り、同期を行う。現在 RenderingEngine 部分が Task で記述され並列処理にされている。Cerium の動作環境は Cell/PS3, Linux, MacOSX であり、どの環境でもほぼ同じコードで動作する。
Cerium を用いることで講義期間中でのゲーム作成が可能になった。しかし 実験での使用や例題の実装を通してフレームワークとしての信頼性が十分でないことが明らかになった。それは 仕様通りの稼働率がでないこと、アーキテクチャ依存の記述が避けにくことである。これらの問題点を解決するためにソフトウェアMailQueueの実装、TaskをグルーピングするTaskArrayの実装、明示的なDMAロードを隠蔽するMemorySegmentのAPIの実装、また細かなチューニングを行った。これらの改良によって、信頼性のある並列プログラミングフレームワークを目指す。