新スーパーコンピュータ 日立SR8000 で計算してみた



現在さらなるテストを実行中です。。 が、バグ取りが進まない。

いつもお世話になっている大学の大型計算機センターに 3月11日、新しいスーパーコンピュータが入ったので早速遊んでみました。

SR8000の紹介(日立のサイト)

新スーパーコンピューターの試験サービス開始のお知らせ(大型計算機セ ンターのサイト)

今まで最新だった SR2201 は 0.3GFLOPS のプロセッサが 1024 台で並列処理を するものでプロセッサごとでベクトル化計算を行うものではなかったのですが、 今度のマシンは 8GFLOPS / プロセッサ でメインメモリは 8GB / プロセッサ というものが 128 プロセッサあるということで、 スーパーコンピュータが並列になったものです。 夢の"テラ マシン"だぜ、しかも試験運用中はタダ、ということで 早速遊んでみました。

newuserでtelnetして新規ユーザー登録をする。そのあと ユーザー名でtelnetする。ありゃ、"you have no more budget"って表示され て接続を切られた。タダじゃなかったのか?課金は数万円残ってる筈なのに。 ってことでセンターに電話すると直してくれました。

やっぱり、OSが HI-UX で UNIX もどき(あれ、正式なUNIXなのか?)なので、 ありがたい。昔みたいに VOS3 じゃないのでディレクトリという概念がある。 ASPEN じゃなくて vi だ。csh だ。 ちゃんと pwd すると /home/username になってるし、 cd .. で ls すると一般ユーザーは6人、わし以外に6人暇人が既にいる。 あれ、暇人は俺だけか。スタッフは9人くらいエントリがある。 因みに、who なんてしても自分のアカウント情報しか教えてくれません。

なにせ出来たてほやほやのマシンなので一般ユーザーなんて邪魔者 以外の何者でもない。一時間に一回はリブートしているみたいで、 作業中に突然接続が切られたりフリーズします。 嵐の大海原を小舟で漂っているようなものですわ。

それでも、rlogin や ftp が使えるので、早速手元の kterm で sr とするとログイン出来るようにして、手元の mule で C-x C-f /sr:~/ てすると SR8000 のホームディレクトリが触れる用に しました。きっと本当は UT-net (大学のネットワーク) の中だとはいえ rlogin は危険なのだろうが。。

さて、.cshrc を送り込んだりして環境を整えたところで、 1次元調和振動子の並進拡散のプログラムを走らせてみます。 プログラムの説明は省略。詳しくはわしの修士論文を読んで下さい。 (どこで読めるのだろう?) 簡単にいうと、U=(1/2)KX^2 (U:ポテンシャル K:定数 X:座標)という ポテンシャルに束縛された粒子のブラウン運動をメトロポリス法で 計算するというものです。 多数の粒子(粒子間相互作用は入れない)のトラジェクトリを積算して 自乗平均 <X^2> や分布の時間変化を計算するというものです。 我々のアルゴリズムの基本になっているので、新しい計算機を 使う場合、一種のベンチマークとしてこのプログラムを使っています。 ちょっとソースが汚いので、きれいにしたらここに載せてもいいのですが。

とりあえず、簡単に威力を見てみたい。 で、make。お、ちゃんとコンパイル出来た。で、結果(time a.out としたもの)。

SR8000(スパコン)
       real    10.8
       user     6.1
       sys      0.1
SR8000(粒子数を10倍にした)
       real    56.1
       user    53.6
       sys      0.1
SR2201(超並列) 
       real        9.2
       user        8.1
       sys         0.0
MP5800(大型汎用機)
       real        8.3
       user        7.4
       sys         0.0

Pentium120 (Linux 2.0.35,GNU g77 0.5.21)
    33.33user 0.04system 0:34.20elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k
    0inputs+0outputs (79major+20minor)pagefaults 0swaps
Pentium120 (粒子数を10倍にした)
   337.51user 0.75system 6:44.25elapsed 83%CPU (0avgtext+0avgdata 0maxresident)k
   0inputs+0outputs (80major+22minor)pagefaults 0swaps

microSPARC 70 (Solaris 2.3,Sun f77 SC3.0.1,)
      real     1:06.4
      user     1:04.8
      sys         0.1


これじゃあ、よくわからないです。確かに、一番速いけど、 Pentium120の6,7倍なんてものじゃないでしょう。 まず、ベクトル化や最適化のオプションを何もつけないで、 f77 **.f てやっているだけなので性能が発揮されていないようです。 SR8000 で user が 6秒であるのに対し real が 10 秒もかかっているのは、 このプロセスの priority (=俺の立場?)が低いからでしょう。 それと、SR8000もSR2201も、ディスクへのアクセスが異様に遅いので、 計算結果を出力している箇所で計算機時間を食っているものとも思われます。 それは、簡単な ls や tar 、それに make などが異様に遅いことでも 体感出来ます。MP5800はその点、ワークステーション並に速いです。 もう少し長い計算をさせなくては。 SR2201も、新規に導入されてから半年か1年くらい経ってようやく コンパイラやライブラリが整備されてきたので、コンパイル 出来ただけでも よしとしましょう。 ところで、microSPARC より Pentium120 の方が速いのが笑える。