PhysicsLab. 2016 BLOG

計算機班の記事

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君よりもずっと計算時間が必要になってしまうでしょう.全員の計算が終わるまで次の計算が始められないような場合には,一番計算時間のかかる人を待たなければなりませんから,「ある人はとても簡単な計算なのに,別の人はとても難しい計算」という状況は極めて非効率です.裏を返せば,「どの人も同程度の計算時間になるように仕事を振り分ける」方が効率的なのです.この振り分けをいかに上手くできるかが計算時間に大きく影響するのです.

以上,「並列計算」について簡単に説明させていただきました.スパコンの仕組みが少しでも伝わったのでしたら幸いです.スパコンを使ったシミュレーションについては五月祭で展示させていただくので,是非お越しください!



Category: 計算機班
今回も前回に引き続き現在制作中のプログラムの一部を紹介したいと思います。(五十音順)


【深層学習&遺伝的アルゴリズム】(上野)
最近囲碁でプロを破ったことで話題になった「ニューラルネットワーク」を使ってできるだけオセロの強いAI(人工知能)を実装することを目的にしています。
方針はこんな感じです。
・オセロプログラムを組む。
・まず、形勢値(局面がどれだけ有利かという指標)を石の数から算出し、アルファ・ベータ法というアルゴリズムで5~13手先まで読むことである程度強いAIを作る。
・この「ある程度強いAI」を教師とする機械学習を行い、誤差逆伝播法という手法を使って盤面の形勢値の算出をニューラルネットワーク(人間の脳をまねたモデル)に教え込む。
・最後に、ニューラルネットワークを用いたAI同士を戦わせ、勝った方が生存してニューラルネットワークの内容がわずかに異なる子孫を残す、という規則で世代を進め、AIがどれだけ強くなるかを観察する。
果たしてAIはどれだけオセロが強くなるのでしょうか?五月祭では是非力比べをしてみて下さい!


【太陽系シミュレーション】(杉山)
我々の太陽系は重力多体系と言って、三体(三つのもの)以上からなる系です。太陽と地球のように星が二つだけの二体問題は解析的に(完璧に)解くことができますが、特殊な場合を除いて一般の三体以上の問題は解析的に解くことができないことが知られています。そのため、これらの問題は数値解析(シミュレーション)によって解いていくことになります。
今回は多体系の中でも、身近な太陽系という重力多体系の数値解析的シミュレーションプログラムをC言語というプログラミング言語で書き、OpenGLというAPIでアニメーション出力することで太陽系の天体の振る舞いを調べてみました。


【波】(丹波)
物理をより身近に感じてもらえるよう、波の進行をシミュレーションしました。
このプログラミングでは波をばねで繋がった質点の集まりと捉え、その動きを表しています。グラフはある場所での波の動きを表したものです。
プログラム自体はまだまだ開発中で、より多くの人に波の動きを直感的に感じてもらえるよう、アニメーション作成と微分方程式の精度向上に努めているところです。完成形としては、全ての点の動きを同時に見られるアニメーションになるはずです。


【有限環の探索】(横島)
「環」というものをご存知でしょうか。簡単に言うと、足し算引き算掛け算ができる数学的構造です。代表的なものとしては整数(…, -1, 0, 1, 2, …)があります。ある集合が環かどうかは、元と元の間にある5個ほどのルールを満たすかどうかで決まります。環は物理だけでなく様々な分野に根底として潜んでいます。
整数の元の数は無限個ありますが、有限の環というのもあります。例えば、0と1からなる集合で
0+0=0 0×0=0
0+1=1 0×1=0
1+1=0 1×1=1
を満たすものは環となります。このように、環は+と×の結果を九九表のように書き出すことで確定できます。今回のプログラムでは、ルールを満たす全ての有限環を探し出すことができます。画像では結果しか出ていませんが、展示では表を決めていく過程も見ることができます。ナンバープレースのように表が埋まっていく様子は爽快です。

これも物理学なの?と思われるかも知れませんが、世の中の現象を解き明かそうとするのが物理学。物理学はここまでなんて決まりは無いのです。コンピュータを手に入れてますます広がっていく自由な物理学の世界を、是非五月祭で感じてみて下さい!
Category: 計算機班
お久し振りです、計算機班です。
私達計算機班は班員一人ひとりがそれぞれ自分のプログラムを作っています。
今回は現在制作中のプログラムの一部を紹介したいと思います。(五十音順)


【イジング模型】(古川)
皆さんご存知のように磁石に鉄を近づけると引き寄せられます。それではこの磁石を炎で加熱し続けるとどうなるでしょうか。実はある温度を越えたところで急に磁力がなくなってしまいます。この温度をキュリー点といいます。このような磁石の振る舞いをミクロな視点から見るために考え出されたのがイジング模型です。
物質を構成する原子はひとつひとつ小さな磁石の性質を持っています。この小さな磁石は上か下かのどちらかを向いており、プログラムは100×100個の原子が並んで上または下を指している状態を白黒で表現しています。磁石はある温度を持っていますので、熱による揺らぎから小さな磁石は常にパタパタとひっくり返っています。これだけではただの磁石の集まりであまりおもしろくありません。そこで、この小さな磁石に隣の磁石と同じ方向を向こうとする性質を持たせてみます。これがイジング模型です。これで一体なにが起こるのでしょうか。
温度がゼロで熱による揺らぎがまったくない状態では、すべての磁石が同じ方向を向き全体として磁石の性質を示します。しかし、温度が高くなっていくとだんだんひっくり返る磁石が多くなっていきます。それでもまだ同じ向きに並んだ磁石の方が多く、全体として磁石になっています。ところが、ある温度を越えると熱によるひっくり返しの効果が同じ向きに並ぼうとする効果を上回ります。すると小さな磁石たちは混乱を極め、お互いに打ち消しあって全体としては磁石でなくなってしまうのです。
私はこれを再現したプログラムを作りました。五月祭当日では右のスライダーで温度を変えて、小さな磁石の向きがどのように変わっていくかを確かめてみてください。


