
並列計算とは
並列計算とは、複数の計算装置(プロセッサや計算機)が協調して1つの処理を行うことを言います。皆さんは今までに、1つのプログラムを実行する際に何台のパソコンを使ったことがありますか?多くの人は1台のパソコンで実行していたと思います。このように1台の装置で計算することを逐次計算と言います。図1に、並列計算の概念図を示します。図1では、仕事A、仕事B、仕事C、仕事D、‥‥といった仕事を処理しています。図1の左上のように、逐次計算では1台の装置のみで全ての仕事を処理します。一方、並列計算ではこれらの仕事群を複数の装置に分散して同時に処理していきます。このとき、各仕事間の情報のやりとりは通信によって行います。

並列計算の利点
並列計算を行う利点は、高速に処理できることと、大規模なデータを扱うことができることです。図2に、並列計算による高速処理の様子を示します。ここでは、計算機を人間に例えて表現しています。ある仕事を処理する場合、1人では非常に時間がかかる場合があります。並列計算の考え方では、このような仕事をいくつかの細かい仕事に分割し、複数人が協調して仕事を進めます。これにより、1人で仕事をするよりも速く仕事を終えることができます。実に単純な考えです。「1人では処理しきれない仕事を何人かで分担することで仕事を速く進める」ということは、我々も日常でよくしていることです。

並列計算の難しさ
並列計算用に作られたプログラムのことを並列プログラムといいますが、並列プログラムは作れば必ず高速に実行できるわけではありません。それどころか、逆に遅くなることさえあります。その原因は主に2つあり、1つは過剰な通信、もう1つは仕事の不均等な分散です。
このような下手な並列プログラムは簡単に作れてしまいます。一方、良い並列プログラム(=高速に動作する並列プログラム)を作ることは容易ではありません。並列計算したいプログラムの処理を、どう切り分ければよいか、そもそも切り分けることが可能なのか、どのように工夫して通信を減らせば良いかといったことを良く考えて作らなければ、すぐに下手な並列プログラムになってしまいます。
また、最近では並列プログラムの作成を難しくする要因として、並列計算を行うための計算環境の多様化が挙げられます。例えば、従来、並列計算にはパソコンをネットワークで接続したPCクラスタと呼ばれる環境が広く用いられてきました。それに加え、近年では、1台のパソコンに搭載されるCPUがマルチコア化され、1台のパソコンでも並列計算ができるようになりました。また、画像処理を専門に行う画像処理プロセッサも汎用的な並列計算に使用できるようになりました。
本研究室では、このような様々な環境において、良い並列プログラムを誰でも簡単に作成できる仕組を開発することを目指しています。