計算工学ナビ

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

サイト内検索

Raspberry Piの初期設定

製作したRaspberry Piスパコンを計算に使えるように、OSのインストールや計算用アプリケーションのインストールを行っていきます。 以下の作業をすべてのマシンに対して行ってください。

OSのインストール

Raspberry PiはSDカードにインストールされたOSを起動するようになっているので、 SDカードにOSをインストールしてあげなければいけません。

Raspberry Piで動作するOSは様々なものがありますが、今回はこの中で一番使われているRaspbianを使用して構築を行います。 RaspbianとはLinuxディストリビューションのひとつであるDebianをベースに、Raspberry Pi用のカスタマイズを行ったディストリビューションです。

OSのインストールにはNOOBSというRaspberry Pi用のOSインストーラーを用いるのがお勧めです。 NOOBSを使ったOSインストールは非常に簡単で、おおまかに以下の5手順でRaspbianのインストールが完了します。

1. NOOBSの入ったZIPファイルをダウンロードする
2. SDカードをフォーマットする
3. SDカード内にNOOBSのファイルを展開する
4. SDカードをRaspberry Piに刺してRaspberry Piを起動する
5. NOOBSのOSインストール画面でRaspbianを選択してインストール

詳しくは以下のマニュアルを参照してください。

HOW TO GET AND INSTALL NOOBS

アップデート

インストールした直後のOSは最新ではないのでアップデートします。

$ sudo aptitude update
$ sudo aptitude -y upgrade

静的IPアドレスとホストネームの設定

クラスタ同士の通信にはTCP/IPを用いるので、各マシンを識別できるように固定IPアドレスと、ホストネームを設定します。

ネットワークのセグメントと、各マシンのIPアドレス、そしてホストネームは、以下のように設定します。

セグメント: 192.168.240.0/24
ゲートウェイ: 192.168.240.254
IPアドレス: 192.168.240.101 ~ .116
ホストネーム: rpicluster01 ~ 16

静的IPアドレスの設定

静的IPアドレスを設定するには、IPアドレスについての設定が書かれたファイルを編集して、ネットワークを再起動します。

設定ファイルの実体は /etc/network/interfaces です。このファイルを開いて以下のように書き換えてください。

auto lo
 
allow-hotplug wlan0
iface lo inet loopback
 
iface eth0 inet static
address 192.168.240.101   # マシンごとに.101 ~ .116 に変更する
netmask 255.255.255.0
gateway 192.168.240.254
dns-nameservers 8.8.8.8

ホストネームの設定

ホストネームとはコンピュータなどの機器を人間が識別しやすくなるようつける名前のことです。マシン内にホストネームとIPアドレスの対応表を持っている場合、このホストネームを用いて接続先のコンピュータを指定することができ、非常に便利になります。

ホストネームの設定は /etc/hostname と /etc/hosts で行います。前者は自分自身のホストネーム、後者はホストネームとIPアドレスの対応を記します。

最初に自身のホスト名を変更します。各マシンの番号に合わせて /etc/hostname は以下のように書き換えてください。

rpicluster01

次にホストとIPアドレスの対応を記します。 /etc/hosts を以下のように書き換えてください。

127.0.0.1    localhost
::1        localhost ip6-localhost ip6-loopback
fe00::0        ip6-localnet
ff00::0        ip6-mcastprefix
ff02::1        ip6-allnodes
ff02::2        ip6-allrouters
 
192.168.240.101        rpicluster01
192.168.240.102        rpicluster02
192.168.240.103        rpicluster03
192.168.240.104        rpicluster04
192.168.240.105        rpicluster05
192.168.240.106        rpicluster06
192.168.240.107        rpicluster07
192.168.240.108        rpicluster08
192.168.240.109        rpicluster09
192.168.240.110        rpicluster10
192.168.240.111        rpicluster11
192.168.240.112        rpicluster12
192.168.240.113        rpicluster13
192.168.240.114        rpicluster14
192.168.240.115        rpicluster15
192.168.240.116        rpicluster16

SSH鍵の共有

セキュリティ重視のためコンピュータ間の通信は基本的にSSHプロトコルを用いて暗号化して行います。この後使用する、PHASE/0の計算に使用するMPICHというアプリケーションも、デフォルトではこのSSHを用いて通信を行うようになっています。

SSH鍵ペアの生成

