計算工学ナビ

ものづくりにHPCを活用するための ツールとケーススタディー

サイト内検索

RaspberryPiクラスタ製作記 第0回「スパコンって本当にスゴイの?」

この連載について
自らスパコンを作って使って、その可能性と限界をよく知りたい……そんなふうに考えた大学4年生、西永俊文さんの実践レポートです。人気の30ドルPC “RaspberryPi” を何台も繋いで小さな並列計算機を製作し、実際にシミュレーションソフトウェアを移植してテストします。自分の手を動かしながらスパコンとHPCの真の姿を知ることがこの連載の目的です。

第0回 スパコンって本当にスゴイの?

comic

突然ですがみなさま、スパコンはご存じですか?

スパコンとはスーパコンピュータの略で、その名の通り非常に高い計算能力をもったコンピュータです。 有名どころとしては、サマーウォーズというアニメ映画で人工知能ラブマシーンを封じ込める際に使用されたコンピュータのモデルである『SX-9』や、汎用京速計算機『京』などがあります。

OLYMPUS DIGITAL CAMERA
神戸の理化学研究所・計算科学研究機構にて

こういった名前は、情報系の学生でしたら当たり前に知っていることかと思います。 しかし「スパコンはなぜ必要なのか? 具体的にどういう計算を行っているのか?」と聞かれると、答えられる学生は意外と少ないのではないでしょうか?

実はつい最近まで、私もその一人でした。 私は大学で情報科学について学んでいる、ごく普通の大学生です。 そのためもちろんスパコンの名前や、その意義については何となくは知っているつもりでした。 しかしつい最近まで、HPC(High Performance Computing)について具体的なイメージを持ち合わせておらず、 スパコンの必要性について語ることができませんでした。

私がこのようになってしまった理由について、一度過去と現在のコンピュータ事情を比較して考えてみましょう。 これは私が40代くらいの方から聞いた、今から20年ほど前の話になります。 当時のパソコンは非常に高価かつ低性能なため、現代から見ればとても簡単なシミュレーションやCGの計算のためにスパコンが利用されていたようです。 しかし技術の進歩は非常に早く、現代では個人のパソコンですら20年前のスパコンを超える性能を持っています。 そのため個人のパソコンで、まるで本物と見間違うようなCGですら処理することができてしまいますし、 ちょっと簡単なシミュレーションや難しい計算も、少なくとも大学の講義に出てくるようなものであれば、ほとんどが数秒以内に処理できてしまいます。

つまり現代は、個人のマシンが既に非常に高性能になっているため、少なくとも個人用途において昔に比べてスパコンを使うような計算が減っているのです。 その分、スパコンが必要となる計算の難易度が上がっており、それに比例して初心者が最初に超えねばならない敷居が高くなっているように感じています。 これでは昔の私のような初心者が気軽にHPCの世界に参加することは難しく、今後スパコンの利用者や理解者は減っていってしまうでしょう。

本連載はこの高くなった敷居にはしごをかけ、初心者に対しスパコンとはどういったもので、具体的に何ができるのかを伝えることを目的としています。 この目的を達成するため、以降は簡単にスパコンについて説明をした後、小型組み込みLinuxボードのRaspberry Piを用いて数十年前相当の性能のスパコンを自作し、その上で計算を行っていきます。 この内容を通して、読者にスパコンとはなにかをより身近に感じていただければと思います。

それでは一緒に、スパコンについて学んで行きましょう!!

スパコンとはなにか?

スーパコンピュータとはその名の通り、普通のコンピュータをはるかに凌駕するような性能を持ったコンピュータのことです。 ではその性能は具体的にどれほどのものなのでしょうか?

スーパコンピュータと普通のコンピュータの分岐点について、平成25年に国からスパコン導入手続き資料(PDF)という資料が出ています。 この資料によると、演算性能が 50 TFLOPS(テラフロップス)を超えるものをスパコンとして扱うとのことです。 このFLOPSというのは1秒間に演算できる浮動小数点演算の回数で性能を示す値で、50 TFLOPSは1秒間に500億回の浮動小数点演算を行う性能があります。 現在のパソコンの性能(Intel Core i7 4core 3.5GHz)が大体 224 GFLOPS なので、 つまりスパコンはパソコンに比べ、最低でも約200倍以上の性能を持っているということになります。

