一次元ポリマーのエネルギーバンド計算における並列処理(2)

寺前 裕之


Return

1 はじめに

一次元ポリマーに関する非経験的結晶軌道法による計算はポリアセチレンなどの導電性高分子の電子状態研究でその有効性が示されたが、CPU占有時間およびファイルの入出力共に非常に大規模な計算となるうえ、ベクトル型のスーパーコンピューター向きの計算では無いために、単位セルが小さなポリマー以外の計算はあまりなされていない[1 - 3]。
近年、単一CPUでのコンピューターの処理能力も限界に近くなりつつあり、スーパーコンピューター(SC)やワークステーション(WS)も以前ほどの短期間での飛躍的な性能向上は見込めなくなってきた。そこで、現在では複数のCPUを装備した並列処理システムを用いて並列計算を行なうのが大規模計算では主流になりつつあり、SCやWSもクラスター構成ないしは並列型の構成となる。またポリマー計算のように大容量のファイル入出力を伴う場合にはこのファイル入出力待ち時間も大きくなるため並列化することが望ましい。しかし、SCは高価であり、WSレベルにおいてもCPUを20-30台の単位で確保することは以前と比べて価格が下がってきたとは言え、コスト的に見て難しい。
一方で比較的安価なIntelプラットフォームのパーソナルコンピューター(PC)は近年の性能向上がめざましく、WSとの差が縮小してきた。例えば Pentium II 450MHz のLinpack実測値(n=100)では浮動小数点演算速度は最高約90Mflopsにも達し、やや古いモデルとの比較ではあるがRS6000/590の35MflopsやCray T932の単一CPUでの90Mflopsと比較してもむしろ高速な値となっている。また近年、LinuxやFreeBSDのようなPCで動作するフリーなUnixが普及しはじめたため、PCをWSのように使用する事が可能になり、WSから最小限のプログラム書き換えでPCへの移植が行えるようになった。
我々は以前の論文[4]で一次元ポリマーのエネルギーバンド計算プログラムをソケット通信を用いたTCGMSGメッセージパッセンジャーを利用して並列計算用に書き直しパフォーマンスの計測などを行ない、PCクラスターを用いた並列計算でスーパーコンピューターに匹敵する性能が得られる事を示した。ただし、並列度が増えた場合には、分散処理がうまくいかず、理論値通りに性能の向上が見られず、16CPUで9倍程度の加速率に止まった。またPCクラスターは、スピードがかなり異なるCPUを組み合わせていたので、性能向上が計測データには顕著には現れていなかった。そこで本研究では、Intel Pentium IIを使用したPCクラスターにより、一層の高速化を目指して並列化に工夫を行い、より並列度を上げる事ができたので報告する。またPentium IIの廉価版であるCeleronを使用した結果についても報告する。
本研究では前報[4]でメッセージパッセンジャーとして採用したTCGMSGがやや古くなりメンテナンスも行われていない現状も考慮して、他に近年並列化ライブラリの標準となりつつある、MPI環境下での並列化も試み、TCGMSGとの比較を行った。さらに、CPU時間の短縮だけではなく実際の計算に要する実時間についても考察を行ったので併せて報告する。

2 計算方法

ポリマーのエネルギーバンドの計算理論については文献に詳しいので並列計算に必要な部分のみの記述にとどめる[1, 2]。一次元ポリマーの計算理論である結晶軌道法は有限の分子系における分子軌道法を無限系のバンド計算に拡張したものである。
Hartree-Fock方程式は、

である。Frs(k), Hrs(k), Srs(k)は、kをあらわに含まない実空間での各行列要素のフーリエ変換で表すことができて、

ここで、

これらの関係式からユニットセル当りの全エネルギーは、

ここで、n は基底関数の数をNは考慮する隣接セル数を表す。式(7)より容易にわかるように、二電子積分の数はN3n4に比例する。Fockの行列要素を計算するのに必要な電子密度行列は結晶軌道の係数Ctn(k)から計算されるが、結晶軌道の係数は変分方程式を解かないと得ることができない。従って、分子軌道計算の場合と全く同様にSCF計算が必要である。
Figure 1(a)に示したように、二電子積分および二電子積分の核座標に関する微分の計算において隣接セル数であるNを用いた並列化を前報では行っていたが、本研究では(b)で示したようにさらに内側のループへ並列化を移動することにより処理の一層の分散を図った。ただしプログラミング自体は(b)の方が難しくなる。さらに後段のFock行列の生成(式(7))において、データのgatherをブロック転送のみでは行えなくなるためノード間での和をとる必要が生じる。このため後に述べるようにMPIではオーバーヘッドが生じ、効率が悪くなる。TCGMSGでは問題は生じない。二電子積分および二電子積分の核座標に関する微分が計算の全体に占める割合はテストに用いたテフロンポリマーで約75%であるが、結果としてSCF計算部分も並列処理されるため、並列化される計算量は90%以上になる。

      ...
      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. 並列計算の概要

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と比較した。
速度比較のために前報と同様に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
1342.81.00342.81.00
2182.81.88179.11.91
488.23.8995.53.59
852.96.4853.96.35
1637.19.2433.910.11
PC-cluster/TCGMSG
1230.61.00230.61.00
2121.61.90119.41.93
464.93.5561.73.74
835.06.5932.87.03
1625.19.1918.912.20
PC-cluster/MPI-LAM
1......272.61.00
2......140.31.94
4......72.63.75
8......38.67.06
16......21.912.45
PC-clusterc/TCGMSG
1......228.51.00
2......127.01.79
4......66.63.43
8......37.06.17
16......22.610.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に移行する場合には、このようなオーバーヘッドが生じないようにプログラムを書き直す必要があると思われる。
Figure 3に並列度16の場合の各ノードでのCPU占有時間を示した。これから容易にわかるように、旧アルゴリズムでは並列度が上がるにつれて、各ノードへの計算の効率的な分散がうまくいかなくなっており、特にノード12、14はほとんど使用されていない。一方、新アルゴリズムでは16ノードがほぼ均等に使用されており、負荷分散がうまく機能していることがわかる。