【宇宙シミュレーション】(森脇・周)
宇宙理論の研究現場においては、実際の観測結果とシミュレーションの結果を照らし合わせることにより理論の検証が行われることもあります。
今回の五月祭の展示では、ビッグバン当初ほぼ一様に質量が分布していた状態から星や銀河が形成された過程をシミュレーションにより見てみようと思います。このシミュレーションでは、たくさんの粒子によって密度分布を表し、それらの相互作用として重力と圧力を考えます。
図は粒子1000個でシミュレーションを行ったものです。密度が大きすぎると全粒子が中心に固まってしまいますが(図左上)、適当な大きさの時には所々に粒子の集まる場所ができる可能性があり、これが初期の星になると考えることができます。
※t=0.png(図右上)、t=50.png(図左下)、t=100.png(図右下)は粒子の位置の時間変化。t=100.png などは分布に構造の片鱗が見えている?まだ試作段階。


【交通流シミュレーション】(羽柴)
渋滞はなぜできるのか? 渋滞はいつできるのか? そもそも、渋滞とは何なのか?
車の流れに対しては、いわゆる普通の物理で使う方程式はほとんど使い物になりません。たとえば、後ろの車は前の車が遅いと自分も減速しなければなりませんが、前の車は後ろの車が迫ってきたからといって加速する義務はありません。つまり、前の車と後ろの車は対等ではないのです。こういう、「対等じゃない(非対称)」というのが物理学や数学はとても苦手です。そこで数値解析(シミュレーション)の出番となるわけです。
このシミュレーションでは現実に起こっていることをコンピュータ上に再現する為に、必要最小限のルールだけを抜き出す「モデル化」が肝になります。今回はあまり表に出てこないこのモデル化の過程についても展示しようと思っています。モデルが進化するにつれてコンピュータの中に次第に鮮明な車の流れが浮かび上がるのをご覧下さい。(画像はきわめて簡単な「トイモデル(おもちゃのモデル)」と呼ばれる類のモデルです。)

ここに挙げたもの以外についても今後紹介予定です。
お楽しみに!
Category: 計算機班
sHello world!
はじめまして、計算機班班長の羽柴です。
突然ですが、皆さんは計算機を使った事はありますか?きっとあると思います。このサイトを見ている時点で貴方は計算機(コンピュータ)の前に居ますね。スマホも計算機の一種ですよ!

さて、みんながお世話になっているとっても便利なコンピュータですが、実は物理の世界でも大活躍なのです。
物理の世界では実験したくても現実的には出来なかったり、理論で出てきた数式が難し過ぎて解けなかったりする事がしばしばあります。そんな時に役立つのが『計算機シミュレーション』。コンピュータに物理の方程式を教えて計算させてやると、コンピュータの中で実験が出来る、もっと格好付けて言うとコンピュータの中に『もう一つの宇宙を創り上げる』事が出来るのです!
これによって、地球に巨大隕石をぶつけて月を作れるか『実験』したり、星が爆発する様子の断面図をスローモーションで『観察』する、なんて事が可能になっています。身近な例だと、天気予報もコンピュータの中に『もう一つの地球』を作って早送りしてみることで天気を予報していたりします。凄いですね。

が、コンピュータ君は意外と頭がよろしくないので、物理の方程式を教えるというのがとても難しかったりします。
まず、コンピュータ君はマジメ過ぎるので人間様の言った事しか出来ません。「そのくらいは自分で考えれば分かるでしょう?」という訳にはいかないのです。足し算から何から、コンピュータ君がちゃんと計算出来るよう、完璧に、一点の例外無くマニュアル化しなければならないのです。
また、コンピュータ君は自分に絶対の自信があるので「間違えた!」という思いを抱きません。バレンタインデーで貰えるチョコの個数を計算して物凄い大きな数が出たら、人間なら「間違えたかな?」と思うところですが、コンピュータ君は「やったね!2147483647個貰えるらしいよ!」とか平気で言ってきます。計算を見直す事など考えもしないのです。だから、最終的には人間が結果をチェックしないといけません。
そして、人間語で書かれた方程式をコンピュータ君が読める言葉に翻訳してやる必要もあります。これがまた英会話並に難しい訳で…
ただ、その分物理屋の腕の見せ所も多いと言えます。

そんなコンピュータを使って、私達はこんなことをやろうと思っています。
・2次元イジングモデルのシミュレーション
・ランダムウォーク(酔歩)のシミュレーション
・微生物の走化性のシミュレーション
・交通流(渋滞)のシミュレーション
・並列計算(スパコンとかで使われている手法)を使ったシミュレーション
・FPGAという部品を使った計算機の構築
etc...
なんだこれはというものばかりかも知れませんが、これらのテーマについては追々このサイトでも紹介していく予定です。五月祭で皆さんにお楽しみ頂けるよう、只今鋭意プログラミング中です。

五月祭のPhysicsLab. 2016に乞うご期待!
          TOP