SSHは接続時にパスワードなどを用いた認証を行います。 しかし、計算のたびに最大16台分のパスワードを入力するのは非常に面倒です。 そこで予め各マシンのSSH鍵ペアを生成し、合鍵を1箇所に集めて登録することでパスワード入力の手間を省きます。

SSH鍵ファイルの生成は以下のコマンドで行います。 途中の質問には何も入力せず、すべてEnterを押して進めてください。

$ ssh-keygen

実行後は /home/pi/.ssh/ 以下に id_rsa , id_rsa.pub という秘密鍵と公開鍵のペアが生成されます。 これをすべてのマシンで行ってください。

公開鍵の送信

次は生成したSSH鍵を一か所に集めて登録します。 今後はrpicluster01を管理用マシンに使うので、鍵の集める先はrpicluster01とします。

以下にrpicluster02上から、rpicluster02のSSH公開鍵をrpicluster01に送信するコマンドを示します。このコマンドの”rpicluster02″の部分を各マシンごとに変更しつつ、rpicluster01を除くすべてのマシンで行い、rpicluster01にSSH公開鍵を集めてください。

$ scp ~/.ssh/id_rsa.pub pi@192.168.240.101:~/.ssh/rpicluster02.pub

公開鍵の登録

rpicluster01に集まった全マシンの公開鍵を以下のコマンドで登録します。

$ cd ~/.ssh/
$ cat id_rsa.pub rpicluster02.pub rpicluster03.pub \
rpicluster04.pub rpicluster05.pub rpicluster06.pub \
rpicluster07.pub rpicluster08.pub rpicluster09.pub \
rpicluster10.pub rpicluster11.pub rpicluster12.pub \
rpicluster13.pub rpicluster14.pub rpicluster15.pub \
rpicluster16 >> authorized_keys

接続の確認

最後にrpicluster01から、すべてのマシンに対してパスワードなしで接続できるか確認します。 以下のコマンドを実行してください。

$ ssh pi@rpicluster02

パスワード入力の必要なく接続できれば、クラスターマシンの初期設定は完了。 自作スーパーコンピュータの完成です。

RaspberryPiクラスタ製作記 第1回「スパコンを作ろう」

前回は、京を代表とするスーパーコンピュータがその高い性能を活かして科学技術や医療の発展に貢献しているという話をしました。ですがその高い性能はどうやって得られているのでしょうか。今回はその理由に迫り、低価格PCボード”RaspberryPi”を使って実際に小さなスパコンを製作します。

第1回 RaspberryPiでスパコンを作ろう

rpcComic2s

漫画にて先生が「スパコンを作る」と発言していましたが、本当にスパコンを作ることができるのでしょうか。 その秘密をスパコンの性能の理由を調べることで明らかにしていきましょう。

スパコンの主流はクラスタ

TOP500は、スーパコンピュータの性能をTOP500までランキングしているウェブサイトです。 ここを参照することにより、開発国、メーカー、コア数、消費電力など、様々な情報を得ることができます。

我が国の誇るスパコン「京」は、2011年6月のTOP500登場から約1年間トップの座を守りました。登場から3年たった2014年6月では順位は下がりましたが、いまだ4位という記録を保持し続けています。

2014年6月の1位から4位の記録(TOP500より引用)

順位 名前 コア数 Rmax(TFlops/s) Rpeak(TFlops/s) Power(kW)
1 天河二号 中国 3,120,000 33,862.7 54,902.4 17,808
2 Titan アメリカ 560,640 17,590.0 27,112.5 8,209
3 Sequoia アメリカ 1,572,864 17,173.2 20,132.7 7,890
4 日本 705,024 10,510.0 11,280.4 12,660

ここで注目したいのはスパコンのコア数です。これを見てもわかるように、現代のスパコンはその性能を高めるため大量のCPUコアを持ち、それらに並列(Parallel)に処理を行わせることで、計算を非常に高速に処理しています。身近な例をあげると、夏休みの宿題に計算問題を100題だされたとしても、100人が1問ずつ解いて最後に答えを共有すれば一瞬で終わりますよね。これと同じです。

クラスタとは

スパコンは大量のCPUを持つと書きましたが、これは必ずしも1台のコンピュータ内にすべてのCPUが入っているという意味ではありません。 現代のスパコンは、主に複数台のマシンを連結させるクラスタリングと呼ばれる手法で、大量のCPU資源を集めています。

