• 検索結果がありません。

Fortran コンパイラの自動並列化性能評価

N/A
N/A
Protected

Academic year: 2021

シェア "Fortran コンパイラの自動並列化性能評価"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

技術研究報告(東京大学地震研究所

)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 (Ve

r .  

3.0)

, 

CF 90 (Ve

r .  

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.0 

1 .

5  3.6 

あり

SPARC  C Ver. 3.0  7.4  6.6 

なし

表 1

AxB(N=1024)  1000 

企ー‑‑ーーー・ーー‑‑

100 

ωι 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)がなので総演算回 数は

2

n :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

こ.

(3)

Fortran

コンパイラの自動並列化性能評価

り ,組み込み関数,

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 。

n

g ω  

15 

10 

' ‑

cpu1 

6‑‑

‑ ‑

cpu2 

[2J 

テスト

2.

連立方程式を解く ( 単 精 度 部 倍 精 度 )

.  方法:連立方程式

Ax=b

で,A が

512

次および

1024

次の密行列の場合に

x

を求め,演算速度を比較する.算法 は行列 A を上三角と 下三 角行列に分解し,ガウスの消去 法で解くというごくありふれた方法を使用する.プログラ ムは

SDECOM

( 森 ,

1988)を」部修正して使った.これは Fortran 77

で書かれており,計算は単精度であるが,一部 に倍精度を使っている.

.  目的:純粋に計算部分の速度だけを 計測したテスト

I

の場合と異なり,行列の右辺およひ、左辺に数値データを代

AxN=512 

6‑

一ーーー圃園浜、

唯一‑ーー←

‑  

‑ ; (  

ープ‑‑ち

cpu3 

̲̲̲F77 

CF90

一 也 ‑apf77 

ー , ; ( ‑

'apf90 

cpu4  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

のと きの,各コンパイ ラの 自動並列化性能比較

(4)

澄・山中佳子

特に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台のと きに演算速度が最も速く,並列化の利点がまったくな

匹 二 回

YV 

¥ ベ ベ

1 .

1 .

1 .

1 . 2 

22 

...J 

0.8 

一 ←

apf77

G F77 0.6 

0.4  0.2 

cpu6 

月 二512

のときに,連立方程式を解く場合のド!動枚ダ

IJ

化性能比較 cpu4 

cpu3  cpu2 

cpul  図

4.

AX=bn=1024

̲̲apf77 

.口‑

F77  4.5 

3.5 

ω2.5 

1 .

。 目

5

cpu6 

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 を比較するために ,

~よ 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

積演算

apf77 

f77 

6.

(6)

桧山澄子・騰野 澄・山中作

f

の場合に

CPU

の台数を変化させて計算速度を調べた結果

を,図7,図8に示す.

ここでは

n二 512

の場合は,

CP

U1 

台のときがし、ずれのコンパイラについても最も効率がよ

く,それ以上に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

が断然速

同様にn=512

のとき,または単精度計算のテストでも,

apf90‑2の自動並列化の性能は最も優れており,次いでf 77

であった.

apf 90‑2

apf77‑2

に比べて非常に良いの は以下のような理由によると考えられる.

apf90‑2

のプリ

プロセッサはいったんFortran90を, Fortran 77のソー

N=512 

1.

的牛O=

0.5 

ー 一 一 一 一 一 一 一 → 宇

F :

"

  ‑‑':. ':":.:".‑週一

‑‑‑

:1: 

‑‑+‑177v3. 

apl771

‑吋トー177v4.0

‑‑

lI:apf772 

cpul  cpu2  cpu3  cpu4  cpu6 

7.

新システム・旧システムの

Fortran77コンパイ

ラの自動並列化性能比較

(n=512)

4.5 

3.5 

5 2 5  

1.5 

0.5 

cpul 

N=1024 

‑+‑ー177v3

。 目

apl771 tr177v4.0

・ 味 ‑apl772 

cpu2  cpu3  cpu4  cpu6 

8.

新システム・

IH

システムの

Fortran77

コンパイラの自動並列化性能比較

(n 1024)

(7)

Fortranコンパイラの自動並列化性能評価

Ax=bn=1024Double 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‑7

1 .   情報センター,

1997

, 

EICシステム利用法.

正式,

1988

,数値計算プログラミンク,岩波書庖,

52‑78. 

長 II~号雲兵・妹尾義樹,

1996

,科学技術計算のベンチマーク ,情報

処理,

37

, 

738‑744. 

二 宮

Ilj:.

,1

988

,ライブラリ ー ・プログラム利用の手引き,数値 計算編:

NUMPAC, 1, 213‑214. 

関口智嗣・小柳義夫,

1993

,スーパーコンピュータの性能評価の

現状,応用数理,

3

, 

27‑38. 

参照

関連したドキュメント

図に BS2000 における Intel Fortran 及び OSCAR によ り自動並列化した GMS の Intel Fortran

を見積もり,それがスレッド間で出来るだけ均 一になるように葉行列の分配を行っている.一

ときの影饗などは 、これからの研究課題である。 セントラルサーバーモデル 計算機システムの代表的モデルとして、Cel−tl・a・l

リング手法が開発されている.ループ並列化手法は大き

の母体となる を構成するノードの集 ,エッジの集合を とすると, と定義できる.

図に BS2000 における Intel Fortran 及び OSCAR によ り自動並列化した GMS の Intel Fortran

128 並列で達成できていることがわかる。プロセッサ 数が小さいときには

ここで,“ベクトル化による実行時間の短縮”と“並列化による実行時間の短縮”との相違を明確