SuperCon'95 本選配布資料 スパコンを使った高速化について 今回の問題では、速度を競っています。では、どうやって速さを稼いだらいいで しょう。方法がいくつか考えられます。その中で典型的な反応は、次のようなも のだと思います。 「パソコン等でぎりぎりまでチューンしてそれをそのままスパコンにもってくれ ば、自動的に速くなるだろう」という予測です。 この予測は正しいでしょうか? 残念ながら駄目です。 スパコンで速度を稼ぐには、「ベクトル化」と「並列化」の2つの機能を使う必 要があります。そこで次のような疑問がわくはずです。 (1)パソコン等で考えた「よい」アルゴリズムを単純にスパコンに持ってきた 場合と、(2)「単純な」アルゴリズムだけどスパコンでベクトル化、並列化を 意識してプログラムした場合、どちらが速いだろうか? 当然、よいアルゴリズムで、かつ、ベクトル化、並列化できたら一番速いに決ま っていますが、(2)もすてたもんではありません。 並列化の方は、CPUを9つ(最初12個といっていましたが、実際は9つです)使 えば9倍!速くなります。ただし、並列化の方は、なにもいわなければ勝手には やってくれません。 そこで、並列化とベクトル化の話しを少しします。 ======= 並列化 ======= (1)並列化するために、プログラム内に指示文を入れる必要があります。 たとえば、 for (i=p1; i