クラスタとはノードと呼ばれるそれぞれがOSをもつ独立したコンピュータを、互いに高速なネットワークで接続したコンピュータ・システムのことです。 スパコンランキングでは1990年代に登場し、その後2000年代になって急激に性能を上げ、普及しました。

例えば京のクラスタは、4個の8コアCPUが乗ったボードを、1ラックに24枚搭載し、これを864台集めて、705,024コアの性能を実現しています。現在トップの天河二号やTitanも同様にクラスタを構築してその膨大なコア数を集めています。

このように現代のスパコンは大量のマシンを接続しクラスタを構築し、作業を分担することで高速化を行っています。 ここに、スパコン自作の鍵があります。

スパコンは作れる?

クラスタは、大雑把には複数台のコンピュータをつなげて高い性能を得るというものでした。つまり、普段わたしたちの使っているパソコンを複数台つなげることによってクラスタを作成し、台数を何百台、何千台と増やせばTOP500に入れるようなマシンが作れるのではないでしょうか。

この推測があながち間違っていないことは、長崎大学の製作したスパコン”DEGIMA”が証明しています。このスパコンはIntel Core i5の乗った「自作パソコン」で作られたクラスタマシンで、2011年6月から2012年6月までTOP500ランキングに登録されていました。

つまりコンピュータを複数台つなげることによって、スパコンは私たちの手でも作ることができるのです。

スパコンをつくろう

手の届かないものと思っていたスパコンが、手の届きそうなところまで近づいてきたのを感じます。しかしあと一歩たりません。クラスタを作ることによりスパコンが作れることはわかりましたが、TOP500に載るような性能を得るためには、少なくとも数十台以上の自作パソコンでクラスタを構築する必要があります。ここで問題となってくるのが金銭面で、現在の自作パソコンは安くても1台10万円近くするため、個人の予算では用意することができません。そこで、少し考え方を変えることにします。

突然ですが”GRAPE-1“というスパコンをご存知でしょうか。天体の時間進化や動力学を数値シミュレーションする目的に特化することで、試作機1台の製作費が20万円という低価格を実現した、非常に有名なスパコンです。このGRAPE-1のように目的を明確にし、それ専用のマシンを作ることにより低価格で高性能なスパコンを作ることも可能です。そこで私たちも目的を明確に設定し、それを達成するため専用のスパコンを作ることにします。

目的を考える

本連載のテーマは、スパコンについて学ぶことです。学習用と考えればTOP500に入るような性能は必要ありません。クラスタ構築による性能上昇と、その過程で遭遇するであろう問題を追体験できればそれで十分なはずです。よって今回の目標は「学習用スパコンをつくる」こととし、それ専用のマシンを作ることにします。

構成部品を考える

目的が決まったので、今度はどのコンピュータを使うかを考えます。ここでこれまでの内容と目的を元に必要事項をまとめたものが以下になります。

・安価である
・複数台の入手が容易である
・コンパクトである
・消費電力が少ない

この必要事項を満たすものとして真っ先に思い当たるのは”Raspberry Pi”です。

Raspberry Piとは2012年から発売されている、小型のシングルボードコンピュータです。このコンピュータは、イギリスのラズベリーパイ財団によって学校での基本的なコンピュータ教育を促進することを意図して作られ、販売されました。価格が非常に安価(現在4000〜5000円ほど)であるにもかかわらず、普通のARM Linuxが動作するという特徴から、幅広い年齢層から大反響を得ています。

前述のとおり、Raspberry Piは安価で、入手が容易で、小型で、非常に消費電力の少なく、今回の目的にピッタリです。 残念ながらCPUは”ARM11″という 初代iPhoneに入っていたCPUと同じシリーズなので、理論最大性能は1台あたり700MFLOPSと少々心もとないです。しかしこれを16台集めてクラスタ化すれば、約11GFLOPSと約20年前のスパコン”Deep Blue“とほぼ互角の性能が見込めるため、結果的には今回の目的にピッタリです。

よって今回はRaspberry Piを16台使ったクラスタを構築し、実験を行うことにします。

RasPi以外に必要なもの

Raspberry Piを利用するためには、本体以外に以下の物が必要です。

・MicroSDカード 8GB以上
・電源供給用USB-MicroBケーブル(50cm程度)
・電源供給用USB充電器
・LANケーブル(50cm程度)
・スイッチングハブ(17ポート以上)
・電源タップ
・Raspberry Pi連結用スペーサーとM2.6ネジ

