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君よりもずっと計算時間が必要になってしまうでしょう.全員の計算が終わるまで次の計算が始められないような場合には,一番計算時間のかかる人を待たなければなりませんから,「ある人はとても簡単な計算なのに,別の人はとても難しい計算」という状況は極めて非効率です.裏を返せば,「どの人も同程度の計算時間になるように仕事を振り分ける」方が効率的なのです.この振り分けをいかに上手くできるかが計算時間に大きく影響するのです.
以上,「並列計算」について簡単に説明させていただきました.スパコンの仕組みが少しでも伝わったのでしたら幸いです.スパコンを使ったシミュレーションについては五月祭で展示させていただくので,是非お越しください!



【深層学習&遺伝的アルゴリズム】(上野)最近囲碁でプロを破ったことで話題になった「ニューラルネットワーク」を使ってできるだけオセロの強いAI(人工知能)を実装することを目的にしています。方針はこんな感じです。・オセロプログラムを組む。・まず、形勢値(局面がどれだけ有利かという指標)を石の数から算出し、アルファ・ベータ法というアルゴリズムで5~13手先まで読むことである程度強いAIを作る。・この「ある程度強いAI」を教師とする機械学習を行い、誤差逆伝播法という手法を使って盤面の形勢値の算出をニューラルネットワーク(人間の脳をまねたモデル)に教え込む。・最後に、ニューラルネットワークを用いたAI同士を戦わせ、勝った方が生存してニューラルネットワークの内容がわずかに異なる子孫を残す、という規則で世代を進め、AIがどれだけ強くなるかを観察する。果たしてAIはどれだけオセロが強くなるのでしょうか?五月祭では是非力比べをしてみて下さい!
【太陽系シミュレーション】(杉山)我々の太陽系は重力多体系と言って、三体(三つのもの)以上からなる系です。太陽と地球のように星が二つだけの二体問題は解析的に(完璧に)解くことができますが、特殊な場合を除いて一般の三体以上の問題は解析的に解くことができないことが知られています。そのため、これらの問題は数値解析(シミュレーション)によって解いていくことになります。今回は多体系の中でも、身近な太陽系という重力多体系の数値解析的シミュレーションプログラムをC言語というプログラミング言語で書き、OpenGLというAPIでアニメーション出力することで太陽系の天体の振る舞いを調べてみました。
【波】(丹波)物理をより身近に感じてもらえるよう、波の進行をシミュレーションしました。このプログラミングでは波をばねで繋がった質点の集まりと捉え、その動きを表しています。グラフはある場所での波の動きを表したものです。プログラム自体はまだまだ開発中で、より多くの人に波の動きを直感的に感じてもらえるよう、アニメーション作成と微分方程式の精度向上に努めているところです。完成形としては、全ての点の動きを同時に見られるアニメーションになるはずです。
【イジング模型】(古川)皆さんご存知のように磁石に鉄を近づけると引き寄せられます。それではこの磁石を炎で加熱し続けるとどうなるでしょうか。実はある温度を越えたところで急に磁力がなくなってしまいます。この温度をキュリー点といいます。このような磁石の振る舞いをミクロな視点から見るために考え出されたのがイジング模型です。物質を構成する原子はひとつひとつ小さな磁石の性質を持っています。この小さな磁石は上か下かのどちらかを向いており、プログラムは100×100個の原子が並んで上または下を指している状態を白黒で表現しています。磁石はある温度を持っていますので、熱による揺らぎから小さな磁石は常にパタパタとひっくり返っています。これだけではただの磁石の集まりであまりおもしろくありません。そこで、この小さな磁石に隣の磁石と同じ方向を向こうとする性質を持たせてみます。これがイジング模型です。これで一体なにが起こるのでしょうか。温度がゼロで熱による揺らぎがまったくない状態では、すべての磁石が同じ方向を向き全体として磁石の性質を示します。しかし、温度が高くなっていくとだんだんひっくり返る磁石が多くなっていきます。それでもまだ同じ向きに並んだ磁石の方が多く、全体として磁石になっています。ところが、ある温度を越えると熱によるひっくり返しの効果が同じ向きに並ぼうとする効果を上回ります。すると小さな磁石たちは混乱を極め、お互いに打ち消しあって全体としては磁石でなくなってしまうのです。私はこれを再現したプログラムを作りました。五月祭当日では右のスライダーで温度を変えて、小さな磁石の向きがどのように変わっていくかを確かめてみてください。
【宇宙シミュレーション】(森脇・周)宇宙理論の研究現場においては、実際の観測結果とシミュレーションの結果を照らし合わせることにより理論の検証が行われることもあります。今回の五月祭の展示では、ビッグバン当初ほぼ一様に質量が分布していた状態から星や銀河が形成された過程をシミュレーションにより見てみようと思います。このシミュレーションでは、たくさんの粒子によって密度分布を表し、それらの相互作用として重力と圧力を考えます。図は粒子1000個でシミュレーションを行ったものです。密度が大きすぎると全粒子が中心に固まってしまいますが(図左上)、適当な大きさの時には所々に粒子の集まる場所ができる可能性があり、これが初期の星になると考えることができます。※t=0.png(図右上)、t=50.png(図左下)、t=100.png(図右下)は粒子の位置の時間変化。t=100.png などは分布に構造の片鱗が見えている?まだ試作段階。
【交通流シミュレーション】(羽柴)渋滞はなぜできるのか? 渋滞はいつできるのか? そもそも、渋滞とは何なのか?車の流れに対しては、いわゆる普通の物理で使う方程式はほとんど使い物になりません。たとえば、後ろの車は前の車が遅いと自分も減速しなければなりませんが、前の車は後ろの車が迫ってきたからといって加速する義務はありません。つまり、前の車と後ろの車は対等ではないのです。こういう、「対等じゃない(非対称)」というのが物理学や数学はとても苦手です。そこで数値解析(シミュレーション)の出番となるわけです。このシミュレーションでは現実に起こっていることをコンピュータ上に再現する為に、必要最小限のルールだけを抜き出す「モデル化」が肝になります。今回はあまり表に出てこないこのモデル化の過程についても展示しようと思っています。モデルが進化するにつれてコンピュータの中に次第に鮮明な車の流れが浮かび上がるのをご覧下さい。(画像はきわめて簡単な「トイモデル(おもちゃのモデル)」と呼ばれる類のモデルです。)ここに挙げたもの以外についても今後紹介予定です。お楽しみに!