2016.05.06. Fri.
Category: 計算機班
皆さんは「スーパーコンピュータ」というのをご存知でしょうか.詳しくは分からないという方でも,事業仕分けで一躍有名になった「京コンピュータ」はご存知かと思います.その京コンピュータがある理化学研究所 計算科学研究機構で,昨年の夏,及び今年の春にスパコンについてのスクールがあり,計算機班のメンバー3人で勉強に行きました.そして,今年の計算機班の展示に伴い,東大にあるスパコンFX10を使わせていただけることになりました! 今回はスパコンで行われている「並列計算」という手法について,噛み砕いて説明したいと思います.
あなたは,次のような足し算,引き算をする必要があったとします.
31+62-5-75+…
これが4,5個の計算なら簡単にできるでしょう.10個くらいでも(やる気にさえなれば)できるはずです.しかし,これが100個や,もっと増えて1万個になったとすると,とても計算する気にはなりません… ところが,もし一緒に計算してくれる人が1000人見つかったとするとどうでしょう? 一人一人は10個の計算をするだけでいいので,一人で1万個の計算をするよりは随分簡単になりました.
これがスパコンで行われている「並列計算」という手法(の一例)です.つまり,一人で解くことは大変困難でも,問題をより小さい問題に分割して,複数人で協力して別々に解くのです.
並列計算において重要なことが何点かあります.
1点目は「通信」です.先ほどの足し算,引き算の例を考えます.この計算は1000人が別々に計算して終わりではありません.1000人の計算結果を集めて,次の問題(この例では1000個の足し算,引き算)を解かなければなりません.このようにお互いの計算結果を伝え合うことを「通信」と呼んでいます.この通信の時間を短くすることは,効率の良い方法を考えて計算時間を短くすることと同じくらい重要なことです.足し算,引き算の例で言うと,始めの2個の計算が終わっただけで「93になったよ.」といちいち連絡されても,その途中結果を使わないのであれば,それは不要な連絡であり,あなたは(10個全部計算し終わってから教えて…)と思うでしょう.
2点目は「タスクの振り分け」です.再び足し算,引き算の問題で,A君は1桁の計算ばかり,一方,B君は10桁の計算ばかりだとします.するとB君はA君よりもずっと計算時間が必要になってしまうでしょう.全員の計算が終わるまで次の計算が始められないような場合には,一番計算時間のかかる人を待たなければなりませんから,「ある人はとても簡単な計算なのに,別の人はとても難しい計算」という状況は極めて非効率です.裏を返せば,「どの人も同程度の計算時間になるように仕事を振り分ける」方が効率的なのです.この振り分けをいかに上手くできるかが計算時間に大きく影響するのです.
以上,「並列計算」について簡単に説明させていただきました.スパコンの仕組みが少しでも伝わったのでしたら幸いです.スパコンを使ったシミュレーションについては五月祭で展示させていただくので,是非お越しください!
あなたは,次のような足し算,引き算をする必要があったとします.
31+62-5-75+…
これが4,5個の計算なら簡単にできるでしょう.10個くらいでも(やる気にさえなれば)できるはずです.しかし,これが100個や,もっと増えて1万個になったとすると,とても計算する気にはなりません… ところが,もし一緒に計算してくれる人が1000人見つかったとするとどうでしょう? 一人一人は10個の計算をするだけでいいので,一人で1万個の計算をするよりは随分簡単になりました.
これがスパコンで行われている「並列計算」という手法(の一例)です.つまり,一人で解くことは大変困難でも,問題をより小さい問題に分割して,複数人で協力して別々に解くのです.
並列計算において重要なことが何点かあります.
1点目は「通信」です.先ほどの足し算,引き算の例を考えます.この計算は1000人が別々に計算して終わりではありません.1000人の計算結果を集めて,次の問題(この例では1000個の足し算,引き算)を解かなければなりません.このようにお互いの計算結果を伝え合うことを「通信」と呼んでいます.この通信の時間を短くすることは,効率の良い方法を考えて計算時間を短くすることと同じくらい重要なことです.足し算,引き算の例で言うと,始めの2個の計算が終わっただけで「93になったよ.」といちいち連絡されても,その途中結果を使わないのであれば,それは不要な連絡であり,あなたは(10個全部計算し終わってから教えて…)と思うでしょう.
2点目は「タスクの振り分け」です.再び足し算,引き算の問題で,A君は1桁の計算ばかり,一方,B君は10桁の計算ばかりだとします.するとB君はA君よりもずっと計算時間が必要になってしまうでしょう.全員の計算が終わるまで次の計算が始められないような場合には,一番計算時間のかかる人を待たなければなりませんから,「ある人はとても簡単な計算なのに,別の人はとても難しい計算」という状況は極めて非効率です.裏を返せば,「どの人も同程度の計算時間になるように仕事を振り分ける」方が効率的なのです.この振り分けをいかに上手くできるかが計算時間に大きく影響するのです.
以上,「並列計算」について簡単に説明させていただきました.スパコンの仕組みが少しでも伝わったのでしたら幸いです.スパコンを使ったシミュレーションについては五月祭で展示させていただくので,是非お越しください!