本研究課題では、プログラムの並列性がOpenMPを用いて記述されたプログラムの効率よい並列実行を実現するために必要なOpenMPコンパイラにおけるスケジューリング機構に関する研究を行うものである。 本年度は現在普及しつつあるPCクラスタをターゲットに、プログラム全体を粗粒度タスクに分割し、マクロタスクの並列性が実行開始条件として表現されている際に、そのマクロタスク集合問のデータ授受の関係をMPIライブラリ関数により記述し、並列実行の際に必要となる処理と通信のスケジューリング方式に関して研究を進め、実際の並列計算機上で予備的評価を行った。プログラム中のマクロタスクは条件分岐文等により全てが実行されるとは限らずマクロタスクのスケジューリングをコンパイル時に静的に行うのが困難であるため、ダイナミックスケジューリングを用いる。本方式ではそのダイナミックスケジューリングのためのスケジューリングコードをプログラム中に挿入している。本方式の予備的な評価では、本方式を本研究補助金にて購入したSMP型の並列計算機クラスタなどに実装し、スケジューリングと通信のオーバーヘッドを評価した。その結果、本方式で並列処理効果が得られると共にその際のスケジューリングのオーバーヘッドと通信の粒度の関係が明らかになった。今後はこの結果をもとに、データ転送の詳細な分析をするとともに、その削減方法やオバーヘッドに見合った粒度のタスク生成手法の研究を行う予定である。
|