マルチコアプロセッサで並列処理(4/4)
4.並列化コンパイラを用いた粗粒度タスク並列処理
ループ並列処理とタスク並列処理は、プログラマが並列処理可能部分を見つけ出し、OpenMP指示文として記述する方式でした。このため大規模なプログラムにおいて高度な並列処理の記述をするのは難しいという問題点があります。このような問題点を解決するために、並列化コンパイラを用いた粗粒度タスク並列処理が提案されており、本研究室でも研究しています。並列化コンパイラとは、通常のプログラムを入力し、並列プログラムを自動的に生成するシステムソフトウェアのことです。
粗粒度タスク並列処理による実行では、まず、プログラムを階層的にタスクと呼ばれる小プログラムに分割し、タスク間の制御依存とデータ依存を解析します。次に、互いに依存のない(独立に実行可能な)タスクを異なるプロセッサに割り当て並列に実行します。
粗粒度タスク並列処理による実行では、まず、プログラムを階層的にタスクと呼ばれる小プログラムに分割し、タスク間の制御依存とデータ依存を解析します。次に、互いに依存のない(独立に実行可能な)タスクを異なるプロセッサに割り当て並列に実行します。
例えば、図7のタスクグラフで表されたプログラムでは、6つの第1層タスクから構成されており、緑色と青色の部分ではさらに第2層タスクから構成されています。このプログラムに粗粒度タスク並列処理を適用し、4コアプロセッサで並列処理するとその実行トレースは図8のようになり、全てのコアが効率よく利用できていることがわかります。このように、並列コンピュータは、高度な並列ソフトウェアを開発することにより、コア数に応じた高速実行が可能です。本研究室では、プログラム全域の並列性を利用可能にする階層統合型実行制御を用いた粗粒度タスク並列処理とその並列化コンパイラについて研究をしています。