WSクラスターとしては、通常の10BaseTイーサネットに接続されたIBMのRS6000 590が4台から構成されるものを使用した。PCクラスターとしては、Pentium II 450MHzをデュアルCPUマザーボードを用いて2CPU構成としたものを使用した。厳密にはPCクラスターではない。PC用のOSはFreeBSD Version 3.1のSMPカーネルを使用した。主記憶容量はWS/PC共に1台あたり256MBである。並列計算を行なうためのライブラリとしては、WS/PC共にTCGMSGライブラリ[5]を使用した。またPC用にはMPIの実装の一つであるLAM version 6.2b[6]も用いてTCGMSGと比較した。
...
ncb=0
DO J= 0,N
DO K=-N+J,N
DO L=-N+J,N
ncb=ncb+1
if(mod(ncb,nproc).eq.me) then
DO R=1,n
DO S=1,n
DO T=1,n
DO U=1,n
Calculate <R(0)S(J)|T(K)U(L)>
or <R'(0)S(J)|T(K)U(L)>
ENDDO
ENDDO
ENDDO
ENDDO
endif
ENDDO
ENDDO
ENDDO
...
(a)二電子積分およびその微分の並列化(旧)
...
icount=0
DO J= 0,N
DO K=-N+J,N
DO L=-N+J,N
DO R=1,n
DO S=1,n
DO T=1,n
DO U=1,n
icount=icount+1
if(mod(icount,nproc).eq.me) then
Calculate <R(0)S(J)|T(K)U(L)>
or <R'(0)S(J)|T(K)U(L)>
endif
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
...
(b)二電子積分およびその微分の並列化(新)
Figure 1. 並列計算の概要
速度比較のために前報と同様にpoly-tetrafluoro-ethylene(C2F4)x を対象に選んだ。基底関数系はSTO-3G[8]を用いた。(n=30) 隣接セル数Nは5として、二電子積分のカットオフ法にはNamur Cutoff 法を用いた[10]。波数ベクトルのサンプリングは41点で行ない、Simpsonの公式を用いて式(8)の積分を行なった[7]。実時間比較のために、poly-tetrafluoro-ethyleneでは計算規模が小さすぎるため、poly-(para-phenylene sulfide) (C6H4SC6H4S)xを新たに対象に選び、SCF計算のみを行ってCPU時間ではなく実際に計算が終了するまでの時間を計測した。ここでは3-21G基底関数系[9]を使用し(n=150)、隣接セル数Nは3、波数ベクトルのサンプリングは21点とした。poly-(para-phenylene sulfide)の構造をFigure 2に示した。
Figure 2. poly-(para-phenylene-sulfide)の構造、破線内がユニットセル 3 結果と考察
Table 1に計測されたCPU占有時間(秒単位)を示す。二電子積分およびその核座標に関する微分を旧アルゴリズム並びに新アルゴリズムにより並列化したものについて示した。ただしCeleronプロセサおよびMPIを用いた並列化では新アルゴリズムによるもののみを示した。
Table 1. Poly-tetrafluoro-ethyleneの並列計算の速度比較(秒)
プロセス数 | 時間(秒)a | 加速率 | 時間(秒)b | 加速率 |
---|---|---|---|---|
RS6000/590 cluster TCGMSG | ||||
1 | 342.8 | 1.00 | 342.8 | 1.00 |
2 | 182.8 | 1.88 | 179.1 | 1.91 |
4 | 88.2 | 3.89 | 95.5 | 3.59 |
8 | 52.9 | 6.48 | 53.9 | 6.35 |
16 | 37.1 | 9.24 | 33.9 | 10.11 |
PC-cluster/TCGMSG | ||||
1 | 230.6 | 1.00 | 230.6 | 1.00 |
2 | 121.6 | 1.90 | 119.4 | 1.93 |
4 | 64.9 | 3.55 | 61.7 | 3.74 |
8 | 35.0 | 6.59 | 32.8 | 7.03 |
16 | 25.1 | 9.19 | 18.9 | 12.20 |
PC-cluster/MPI-LAM | ||||
1 | ... | ... | 272.6 | 1.00 |
2 | ... | ... | 140.3 | 1.94 |
4 | ... | ... | 72.6 | 3.75 |
8 | ... | ... | 38.6 | 7.06 |
16 | ... | ... | 21.9 | 12.45 |
PC-clusterc/TCGMSG | ||||
1 | ... | ... | 228.5 | 1.00 |
2 | ... | ... | 127.0 | 1.79 |
4 | ... | ... | 66.6 | 3.43 |
8 | ... | ... | 37.0 | 6.17 |
16 | ... | ... | 22.6 | 10.11 |
a旧並列化アルゴリズム b新並列化アルゴリズム cCeleron 433MHz |
ここで並列計算におけるCPU占有時間は並列計算時に最もCPU時間を消費したプロセスのCPU時間である。速度の計測は各10回行ない、最速値をとった。WSおよびPCクラスターはそれぞれ4CPUおよび2CPUしか持たないため、各CPUについて1、2、4、または8プロセスずつ発生させて、それぞれ4、8、16 並列計算の値をシミュレートした。ただし同一CPU上のプロセス間通信ではセマフォを用いた共有メモリーが使用されるので、純粋に8CPU、16CPUでソケット通信のみを使用した場合に比べて速度的に有利になっている可能性は残る。ここで加速率を1CPU使用での計算時のCPU占有時間を並列計算時のCPU占有時間で除算したものとして定義すると、WSの16並列計算時では1割程度、PCクラスターでは2割以上の向上があり、新しい並列化の方法が有効であることを示している。
なお加速率では同等の結果が得られているが、MPIを用いた並列化では、CPUの占有時間がTCGMSGに比べて増加している。これは以下に示すように、ライブラリの仕様の違いによる。つまり各ノードでの計算結果の和を取る場合に、TCGMSGではDGOPルーチンにより、配列ARRAYに直接結果を返す事が可能だが、
CALL DGOP(MSGDBL,ARRAY,LENGTH,'+')MPIではMPI_ALLREDUCEルーチンを用いると、
CALL MPI_ALLREDUCE(ARRAY,ARRAY1,LENGTH,MPI_DOUBLE_PRECISION, 1 MPI_SUM,MPI_COMM_WORLD,IERR) DO I=1,LENGTH ARRAY(I)=ARRAY1(I) ENDDOのように、一旦仮の配列ARRAY1に結果が返され、仕様によりARRAY1をARRAYにすることは出来ず、ARRAYに戻すオーバーヘッドが生じているためである。今回はプログラミングの簡単化のためにこのような手順を採用したが、本格的にMPIに移行する場合には、このようなオーバーヘッドが生じないようにプログラムを書き直す必要があると思われる。
CPUとしてCeleron 433MHzを用いると、並列化を行わない場合には Pentium II 450MHzとほぼ同等の結果が得られているが、並列化を行った場合には二割程度遅い結果となる。ここには示していないが他のベンチマークを走らせた場合にも同様の結果が得られている。Pentium IIの512KBと比べて二次キャッシュの容量が128KBと小さいことと外部バスのスピードが遅い事が影響しているものと思われるが詳細は不明である。並列化を行った際に遅くなるためCeleronをPCクラスターに採用するのは好ましくないと考えられる。
Table 2. Poly-(para-phenylene sulfide)の並列計算の速度比較(秒)
プロセス数 | CPU時間(秒) | CPU加速率 | 実時間 | 実時間加速率 |
---|---|---|---|---|
1 | 11640 | 1.00 | 13738 | 1.00 |
2a | 6027 | 1.93 | 7899 | 1.74 |
2b | 6016 | 1.93 | 12857 | 1.07 |
以上の議論は前報[4]を含めてCPUの占有時間のみの考察であったが、より重要なのはCPUの占有時間ではなく、実際の計算にかかった実時間であろう。より大きなポリマーである、poly-(para-phenylene sulfide)を用いて実際の計算にかかった時間を比較した。Table 2にRS6000/590のクラスターを用いて計測した実時間について示した。実時間に関しては、ネットワークの構造や各CPUの接続形態など、また計算時のネットワークの混雑の程度など、多くの因子が関係してくる。同一のハブに2台のWSを収容した場合には、実時間が1.74倍に加速されているが、別のサブネットにある2台で実行した場合には、途中のネットワークの状況などに大きく依存するようになり、ほとんど実時間の減少に結び付いていない事がわかる。従って例えば夜間に空いたPCを利用して計算を行おうというようなアイデアは上手くいかない可能性が高く、PCクラスターを用いた計算には同一のハブに接続するなどの専用のクラスターシステムをデザインする必要があると思われる。また同一のハブであっても上の結果のように2倍のパフォーマンスが得られていないことから、ネットワーク入出力待ちがかなりの程度生じていることが予想され、10BaseTではなく100BaseTでスイッチを使用する事が望ましい。現在、16CPU程度の専用システムの構築を行っており、近い将来に詳細について発表する予定である。