Path: coconuts.jaist!wnoc-tyo-news!news.nc.u-tokyo.ac.jp!makino From: makino@chianti.c.u-tokyo.ac.jp (Jun Makino) Newsgroups: fj.comp.parallel Subject: Re: How does HPF optimize ? Date: 04 Jun 1997 08:58:25 GMT Organization: College of Arts and Sciences, Univ. of Tokyo Lines: 50 Message-ID: References: NNTP-Posting-Host: muscat.c.u-tokyo.ac.jp In-reply-to: kubota@kuis.kyoto-u.ac.jp's message of 03 Jun 1997 18:19:11 +0900 Xref: coconuts.jaist fj.comp.parallel:918 >>>>> On 03 Jun 1997 18:19:11 +0900, kubota@kuis.kyoto-u.ac.jp (Atsushi Kubota) said: > 牧野先生: >> なるほど、コンパイラを作る方の視点からはそう見えるわけですね。使 >> う方だと、「ひょっとするとF77スタイルのコードもコンパイラが並列化 >> してくれるかもしれないけど、基本的には配列演算とか forall しか並 >> 列化しないのでは」という気分で使うので、、、 その、まあ、どうでもいいのですが、「先生」は御勘弁を。 > A, Bを配列だとして, > A = A + B > のようなコードばかりならいいのですが, > A(10:19) = A(1:10) + B(1:10) > などの場合は重なる部分(この場合A(10))を検出する必要が出てくるので, > 配列演算やforallなら並列化は容易というわけにはいきません. これは「並列化」が難しいというよりは、シーケンシャル実行するとき に意味を変えずに効率のあまり悪くないコードをだそうとするとややこ しいということですよね?右辺値を全部計算して、どこかに一旦しまっ てから左辺に入れるようなコードなら一応「並列化は容易」であるよう な気もします。 もちろん、実際の、有限のCPU台数の計算機上で十分最適化されたコード を出すってこと全体を「並列化」というなら、それが簡単ではないとい うのはおっしゃる通りだと思います。 > HPFのコンパイラなら,配列演算とforallだけってことはないと思います. > また,SMP用の並列化コンパイラでも,配列演算とforallを並列化できるのな > ら,わりと素直なDOループは並列化できると思いますよ. うーん、まあ、できるはずってのはおっしゃる通りなのですが、だから やってくれるかっていうとそうではないってことはあるようです。実際 にSMP用のコードを出す F90 処理系というのは DEC F90 しかいじったこ とがないのですが、これは配列演算だけだったりします。あと、HPF っ てわけじゃないけど CM-Fortran も少なくとも僕が仕様をしっているの はそうでした。 日本のメーカーの場合はベクトル化コンパイラでの技術の蓄積があるか ら、配列演算だけなんてことはないと思いますが、海外の会社はなかな か。 牧野@東大駒場