加えてRaspberry Piを置くラックがあると便利なので、100円ショップで以下のものを購入しました。

・小型メタルラック(高さ30cm、棚2段)
・結束バンド
・ファンシー金網
・金網用フック付き小物いれ

以上の機材を組み立てていきます。

Raspberry Piを連結する

Raspberry Pi(Model B+)を箱から出し、M2.6のスペーサーとネジでつなげていきます。

IMG_2564
IMG_2565

8台ずつのタワーが2練できれば完了です。

IMG_2571

ラックを組み立ててスイッチを入れる

メタルラックを組み立て、結束バンドを使って背面に金網を取り付けます。さらにそこに小物入れを取り付け、スイッチを入れて結束バンドで固定します。

IMG_2593

配線をする

最後にRaspberry Piを載せ、電源とLANケーブルを配線します。 実はこの作業が一番大変で、なるべくメンテナンスしやすく、見栄えの良い配線になるまで何度も試行を繰り返しました。たった16台の配線ですらこれだけ大変なので、1ラックに24台ものシステムボードを搭載し、それを864台も接続している京は一体どのような配線を行っているのか想像もつきません。きっとその配線にも高度な技術が使われているのだと思います。図らずもクラスタ構築の大変さを知ることになりました。

完成

配線が完了すればハードウェアは完成です。ソフトウェアの初期設定については、別のページで詳しく解説します。

OLYMPUS DIGITAL CAMERA

まとめ

今回はスーパコンピュータが作れるということの説明と、 実際にRaspberry Piを使ってスーパコンピュータと同じようにクラスターマシンの制作を行いました。 この内容を以下に簡単にまとめます。

・スーパーコンピュータの主流はクラスタ
・用途を絞れば安価にスパコンを作ることも可能
・たった16台でもケーブルの配線や設定は大変

次回は今回製作したRaspberry Piスパコンを用い、PHASE/0の動作の確認や、性能の評価を行います。

著者プロフィール

西永俊文 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並列計算」

PHASE/0のインストール方法

PHASE/0のダウンロード

以下のURLから登録を行いPHASE/0のコードをダウンロードしてください。

https://azuma.nims.go.jp/cms1/

依存パッケージのインストール

PHASE/0のコンパイルには以下のソフトウェアが必要です。

gcc
gfortran
mpich2

インストール方法は各Linux ディストリビューションごとに違うので、適宜読み替えてインストールをおこなってください。

PHASE/0のインストール

次、ダウンロードしたファイルを以下のコマンドで解凍します。

$ tar zxvf phase0_2014.02.tar.gz

次、以下のコマンドで解凍したディレクトリに入りインストールスクリプトを実行します。

$ cd phase0_2014.02
$ ./install.sh

するとインストールを行うか確認が出るので、Enterを押します。

 === PHASE installer ===
 Do you want to install PHASE? (yes/no) [yes]

次、インストール環境の選択が出てくるので各環境に合わせて番号を選択します。

GenMake ver 1200
Supported platforms
 0) GNU Linux (IA32)
 1) GNU Linux (EM64T/AMD64)
 2) NEC SX Series
 x) Exit
Enter number of your platform. [0]

今回はx86_64のLinux環境なので、1番を選択します。

次、コンパイラの選択が出てくるのでEnterを押してください。

Supported compilers
 0) GNU compiler collection (gfortran)
 1) Intel Fortran compiler
 x) Exit
Enter number of a desired compiler. [0]

次、プログラムをシングルコアで行うか、MPIを使って並列に行うかを選択できます。

Supported compilers
 0) GNU compiler collection (gfortran)
 1) Intel Fortran compiler
 x) Exit
Enter number of a desired compiler. [0]

複数コアを用いるので、1を選択してEnterを押します。

以降はすべてEnterを押して進めれば、インストールは完了です。

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並列計算」

ニュースレターVol.5(2014秋号)が公開されました

ニュースレターVol.5が公開されました → ダウンロードページ

cenav05cover

目次は次のとおりです。

  1. 創薬からものづくりへ広がる ABINIT-MP の可能性
  2. HPCI戦略プログラム分野4における 成果公開・普及促進活動の状況
  3. ソフトウェアライブラリ「FrontFlow/violet」

PDFで配信中です。ぜひご覧ください。


↑前のページ次のページ↓