有限要素法プログラムのベクトル化の話       2004.01.21         前橋工科大学建設工学科 助教授 梅津 剛


ベクトル化率
こんな言葉がありました。いまじゃ、誰も言わないしドコにも転がっていません。
(いやまてよ、私が知らないだけで、実はどっかではやっているかも現役かも)

そして、実に短い寿命で、このベクトル化率なるものを気にしなければなら無いコンピューターは
消えうせていきました。やってるときは、長かったけどね。並列計算機にその地位を奪われましたな。

昔の思い出話です。
ベクトル計算機、パイプライン処理。浮動小数点演算を高速化する特殊なコンピューター。
HITAC810、うぁー懐かしい響きです。私は、820まで使用し、その後はどうなったか知らない。
今じゃあ、無いだろうなあ。

浮動小数点演算だらけの有限要素法のプログラムは、このパイプライン処理を備えた
スーパーコンピューターを上手に使えば、10倍以上速くなります。ただし、ベクトル化率は99.9%以上で。
でも、10倍程度、までしか速くなれません。98%ぐらいじゃ、たいして効かない。

それがネックだったんだね。
並列演算では、1000ノードも使えば、100倍以上の高速化が実現できます。
だから、並列マシンの登場で、「もういいや」ってなっちまった。

おかげで、私が苦労して開発したプログラムのベクトル化技法なんざぁ、もはやどの世界でも使えまい。

さて、パイプライン処理ですが、これは、差し棒です。いや、釣竿です。えーと・・・あとは、
あ、車のアンテナです。それから・・・んー、思いつかない。

実数の計算と整数の計算は、全く違うプロセスです。実数は、有効桁と小数点の位置、
それを揃えて足し引きする、そのプロセスが、何段階かに分かれます。

たとえば、タバコを吸うのに、
1段階 タバコをくわえて
2段階 ライターもって
3段階 火をつけて
4段階 吸う
(不健康な話だ)
という具合に、4段階有るとしましょう。
これが一つの浮動小数点演算のプロセスだと、しましょう。(不健康すぎてだめかな)

通常、4本のタバコをすうには、この4つの段階を、1から4までやってから、次のタバコを吸いますね。
パイプライン処理は、それを、なんと、不健康にも、せっかちにも、縮めてしまいます。

つまり
1本目のタバコをくわえて
1本目のためにライター持ったとき、2本目のタバコをくわえて
1本目のタバコに火をつけたとき、2本目のためにライターもって、さらに、3本目のタバコをくわえ
1本目のタバコを吸ったそのとき、2本目のタバコに火をつけ、3本目のためにライターもって、4本目のタバコをくわえる

ああ、想像しただけでも、煙い・・・・
と、こんな風に、複数の処理で実施される一つのプロセスを「効率的に」縮めるのがパイプライン処理です。
んで、このような処理を行うのは浮動小数点演算だけなので、整数演算には効きません。
イメージは、4段継ぎのつりざおを、「今日はつれなかったー」といって、縮めて短くするのと大変似ています。

これで、私は自分のプログラムを、10倍速くしました。でも、それが動くコンピューターは極少数。いまじゃないかも。

というわけで、昔の思い出話でした。

おしまい。時代物だしね。
(なんだ、不健康な話で終わりかよ)