EICニュースレターNo.15

本号の目次
◇ 地震調査委員会の動向-大震災から5年  (阿部勝征)  

◇ 台湾集集地震現地見聞録           (菊地正幸・山中佳子)

◇ 並列計算いろは(その2)            (檜山澄子)

◇ センターからのお知らせ             (檜山澄子)



地震調査委員会の動向 ― 大震災から5年

 1995年1月の阪神・淡路大震災は私どもに大きな衝撃を与えました.とりわけ,一般の人へ「関西に大地震は起きない」という誤解を与えてしまったことや地震予知に期待をもたせすぎたことに反省させられました.観測データが広く流通していなかったことなどもあげられます.地震予知に関わる観測や研究の成果を災害の軽減に役立てるという視点が欠けていたのです.

 予知よりも防災に重点を置いた地震防災対策特別措置法が震災直後に成立しました.それにより,地震調査研究推進本部がつくられ,そのなかに政策委員会と地震調査委員会が設置されたのはご承知の通りです.その後の調査委員会の主な活動は次の通りです.
 (1)毎月定例の会合を開き,全国の地震活動の現状を評価しています.また,大きな地震や群発地震が発生したときには臨時会を開いています.99年12月までに,52回の定例会と10回の臨時会が開かれました.
(2)地震の正しい知識を普及するために,「日本の地震活動 ―被害地震から見た地震活動の特徴―」を刊行しました.
(3)長期的な観点から全国の地震発生の可能性について評価手法を検討しています.
(4)余震発生確率の評価手法をとりまとめ,今後それを実際に適用することにしました.

 国として一元化した観測データから地震活動を評価する仕組みができ,評価結果は国民や防災機関などに発表されています.しかし,なかにはなじみにくい評価結果もあります.たとえば,地震発生の可能性を確率で表すのがその例です.

 本質的に大きな不確定さを伴う地震発生は確率論的に取り扱わざるをえないのですが,「情報をどう活かしたらいいのか分からない」という困惑の声も聞かれます.地震確率は未経験の防災情報なのですから,情報の出し手・伝え手・受け手が一緒になって知恵を出し合うことも必要です.

 地震調査研究の成果が効果的に活用されるにはどうしたらよいかを検討するために,政策委員会のなかに新たに「成果を社会に活かす部会」が設けられました.
[阿部勝征]


1995年1月、神戸航空写真


        台湾集集地震現地見聞録   
先日1月10〜15日、観測センターの武尾実教授・井出哲助手らに同行し、台湾を訪問してきました。昨年9月21日の集集大地震(現地のポスターでは"世紀末的震撼")について、台湾の研究者との意見交換、強震計設置状況の把握、車籠埔断層周辺の観察などが主な目的でした。この間、中央研究院の顔(Yen)教授と黄(Huang)博士には、現地案内や討論会の設定など、あらゆる面でお世話になりました。また、一緒に行った大学院生の呉(Wu)さんは現地で通訳・説明など大活躍でした。 


 集集地震の1つの特徴は、震央周辺及び南部では揺れが激しく断層すべり量は小さめであるのに対し、北部では加速度は小さめで速度及び断層すべり量が大きいことです。このことは研究者のほぼ一致した見方ですが、解釈(地下の震源断層)についてはまだコンセンサスがありません。反射法探査、余震分布、波形解析のそれぞれから推定される「震源断層」が一致していないというのが現状です。


 また、北部でなぜ滑らか且つ大きな断層すべりがあったのかについて議論がありました。筆者のひとり(菊地)は長さ数kmの範囲で地滑りのようなことが起こっているのではないかと考えていましたが、それをサポートする証拠は見つかりませんでした。断層運動の進行に伴い、断層面の融解ないし液圧上昇による摩擦低下が起こったのではないかとする考えもあります。


 昨年末に中央気象局から数百地点の強震計データがCD-ROMの形で全世界の研究者に提供されました。高密度強震計ネットワークは中央気象局と大学(中央大学院、国立中央大学、国立中正大学)の共同で管理運営されているとのことです。この豊富な強震計データをはじめ、GPSデータ、及び、今後のボーリング調査、物理探査などにより、ひとつひとつ実体が明らかになり、その研究成果は必ずや今後の地震災害軽減にフィードバックされるものと期待されます。


 なお、我々が地震直後に立ち上げたHPの緊急台湾地震特集が現地でそれなりの役割を果たしたことを知ることができました。これは今後の我々の活動に大きな励みとなるものです。
  

                                        (菊地正幸・山中佳子)

現地写真集へ


並列計算いろは(その2)
前回は,並列計算機にはメモリアクセス方式により大きく分けて3つのタイプがあり,その中でEIC計算機(Origin 2000)は,メモリ共有型の並列計算機であり,自動並列化の機能がそなわっていることをお話して来ました.今回はその自動並列化機能についてお話しましょう.