ちなみに現在日本で一番性能の高いスパコン「京」の理論性能値は約11 PFLOPS(ペタフロップス)なので、パソコンと比べて約4.9万倍の性能があります。 単純に考えれば、普通のパソコンで4.9万秒——だいたい14時間かかる計算が、京では1秒で実行できてしまいます。もう性能が高すぎてよくわからないですね。

本当にスパコンが必要なの?

スパコンがパソコンと比べてケタ違いの性能を持っていることについて説明しましたが、ではそのケタ違いの計算能力は一体何のために使われているのでしょうか?

スパコンを利用する分野は、医療、津波シミュレーション、気象予測、ナノ・サイエンス、ロケットなど多岐にわたります。
これらの分野で膨大な計算能力を必要とする計算のひとつが、シミュレーションです。
なぜこれらの計算のためにスパコンが使われているのでしょうか。 それはシミュレーション計算が容易に計算量の爆発を起こしてしまうからです。 わかりやすい例として天気予測のシミュレーションを考えてみましょう。

理化学研究所の三好建正さんの資料(PDF)によると、天気予報シミュレーションの方法は大まかに分けて以下の2手順に分けられます。

1. 地球を細かく分割する
2. 分割したそれぞれの場所の状態より、天気の移り変わりを計算する

この手順1にて地球を分割するマスの大きさのことを”解像度”と呼び、この解像度が天気予報の正確さ、そして計算量に大きく関わってきます。

それでは解像度と計算量の変化について、日本の総面積を37.8万平方キロメートルとして考えてみましょう。 まず解像度100kmで天気を予測するとなると格子数が37となるので、手順2の計算を37回実行する必要があります。 この程度であれば普通のパソコンでもなんとか計算できそうですが、37点では目が荒く、人々が求める地域ごとのきめ細かい天気予報は得られません。

そこでより正確に計算できるよう、解像度を50km、10km、1km、そして500mと上げていった場合の格子数の増加量をグラフにしてみました。

解像度を上げることにより格子数は指数関数的に増えていくことがグラフからわかると思います。 また三好さんの資料より計算量を計算すると、解像度をn倍した際の計算量はnの4乗で増えていくので、解像度100kmの計算量に対して10kmで1万倍、1kmで1億倍……と、容易に計算量爆発を起こしてしまいます。

このように、天気にかぎらずシミュレーションの計算は容易に計算量爆発を起こしてしまいます。 これを現実的な時間で計算するためは、スパコンが不可欠なのです。

スパコンの性能を体感しよう!

先程は気象予測の計算を例に計算量爆発を言葉で説明しましたが、本当にスパコンで計算されているシミュレーションにはスパコンの性能が必要なのでしょうか。 ひょっとしたら、みなさんの手元のパソコンでも容易に計算できてしまうのではないでしょうか。

幸いなことに、京でも実際に使われている解析ソフトの1つ、ナノ・物質・材料・マルチスケール機能シミュレーションソフトウェア「PHASE/0」は個人利用のためには無償で公開され、利用することができます。 これをみなさまのパソコンで実行してみることで、シミュレーションにどれだけの時間がかかるのかを体感してみましょう。

PHASE/0のインストール方法を別ページにまとめました。実際にやってみたい方は参考にしてください。動作環境はx86_64 Linuxを想定しています。

PHASE/0を動かしてみる

インストールが終わったので、実際にPHASE/0を用いてシリコン結晶(Si8)の全エネルギーを求めてみましょう。なお、この実験は、MacBookAir Mid2011(Intel Core i7 2677M)で行いました。

シリコン結晶(Si8)の全データ計算に必要なデータは samples/Si8 以下に保存されています。 ここでphaseのプログラムを実行すると、入力ファイルを読み込んで全エネルギーの計算が開始されます。

$ cd samples/Si8
$ mpirun -np A ../../bin/phase -ne=B -nk=C

ここでA,B,Cはそれぞれ、計算に使用するプロセッサ数、エネルギー準位の分割計算の数、k点の分割計算の数を指しています。 これらのパラメータをA=BxCとなるように設定することで、並列実行により高速化することができます。

私の環境は4コア動作が可能なので、以下のようにしました。

