マルチプロセッサ向けソフトウェアパラダイムとは?(その2)
「マルチプロセッサ向けソフトウェアパラダイムとは?」で、今後はますますマルチプロセッサ技術が重要になると指摘した。
またありがたいことにいくつかトラックバックをいただいた。
「Cのような低レベルの言語で書いているのであれば、それもしょうがないと思うが、スクリプト言語で書いたようなアプリケーションであれば言語処理系でよきにはからって欲しいとも思う。例えば構文で繰り返しを発見したらそれを自動的に並列化するくらいの事をやってくれてもばちはあたらない。Fortranのような数値計算処理系だとDOループを自動的にパイプライン化したり並列化したりして性能向上をシステムがおこなってくれたりする。」
それなんて第五世代コンピュータ計画,と
ムーアの法則によりインテルの単一 CPU パワーの激増によって淘汰された超並列計算機アーキテクチャとプログラミングが,ムーアの法則の限界に直面し再び表舞台に復活するかもしれない,という歴史の皮肉.やはり時代を先取りしすぎだったのでしょうねぇ.
とのこと。
第五世代は論理型プログラミングだったけど、もちろん関数型言語やスクリプト言語でもかまわない。副作用のない言語だと並列性を発見した時の処理が素直に実装できるのでいく分有利かもしれない。
APLのような配列を簡単にあつかえる言語もいいかもしれない。PrologとかGHCとかKL1みたいな言語を勉強するのもいいかもしれない。
コンピュータアーキテクチャとして大規模並列マシンのコネクションマシン(プロセッサ数約6万)での経験より、
http://www.personal-media.co.jp/book/comp/062_f.html#part1
アルゴリズムの研究も必要である。ハロルドストーン(IBMワトソン研)はIEEE Computer誌にコネクションマシン上の文献検索アルゴリズムは一見高次の並列度を有しているように見えるが、インデックスを利用したシーケンシャルアルゴリズムを用いれば同じ主記憶サイズのたった1台のプロセッサで実行した方が速いという結果を詳細に導きだしている。このように必ずしもプルートフォースなアプローチで並列度が出たと喜んでいてもすぐ足をすくわれかねない。
並列度を生かすアルゴリズムの研究がかかせない。つまり並列度を構文的に発見できたとして、それを単にプロセッサにはりつけているだけではだめだったりするのである。
実装においても、いろいろな工夫が必要かと思うが、まだまだこれからの世界だと思う。
Pugsでの実装例
Parallel Scripting Now!
% /usr/bin/time pugs -e '(1..100000).>>sqrt'
9.27 real 9.09 user 0.13 sys
% env GHCRTS=-N2 /usr/bin/time pugs -e '(1..100000).>>sqrt'
5.79 real 6.92 user 0.15 sys
More SMP parallelism.
デュアルぐらいではパラダイムはシフトしがたい
Rubyのまつもとさんのブログより
20XX年のユビキタス、ロボット、Web/Tech総研
プログラミング言語も超メニーコアの時代になって、 1PCに65536個くらいCPUが載るようになると並列性を人間に取り扱える形で(つまり、あまり見せないように)、取り扱える言語が求められるようになり、 FORTRANのベクトル化技術に類似するものが復権してスクリプト言語を含めて広く利用されるようになる。
か、並列化が行いやすい副作用のない関数型言語が今とは別の意味で注目される。





コメント