研究概要 |
プログラムの実行をタスクグラフでモデル化し,タスクスケジューリングによってスケジュールを生成し,スケジュールに従ってコード化することでMPMD型の並列プログラムを生成できる. タスクグラフのタスク中の命令数を粒度という.性能のよい並列プログラムを得るために,粒度をどのようにすればよいかを明らかにした.タスクグラフの形状が,生成される並列プログラムの性能に与える影響について,タスクの出次数とタスクグラフの並列度による評価を行った.タスクの出次数は,スケジュールでのタスク複製の度合いに影響する.タスク複製を多くすることでより多くの通信を削減できるが,多くなりすぎると個々のCPUでの処理量が増加する.また,タスク粒度を粗くした場合,タスクグラフ自身の並列度が低くなり、並列化の効果に影響を及ぼす.いくつかの応用プログラムに関して実験を行い,各タスクの出次数が小さく,利用可能なプロセッサ台数に比べて十分な並列度をもつタスクグラフを用いることが,並列プログラムの性能の上で重要なことがわかった. また,スケジュールからコード生成する場合,生成するコード長はスケジュールの長さに依存して大きくなる.タスクグラフがもとのプロセッサのループを展開して生成されている場合,コード生成時にループを再構成することでループ制御のための演算が必要にはなるが,コード長を小さくなることで,実行時の命令キャッシュのヒット率が上昇し,並列プログラムの実行性能が向上することがある.そこで,ループを再構成した場合の実行性能への影響について実験を行い,大きなサイズのループを再構成できた場合は性能が向上することがわかった.
|