$ mpirun -np 4 ../../bin/phase -ne=2 -nk=2

3分ほど待てば計算が完了し、output100というファイルに結果が出力されます。

スパコンの凄さを体感してみる

先ほどのサンプルの計算は3分もかからずに終了し「なんだ、スパコンって意外と大したことないんだな」と思われたのでないでしょうか。 いえいえ、そうではありません。 サンプルは主に動作確認が目的なので、メッシュ――天気予測でいうところの解像度を低くして、すぐに計算が終わるようになっているのです。 ここからはこの設定を修正して、その計算量の増加を体感してみましょう。

メッシュや計算時間上限は input_scf_Si8.data というファイルで設定されているので、このファイルをテキストエディタで開いてください。

最初に計算時間上限設定を書き換えましょう。 ファイルの一番上には以下のように cpumax という変数で最大3600秒までに制限しているところがあるので、これを 1 day に書き換えてください。

Control{
        cpumax = 3600 sec     ! {sec|min|hour|day}
        condition=initial
}

次にメッシュを書き換えます。 メッシュ点の値nx,ny,nzは以下のように設定されており、デフォルトでは4となっています。 この数字を下げると計算量が減り、上げると増えていきます。

ksampling{
        method = mesh ! {mesh|file|directin|gamma}
        mesh{  nx = 4, ny =  4, nz =  4   }
}

メッシュ点と計算時間の関係を調べてみる

メッシュ点の変更方法がわかったところで、このメッシュ点を上げるにつれて計算時間がどれだけ増えていくかを調べてみました。 その結果が以下のグラフです。

メッシュ点の大きさを上げるにつれ、計算時間がだいたい 2x^2 で伸びていくのがわかります。 そして最後のメッシュ点21x21x21では計算に2万秒――つまり6時間ほどもかかっています。 今回はメッシュ点のみ変更して検証しましたが、その他に収束条件などを変更すると今の何倍も時間がかかることでしょう。

以上より、この計算を実用的な時間で終えるためにはパソコンでは力不足であり、スパコンの性能が必要であることが実感できたのではないでしょうか。

まとめ

今回はスパコンの概要と、その用途について注目して説明しました。 この内容を以下に簡単にまとめます。

スパコンは超高性能なコンピューター
用途のひとつとしてシミュレーションがある
シミュレーションは本当に計算時間がかかる

導入部にて「現代のコンピュータの性能は20年前のスパコンを超える」と説明したように、スパコンは未来を先取りする事ができるコンピュータです。 つまりこのスパコンを国内に持っているということは、数十年後の未来を先取りした研究環境があり、研究が行えるということにほかなりません。 その成果は今すぐ役立つものから、数十年後――生まれたばかりの子どもが成人する頃に実を結ぶものなど様々ですが、医療や科学などの面で私たちの生活をより豊かにしてくれることでしょう。

これを読み終えた今なら、冒頭の「スパコンはなぜ必要なのか? 具体的にどういう計算を行っているのか?」という質問に、胸を張って答えられるのではないでしょうか。

著者プロフィール

西永俊文 1992年生まれの情報系大学生。一人前のエンジニアを目指して日々勉強中。PDA全盛期の影響から、組み込み機器が好き。今欲しい物は、現代の技術で作られた物理キーボード付きで4インチ以下の小さなスマートフォン。著書に『BareMetalで遊ぶ Raspberry Pi』がある。

OLYMPUS DIGITAL CAMERA
著者近影(手にしているのは今回製作したRasPiクラスター)

連載目次

2014-12-01 RaspberryPiクラスタ製作記 第0回「スパコンって本当にスゴイの?」
2014-12-01 PHASE/0のインストール方法
2014-12-16 RaspberryPiクラスタ製作記 第1回「スパコンを作ろう」
2014-12-16 Raspberry Piの初期設定
2014-12-29 RaspberryPiクラスタ製作記 第2回「スパコンで遊ぼう」
2014-12-29 HPLのインストール方法
2015-02-11 RaspberryPiクラスタ製作記 第3回「並列プログラミング」
2015-02-11 MPIを用いた並列プログラミングの概要
2015-02-11 LU分解アルゴリズムのおさらい
2015-03-01 RaspberryPiクラスタ製作記 第4回「BareMetal並列計算」