[目次] [1ページ目] [前ページ] [次ページ] [質疑応答]
(5/8)

5 自動並列化演算性能

 自動並列化演算性能について検討するため、Starfire 、Ultra5 およびVX-E を用いて、問題サイズClass W の NPB により計測を行なった。測定に用いたシステムの仕様は次の通りである。


図3: NPB 結果(Class W)


Starfire250MHz Ultra SPARC II × 32CPU、
1 次キャッシュ16+16KB(I+D) 、2 次キャッシュ1MB 、
4GB Memory via X-Bar SW.
Ultra5333MHz UltraSPARC IIi
1 次キャッシュ16+16KB(I+D) 、2 次キャッシュ2MB 、
128MB Memory
VX-E2.4GFLOPS、2GB Memory


図3 の左縦軸にUltra5 の測定結果、右縦軸にVX-E の測定結果を示す。中央は自動並列化コンパイラ(Sun Fortran77) を用いたStarfire による測定結果であり、横軸が使用CPU 数、縦軸が演算速度となっている。Ultra5 、VX-E は、1CPU でのMop/s 値を、Starfire では、自動並列を行い、それぞれのCPU 数におけるMop/s 値を示す。Ultra5 では、Starfire と同一のSun Fortran 77 とコンパイルオプションを用いているが、キャッシュ値だけはUltra5の仕様に合致させた。VX-E では、コンパイルオプションに-Kfast、VX -ilfunc を用いた。
 図3 より、CG は自動並列化の効果が非常に高いことが分かる。CG は、ループ内に依存関係が存在しないことがコンパイラにより容易に( 指示行なしで) 解釈され、自動並列化が行いやすいプログラムであるため、自動並列化によって高い効率が得られている。一方、SP 、MG は、ベクトル計算機(VX-E) で非常に高い性能が得られたが、スカラ計算機(Starfire、Ultar5) では、それほど高い性能は得られなかった。SP 、MG は、最内ループのベクトル長が長く、ベクトル計算に適したプログラムコードであるため、ベクトル計算機での実行時に高い効率が得られたものと推測される。


図4: NPB 結果(Class A)


 LU、BT、SP、MG は、CG よりも並列化の効率は低いが、8CPU 程度まででは並列化により実行速度が向上する。4CPU までの場合は、実行速度の向上は顕著である。これらのアプリケーションでは、本質的には並列化可能であるが、CPU 数が大きくなると、計算量よりも同期処理の時間が大きくなり、並列化効率が低下する。
 BT については、ベクトル計算機よりスカラ計算機の方が良い結果が得られているが、これは最内ループのベクトル長が非常に短いものが多く、問題量によってもそのベクトル長に変化がない。このためベクトル化の効率が低く、スカラ計算機での実行の方が良い結果が得られたものと考えられる。
 Starifre におけるFT では、CPU 数を増やすとむしろ演算性能が低下する現象が見られる。これは、FT コード自体が自動並列されにくいことと、自動並列されるとしても、多重ループでは変数の共有があり並列化できず、変数の共有が無い最内ループによる並列化が行なわれるため、実行時の同期遅延が多数入ることにより、CPU 数が増加した時の並列化効率が極端に低下するためと推測される。
 Starfire の1CPU とUltra5 を比較すると、CPU クロックがUltra5 の方が速く(250MHz と333MHz) 、また、CPU 当りの2 次キャッシュ容量がStarfire の1MB に対してUltra5 は2MB あるので、効率良く並列化できないのであればUltra5 の方が高速に実行できる結果 となっている。
 図4 は、図3 よりも計算規模が大きい( クラスA) 。そのため、FT、MG およびBT はUltra5の主記憶容量では計算出来ない。自動並列化の効果は、クラスW( 図3) とほとんど変わらないが、並列化効率については、LU、BT、SP、MG は、CPU 数が大きい場合でも、より高い並列化効率を得ることができた。また、VX-E では、BT 、FT を除いて、平均ベクトル長が長くなったため、計算効率が向上した。


図5: NPB 結果(Class B)


 図5 に Starfire上でさらに大きな問題(クラスB) を測定した結果を示す。問題サイズが大きすぎると1CPU での性能および全体のピーク性能が低くなる。これはデータがCPU のキャッシュに乗りきらず、キャッシュあふれが発生しやすくなるためだと考えられる。一方、CPU 数を増やした時の並列化効率は、問題サイズが小さい場合よりも良い傾向が見られる。1CPU 当りの処理性能が低下した分、並列化した場合の同期処理などのオーバーヘッドの割合が、見かけ上少なくなるからである。SP については、データをブロック化せずに計算を進めるため、ブロック化よりもデータの先読みが有効に機能するものと考えられ、問題サイズが大きい場合には高い並列化効率が得られている。

[目次] [1ページ目] [前ページ] [次ページ] [質疑応答]