2つの行列の積を求める場合を例として取り上げてみましょう.Fortranで プログラムを書くとプログラム1,2のようになります.
dimensiona(1000,1000),b(1000,1000),
/ c(1000,1000)
parameter(n=1000,m=1000)
do 5 j=1,m
do 15 i=1,n
a(i,j)=i+j-1
b(i,j)=i-j+1
15 continue
5 continue
call mul(a,b,c,n,m)
write(6,100)c(1,1),c(n,m)
100 format(祖(1,1)=,e15.6,
/ c(1000,1000)=,e15.6)
end
                      プログラム 1 main.f

1:  subroutine mul(a,b,c,n,m)
2: dimension a(n,m),b(m,n),c(n,n)
3: do j=1,m
4: do i=1,n
5: s=0.0
6: do k=1,n
7: s=s+a(i,k)*b(k,j)
8: end do
9: c(i,j)=s
10: end do
11: enddo
12: end
                   プログラム 2 mul.f

 これら2つがともにファイルtest1.fに入っているとしましょう.このtest1.fを自動で並列化して実行するためには,自動並列化オプション-apo(Automatic Parallelization Option)を付け,

f77 -O3 -apo -o test1 test1.f

としてコンパイルすれば良いということはもうご存知ですね.ではこの並列化オプション-apoは何をしているのでしょう.それを調べるために,プログラム2のmul.fを以下のようにコンパイルしてみましょう.

f77 -O3 -apo keep -c mul.f @ (Cの場合はcc -O3 -apo keep mul.f)
f77 -O3 -apo list -c mul.f A (Cの場合はcc -O3 -apo list mul.f )

すると @ではmul.mというファイル,Aではmul.listというファイルが出来てきます.それらの内容はプログラム3とプログラム4です.
CSGI$ start 2
C$OPMPARALLELDOif(((DBLE(_mp_sug_numthreads_func$())*((..
C$& ,sharedゥ,private(j,i,k),shared(a,b,n,m,c)
do j=1,m,1
CSGI start 3
do i=1,n,1
c(i,j)=0.0
do k=1,n,1
c(i,j)=(c(i,j)+(a(i,k)*b(k,j)))
               プログラム 3 mul.m

Parallelization Log for Subprogram mul
3:PARALLEL (Auto) mpdomul_1
4:Not Parallel
Loop is contained within a parallel constract
6:Not Parallel
Loop is contained within a parallel constract
                   プログラム 4 mul.list

このように-apo オプションを付けてコンパイルすると,自動並列機能でプログラムが解析され,並列化が出来るところ(文番号3のDOループ)が並列化されたことが報告されます.また文番号4,6ではDOループが入れ子になっているので,並列化されなかった事も報告されています.

また,mul.mの方ではDO j=1,mの前にC$OPM paralel DO..が挿入されていることがわかります.このC$OPMで始まる文がOpenMPといわれている並列化を行うためのディレクティブです.つまり,-apoオプションをつけてコンパイルすると,コンパイラがプログラムを解析してOpenMP文をしかるべき場所に挿入してくれています.これを再コンパイルすれば,並列化されたコードの実行ファイルが得られます.このOpenMPは,各社ごとに作っていた共有メモリ型用並列化ディレクテブを共通化するために,1997年10月に作られたものです.最近ではこのOpenMPをサポートするコンパイラも増えて来ていますので,異なるマシーン間でのプログラムの移植性の問題も少なくなりつつあります.

ただし,このOpenMPが共通化されたディレクティブであっても,プログラムを解析し,最適な場所にこれを挿入する能力は,各社のコンパイラの解析能力によるわけですから,A社で並列化ができたからといって,B社のマシーンでパフォーマンスが得られるとは限りません.ではどうすればよいでしょうか?それには,このOpenMPを自分で(マニュアルで)ソースプログラムに直接書けばよいのです.次回からは,自動並列化の機能の助けを借りながら,OpenMPをどこにどのように書けばよいのかという具体的な話に入っていきましょう.
センターからのお知らせ

EICシステム再スタート時の状況自動通知について
障害やメンテナンスにより停止していたEICシステムを再スタートする時に,実行途中のNQSジョブ(バッチジョブ)のリカバリ状況を通知するmailが出されるようになりました.この通知mailは,下記の形式でジョブのオーナーに自動的に送信されます.

Your NQS job(1234) is RESTARTed due to system maintenance or other reason.

USERNAME:ユーザー名
JOB ID :番号
JOB NAME ::job名
QUEUE :クラス名

If you have a question about this notice, please contact eic_staff@eri.u-tokyo.ac.jp .

 左記の例で,ゴチックでアンダーラインされたところには,以下のいずれかの文字が表示され,それぞれ次の意味を持っています.
RESTART:ジョブはチェックポイント時点から再スタートした.
RERUN:チェックポイントがとれなかったため,ジョブは最初からやり直した.

  注意  

ジョブがRERUNした場合には,Fortran/Cプログラム中のOPEN文でstatus='new'としていますと,すでにでデータファイルが出来ているために,少し走った後,この点でエラーとなり終わってしまいます.

OPEN文でstatus='unknown'とすればとそれを避けることができます.statusを指定しないでおくと,EICシステムではデフォルト値の'unknown'が割り当てられます.
他システムのコンパイラでは,エラーになる場合がありますから,なるべくstatus='unknown'と明示するようにしましょう.