Figure 3. 16ノード並列計算時の各CPU占有時間

CPUとしてCeleron 433MHzを用いると、並列化を行わない場合には Pentium II 450MHzとほぼ同等の結果が得られているが、並列化を行った場合には二割程度遅い結果となる。ここには示していないが他のベンチマークを走らせた場合にも同様の結果が得られている。Pentium IIの512KBと比べて二次キャッシュの容量が128KBと小さいことと外部バスのスピードが遅い事が影響しているものと思われるが詳細は不明である。並列化を行った際に遅くなるためCeleronをPCクラスターに採用するのは好ましくないと考えられる。

Table 2. Poly-(para-phenylene sulfide)の並列計算の速度比較(秒)
プロセス数CPU時間(秒)CPU加速率実時間実時間加速率
1116401.00137381.00
2a60271.9378991.74
2b60161.93128571.07
a同一ハブに接続
b別サブネット

以上の議論は前報[4]を含めてCPUの占有時間のみの考察であったが、より重要なのはCPUの占有時間ではなく、実際の計算にかかった実時間であろう。より大きなポリマーである、poly-(para-phenylene sulfide)を用いて実際の計算にかかった時間を比較した。Table 2にRS6000/590のクラスターを用いて計測した実時間について示した。実時間に関しては、ネットワークの構造や各CPUの接続形態など、また計算時のネットワークの混雑の程度など、多くの因子が関係してくる。同一のハブに2台のWSを収容した場合には、実時間が1.74倍に加速されているが、別のサブネットにある2台で実行した場合には、途中のネットワークの状況などに大きく依存するようになり、ほとんど実時間の減少に結び付いていない事がわかる。従って例えば夜間に空いたPCを利用して計算を行おうというようなアイデアは上手くいかない可能性が高く、PCクラスターを用いた計算には同一のハブに接続するなどの専用のクラスターシステムをデザインする必要があると思われる。また同一のハブであっても上の結果のように2倍のパフォーマンスが得られていないことから、ネットワーク入出力待ちがかなりの程度生じていることが予想され、10BaseTではなく100BaseTでスイッチを使用する事が望ましい。現在、16CPU程度の専用システムの構築を行っており、近い将来に詳細について発表する予定である。

参考文献

[ 1] M. Kertesz, Adv. Quantum Chem., 15, 161 (1982).
[ 2] P. Otto, E. Clementi, and J. Ladik, J. Chem. Phys., 78, 4547 (1983).
[ 3] H. Teramae, J. Chem. Phys., 85, 990 (1986).
[ 4] H. Teramae, J. Chem. Software, 4, 73 (1998).
[ 5] R. J. Harrison, TCGMSG ver. 4.04, Battelle Pacific NorthwestLaboratory (1994)
R. J. Harrison, Int. J. Quantum Chem., 40, 847 (1991).
[ 6] Gregory D. Burns, Raja B. Daoud, James R. Vaigl,Supercomputing Symposium '94 (Toronto, Canada, June 1994)
Greg Burns, Raja Daoud, MPI Developers Conference, University of Notre Dame (June 1995)
[ 7] P. J. Davis and P. Rabinowitz, Method of Numerical Integration, Academic Press, New York (1975), p.45.
[ 8] W. J. Hehre, R. Ditchfield, R. F. Stewart, and J. A. Pople, J. Chem. Phys, 52, 2769 (1970).
[ 9] J. S. Binkley, J. A. Pople, W. J. Hehre, J. Am. Chem. Soc., 102, 939 (1980).
M. S. Gordon, J. S. Binkley, J. A. Pople, W. J. Pietro, W. J. Hehre, J. Am. Chem. Soc., 106, 2797 (1984).
[ 10] H. Teramae, Theoret. Chim. Acta, 94, 311 (1996).
[ 11] 日向寺祥子、長嶋雲兵、青柳睦、佐藤三久、関口智嗣、桐山博史、細矢治夫、IPSJ SIG Notes, Vol. 94, 94-HPC-52, 19 (1994)


Return