技術研究報告(東京大学地震研究所
)No.2,
1‑7頁 ,
1998年.
Technical Research Report (Earthquake Research Institute, Uni九ersityof Tokyo), No. 2
,
p. 1‑7,
1998.F o r t r a n コンパイラの自動並列化性能評価
桧山澄子*・鷹野 澄キ・山中佳子*
The Performance Evaluation f o r t h e Automatic P a r a l l e l i z a t i o n Option o f Fortran Compilers
Sumiko HIYAMA*, Kiyoshi TAKANO* and Yoshiko YAMANAKA*
Abstract
We carried out a series of benchmark tests to know the ability of automatic parallelization of four Fortran compilers : SP ARC Fortran 77, Cray Fortran 90, Apogee Fortran 77 and Apogee Fortran 90. We aimed to select the best compiler at the time of Operating System version up in the EIC computer.
These tests revealed that the best is Apogee Fortran 77, and the worst is Cray Fortran 90 among them.
Then we installed the Apogee Fortran 77 and Apogee Fortran 90 in the new‑OS instead of Cray Fortran 90.
After the new‑OS was installed
,
we again carried out the same benchmarl玉
testsfor Apogee Fortran 77, Apogee Fortran 90 and SP ARC Fortran 77 Ver. 4.0 under the new‑OS. The results showed that SPARC Fortran 77 (Ver. 4.0) is generally better than Apogee Fortran 77 and that Apogee Fortran 90 is the best for solving a linear equation.Key words: benchmark test
,
Fortran comρileκρerプ
ormance01 autom似た
ραrallelizationは じ め に
地震研究所に
EIC(Earthquake Information Center)計算機が導入されてから,
2.5年が経過した.
EIC計算機と は本研究所ではじめて導入した並列計算機である.導入後 時聞が経つにつれて,少しずつその性質がわかり,使用 k
の問題点がはっきりしてきた.
一般にユーザーが並列ジョブを実行する場合でも,ユー ザ自身がプログラム中に並列化のためのデレクティブを書 く こ と は ほ と ん ど な く , 通 常 は コ ン パ イ ラ の 並 列 化 オ プ ションによって, 自動的に並列化を行っている. したがっ て,計算機の運用効率を高めるには, このコンパイラの自 動並列化オプションの優劣が大きく影響する. しかし,使 用しているコンパイラの中で,
Cray Fortran 90(以下では
CF90と省略する)は,自動並列化の性能が低く,コンパイ ラ自身も巨大であり,その上複素数の倍精度(実数
4倍 精 度)が使えないなど問題の多いコンパイラである(桧 1 1 1
・長谷川,
1996;桧山
1996).したがって
Fortran90レベル
1997
年
9月
10日受付,
1997年
10月
28日受理.
本地震予知情報センター, (東京大学地震研究所)
ホEarthquakeInformation Center
,
(Earthquake Research Institute,
University of Tokyo)で こ れ に 代 わ る コ ン パ イ ラ の 導 入 を 検 討 す る 必 要 が あ っ た.
一方,
EIC計 算 機 で 使 用 し て い る
OSは , こ れ ま で は
Solaris2.3で あ っ た が , こ れ を
Solaris2.5に パ ー ジ ョ ン アップする予定があった.それにしたがって
SPARCFor‑ tran 77(以ド
F77と省略)コンパイラも,新しい
OSに対 応したものの導入を検討する必要が生じた.
我々はこの
3月に,
Apogee Fortran 77(以ド
apf77と 省略)および
ApogeeFortran 90(以下
apf90と省略)の 二種のコンパイラを
2逓間テスト導入して,これまで使用 していたコンパイラと共に,以ドに述べるベンチマークテ ストを行った.ベンチマークテストとは,性能評価テスト のことである. コンパイラを
Fortranに限ったのは,表
lに示したように,
EIC計算機利用の
90%が
Fortran言語であるからである.新しいコンパイラを導入する際には,
現 在 情 報 セ ン タ で 提 供 し て い る 二 種 の 数 値 計 算 ラ イ ブ ラ リ
,
LibSciお よ び
IMSLと リ ン ク で き る か ど う か を チェックする必要もある. このテストも併せて実施した.
テスト方法とその結果
従来から
EICシステムでサポートしているコンパイラ
F 77 (Ver .
3.0),
CF 90 (Ver .
l.0)と,テストのために導入
澄・山中佳子 桧山澄子・騰野
2
EIC における各コンパイラの利用状況(I 997.1~4 の 4 ヶ 月間)
コンノ
fイフ 件数の百分率
CPU時間の百分率 自動並列化機能
SPARC Fortran 77 V引 .
3.0 70.8 64.6あ り
Cray Fort ran 90 Ve
r . 1 . 0
20.3 25.3あ り
Apogee C Ver. 3.01 .
5 3.6あり
SPARC C Ver. 3.0 7.4 6.6なし
表 1
AxB(N=1024) 1000
企ー‑‑ーーー・ーー‑‑
s100
ωι oJ LZ
ロ
10ユーザプログラム,
LibSci,
rnatrnul関数による行列積演算の各コンパイラの並列化性能比較
CF90 apf90
apf77 F77
目的.自動並列化機能の優劣を比較し,また,
For‑ tran 90,
Fortran 77のプログラムに対する自動並列化の 機能を調べることを目的とした.
。 結果:次数 n
ニ1024の行列の積を作る演算に対し,
CPU4
台で行った場合の結果を図
1に示す.縦軸は対数日 盛による
Mfiopsの値である
Mfiopsは演算速度の目安
4砂
図1.
した
apf77,
apt 90との4コンパイラに対して,以下の
3つの場合についてテストを行い,演算速度, M~列化機能の 比較を行った.並列化機能を調べるためのベンチマークプ ログラムは各種あるが(長嶋・妹尾,
1996;関口・小柳,
1993)
,ここでは,始めから並列計算機を意識してプログラ ムされたこれらのベンチマークプログラムに頼らず,ユー
ザにとってより身近な行列の積と連立方程式の計算を用い で 秒 あ た り の 浮 動 小 数 点 演 算 回 数 を
100万四単位で表 したものであり,ここでは行列積を求めるための積和の演 算回数(積の演算がが,和演算が (n~l)がなので総演算回 数は
2n :Jと見なせる)を,時間
time(秒)
xl06で割ったも のである.つまり,行列の次数
ηに対し,
Mflopsニ2n3/(timeX106)
である. 同様に図 2 ,図 3 には
nニニ512,n
ニ1024の各場合 に対して
CPUの台数を変化させた時の,結果を図示した.
この場合も縦軸は
Mflopsである.
図1.から,以下の1) ~3) が結論付けられる.
1 )
Fortran 77で作ったプログラムに対しては,
apf77でコンパイルした場合がもっとも演算速度が速く,
apf90
によるものがその次に速い.
2) apf90
では,
Fortran 77で書かれたプログラムをコ ンパイルした場合と
Fortran 90でプログラムを作 f こ.
[ 1 J テスト1.
倍精度演算で行列の積を求める.
. 方法‑行列の積を求める演算を,各コンパイラの自動 並列化オプションを使って並列計算を行い,演算速度の比 較をする.並列計算は
CPUを
l台 ,
2台 ,
3台 ,
4台 ,
6台 を使ったそれぞれの場合を調べる.プログラムは次の
2つ のものを使用する. ひとつは
Fortran 77レベルで書かれたもの,もう一つは
Fortran90で書き,行列の積を求める ところは
Fortran90の組み込み関数
matmulを使用した ものである.計算はすべて倍精度演算で行い,時間は純粋 に行列積演算部分のみを計測する.
Fortran 77のプログラ ムは
NUMPACの
MULMMV(二宮,
1988)を使用することにし f
こ.Fortran
コンパイラの自動並列化性能評価
3り ,組み込み関数,
matmulを使用した場合とでは,
速度はほとんど変わらない. 一 方 ,
CF 90に対して
matmulを使うと極端に遅くなる.
3) LibSci
ライブラリを使用すると,コンパイラに関 係なく
apf90でも,
CF90でも非常に速い.
図 2 と図 3 からは以下の 4 ) が L 、える.
4)
次数 n が
512,1
024のとき,
CPUの数をふやしても
F 77,
CF 90はどちらも演算速度がほとんど変化しな い.
apf77とapf90は
CPUを増やすにつれ演算速度 が速くなるが,
CPU6台の場合にはかえって速度が落 ちる.
40
35
3 0
2 5
g 。
ng ω
15
10
' ‑
‑
cpu1
6‑‑
‑ ‑
‑
rcpu2
[2J
テスト
2.連立方程式を解く ( 単 精 度 部 倍 精 度 )
. 方法:連立方程式
Ax=bで,A が
512次および
1024次の密行列の場合に
xを求め,演算速度を比較する.算法 は行列 A を上三角と 下三 角行列に分解し,ガウスの消去 法で解くというごくありふれた方法を使用する.プログラ ムは
SDECOM( 森 ,
1988)を」部修正して使った.これは Fortran 77で書かれており,計算は単精度であるが,一部 に倍精度を使っている.
. 目的:純粋に計算部分の速度だけを 計測したテスト
Iの場合と異なり,行列の右辺およひ、左辺に数値データを代
AxB N=512
A
6‑
一ーーー圃園浜、
唯一‑ーー←
‑
‑
、 ‑
且
‑ ; (
ープ‑‑ち
cpu3
̲̲̲F77
・ロー CF90
一 也 ‑apf77
ー , ; ( ‑
'apf90cpu4 cpu6
図 2.n二512
のと きの,各コンパイ ラ の自動、;J
E列化性能比
t鮫
40
35
3 0
2 5
g 耳
つnιν1 5 1 0
〆》寸
•
cpu1 cpu2
Ax自信1024
一 ー 沸 ト ‑‑‑.
戸一ー一 ーーー‑‑)1(
cpu3
ト 一 一 一 一 ‑ ・
‑‑‑+‑‑F77
・口‑CF90
ー 古‑apf77 一刻々 apf90
cpu4 cpu6
図 3
,
nニ1024のと きの,各コンパイ ラの 自動並列化性能比較
澄・山中佳子
特にF77はCPUをふやすと速度の低下が大きく,
ス ワ ッ ピ ン グ の た め と 推 定 さ れ る .apf 77の方は CPU1台のときが最も速く, CPU2台ではいったん遅 くなる.さらにCPUを増すと,徐々に速くはなるが,
CPU1台のときにはおよばない.いずれの場合も apf 77の方が優れている.
2) n=1024の場合にはapf77には並列化の効果が表 われているが, F 77はCPU3台以上ではほとんと、並列 化の効果がない.CPU3台以上では, F77はapf77よ
り常に演算速度が劣る.
桧山澄子・騰聖
j入したり,条件数を出力したり,解の一部の数個を出力す る よ う な , 通 常 ユ ー ザ が し ば し ば 行 う 操 作 を 含 め た パ フォーマンスを調べることを目的とした.
。
結 果 : こ の 場 合 は 演 算 回 数 を シ3と見積もり,Mfiops二 2n3/(3X time X106)としている.
n=512, nニ 1024の場合を F77,apf77で行った結果を 図4.図5. に示す. ここから
次の結論が得られる.
1) n=512の場合は, F77, apf77ともにCPU1台のと きに演算速度が最も速く,並列化の利点がまったくな
4
匹 二 回
YV
︑
•¥ ベ ベ
1 .
81 .
61 .
41 . 2
22
o ...J
量
0.8一 ←
‑apf77・
G幽 F77 0.60.4 0.2
cpu6
月 二512
のときに,連立方程式を解く場合のド!動枚ダ
IJ化性能比較 cpu4
cpu3 cpu2
cpul 図
4.AX=b唱n=1024
̲̲apf77
.口‑
F77 4.53.5
ω2.5
8
J註
1 .
5。 目
5cpu6
n
二1024のときに,連立方程式を解く場合の自動並列化性能比較 cpu4
cpu3 cpu2
c p u l
図
5.5
SP ARC Fortran 77
の
3つの
For目そこで我々は, 新システム下で,
Ver 4.0
(以ド
f77V 4.0または
f77と省略し
Ver.3.0の
F 77と医別する)
Apogee Fortran 77/90(旧システム時代 のものは
apf77~ 1,
apf 90~ 1と略し,新システムドのもの は ,
apf77~2 , apf90‑2と略し区別する.)
tran
コンノ
fイラに志すし,旧システムで干?ったと同じテスト
lから
3を行った.
[1
J テスト
4.行列の積を求める計算をテスト
1と同様に行った. 図
lに対応して図
6に次数 n
二 二1024の行列の場合の結果を示 す.その結果,ライブラリ
LibSciを使う場合が,コンパイ ラと無関係に最も速いことがわかった.
User Prog (For田tran 77
で書いたプログラム)については,
f 77が最も速く なっている.数値的には ,
n=512のとき,
F 77で
19.17 Mflopsだった計算が
f77では
49.12Mflopsになり,また
η
二 1024では,
F 77で
18.05Mflopsだったものが,
47.52 Mflopsと約
2.5倍の速度向打こなっている.
[2J
テスト
5.連立方程式を解く場合で,テスト
2に対応するものを新 システムで行った.旧システムの
F77,
apf7 7~1 と新システムの
f77,
apf77~2 を比較するために , n~よ 512,
nニ1024 Fortranコンパイラの自動並列化性能
J判出
以ド
[3Jテスト
3.情 報 セ ン タ ー で 提 供 し て い る 数 値 計 算 ラ イ ブ ラ リ ー
(LibSci,
IMSL)に対し,
apf90と
apf77がリンク可能か どうかをしらべる.
. 結果:テスト1.で結果を得たように
LibSciとのリン クは問題がなかった. しかし
IMSLはリンクできなかっ た.
IMSLを利用するためには,
F77を残す必要があると 思われた.
以上のテスト結果から,我々は新システムに対し,
の
Fortranコンパイラを導入する方針をとった.
1) CF90
は提供を止め,代わりに
apf90を導入する.
2) F 77
に比べ
apf77の自動並列オプションは非常に 優れているので,新たに導入する.
3) F 77
は
Ver.4.0にパージョンアップしたものを導入 する.
それに
f半いコンパイ 新 シ ス テ ム に お け る テ ス ト
テ ス ト よ り 得 た 導 入 策
6
月に
OSを
Solaris2.5に変更し ラは去
2のようになった
.新システムで挺供されたコンパイラ一覧
三ロ三三ロ五口
変更・ハージョンアップ 自動並列化機能
SPARC Fortran 77 Ver 3.0一 一
>Ver.4. 0あり
Apogee Fortran77
新たに導入,
Ver.4.0あり
Apogee Fortran 90 CF90の代替新に導入,
Ver., 1 . ( ) あり
SPARC C Ver 3.0‑‑>Ver.4.0 Ver.4.0
以降あり
Apogee C Ver 3.0一 一
>Ver.1.0あり
表
2.Ax
B N=1024 1 0 0 0
1 0 0
的n
hD JL 2
i‑
・ ‑UserProg
; 一 口 一 間 t
刷 │ 企 ーL i b S c i 1 0
apf90
新システム上でのユーザプログラム,
LibSci,
rnatrnul関数による行ダ
JI積演算
apf77f77
図
6.6
桧山澄子・騰野 澄・山中作
fの場合に
CPUの台数を変化させて計算速度を調べた結果
を,図7,図8に示す.ここでは
n二 512の場合は,
CPU1
台のときがし、ずれのコンパイラについても最も効率がよく,それ以上にCPUが増加しでも,効率は変わらない.つ
まり並列化の利点は全く生かされていない しかし演算速
度は, f77が断然速い
.η=1024の場合は,新システムのコ
ンパイラの方が,旧システムのコンパイラよりいずれにつ いても速かった.
これはo s
自身のパフォーマンス向kが影響しているためと考えられる.
f 77以外のコンパイラ は ,
CPU台数が増加するにつれて,パフォーマンスが向上
するが, f 77では逆に遅くなる.
しかしこの場合でも他の2.5
コンパイラと比較すれば, f 77
がもっとも速い.
また,図9にはこの計算を倍精度,
一 部
を4倍精度 で 行った結果を示した.ここでは次の3つのコンパイラ, apf 77‑2, f77,
apf90‑2を用いて行っており,次数は
ηニ1024の場合について示している.この場合は
apf90‑2が断然速
L、
同様にn=512
のとき,または単精度計算のテストでも,
apf90‑2の自動並列化の性能は最も優れており,次いでf 77
であった.
apf 90‑2が
apf77‑2に比べて非常に良いの は以下のような理由によると考えられる.
apf90‑2のプリ
プロセッサはいったんFortran90を, Fortran 77のソーN=512
1.5
的牛O﹂比=
0.5
ー 一 一 一 一 一 一 一 → 宇
F心 :"
. ‑‑':. ':":.:".‑週一
‑‑‑
:1:‑‑+‑177v3. 0
ロ
apl77‑1‑吋トー177v4.0
‑‑
lI:‑apf77‑2cpul cpu2 cpu3 cpu4 cpu6
図
7.新システム・旧システムの
Fortran77コンパイラの自動並列化性能比較
(n=512)5 4.5
4 3.5
3 5 2 5
2 1.5
0.5
D
cpulN=1024
‑+‑ー177‑v3
。 目
ロ
apl77‑1 ー‑trー177‑v4.0・ 味 ‑apl77‑2
cpu2 cpu3 cpu4 cpu6
図
8.新システム・
IHシステムの
Fortran77コンパイラの自動並列化性能比較
(n二 1024)Fortranコンパイラの自動並列化性能評価 7
Ax=b唱n=1024,Double Pr配 ISlon
一+ーf77
園 口 ・
apf77‑ 也‑apf90
的n
LD JL
重
, 口 .. .
cpul cpu2 cpu3 C
肌
14 cpu6図
9. n=1024のときに,述立方程式を倍精度で解いた場合の性能比較
スコードに変換する.その後,
Fortran 77のプリプロセッ サが働いて,
Fortran 77の並列化したコードを山すという
2段構えである.従ってたとえプログラムがFortran77レベルで書かれていても,それを
apf90‑2でコンパイルすれ ばこのプリプロセッサが非常に優れた最適化した
Fortran 77のソースコードを出したために,
apf90‑2の方がよい結果を得たわけである.
apf77‑2,
apf90‑2はCPU台数が増 加するにつれて,パフォーマンスが向上するが, f
77では
CPUが6台になると逆に遅くなる.一般的には,次数の大 きな行列を取り扱う場合には,倍精度以上の計算が必要に なる.そういう意味でも,
apf90‑2が断然速いということ は,重視されるべきことである.
[3J
テス卜
6.数値計算ライブラリ
LibSciやIMSLにリンクして使えるか否かを調べる.結果は以下のとおりであった.
1) apf77/apf90とIMSLはリンクできなかった.
2) f 77
で自動並列化のための
‑autpar'オプションを 指定すると,
LibSciとのリンクエラーになる.1) Apogeeコンパイラ apf77
,
apf90とIMSLとのリンクのエラーは,テスト
3で述べたように, IMSLが
F77を 使ってコンパイルしたロードモジュールの形で導入されて いる 事実から,事前に予想は出来た.しかし,
2)について は全く予想外のエラーであった.
結 論 と 今 後
今回,一連のコンパイラの自動並列化機能のベンチマー クテストを行った結果,現在の新システムでは
f77 (Ver 4.0)はこのパージョンで改良され,優れた自動並列化の機
能を持っていることがわかった.また,たとえ
Fortran77レベルで書かれたプログラムでも
apf90でコンパイルす ると,テスト
5で示したように優れた並列化コードが出て いることも解った.テスト
6で よ
J三じた数値計算ライブラリ とのリンク・エラーは,
IMSLでは
f77を使い,
LibSciでは
apf77,
apf 90を使えば避けることができる. コンパイラ聞にそれほど大きな性能の聞きがないので, こうした使 い分けをしても問題はないと思われる.また,
CPUを何台に振り分けるかの指定は, f
77については4台程度が望ましいことも解った.そして,我々はこれらの結果をマニュ アル
IEICシステム利用法J (情報センター,
1997)に反映 させることができた.今後は更にベンチマークテスト用プ ログラムを拡充させ, システム更新の際や運用に利用する 予定である.
謝 辞:この一連のテストでは,日立
SEの高橋英司氏 には大変お世話になった. ここに御礼申し上げる.
文 献
桧山澄 f ,1
996,
IMSLライブラリのコンパイラ環境による並列化パフォーマンスの比較,第
71口!日本ビジ ュアルニ ュ ーメリッ クスユーザ会コンファレンス予稿集,
34‑40.桧山澄子・長谷川秀彦,
1996,並列計算機
CS6400における数似 計算ライブラリの現状と問題点,技術研究報告,
,1 65‑71 . 情報センター,
1997,
EICシステム利用法.森