OpenCL 1.0

ヘテロジニアスシステム用並列プログラミング言語(平たく言えば、GPGPU用言語)として標準化が進められていた OpenCL のSpec 1.0 が先日公開になった模様。
基本的にはライブラリ+言語拡張で、ローレベルではあるがユーティリティ的なものを用意しているように見える。よく調べてみたい。

混沌としているマルチコア開発環境も、これで流れが決まるのかはたして・・・。

| | コメント (0) | トラックバック (0)

libstdc++ parallel mode

C++のSTLを、並列化アルゴリズムで実装したもの。
こういうのがぜひあればと思っていたけど、やっぱり作った人がいたか。
http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html

並列化技術が隠蔽されていないと一般には普及しづらいもんなぁ。
ただし、スレッド数が仮想化されていないシステムの場合(例えばCellの8個のSPEといった場合)、別のプロセスが同時に使ったりするとどうなるんだろう、というのが気になる。

| | コメント (0) | トラックバック (0)

ソフトウェアにもプロセス世代を!

CMOSに代表されるLSIは、新しいプロセスルールが開発されると、それと同時に性能もアップする(※)。
ここでいう性能は、速度だけではなくて、電力消費が含まれる。

だから、IA-32などに代表されるPC/PCサーバー用CPUは、プロセス世代の交代を意欲的に進めている。
もちろん、と同時にマイクロアーキテクチャの改良も行って、トータルでは毎年倍々の性能アップ・・・ここ最近は消費電力も向上させているわけだ。

※厳密に言えば「性能アップのマージンができる」ということだろう。

さて、ソフトウェアの方はというと、時代の要請するパラダイムに引きずられて必要な技術がコロコロ変わる。
当然といえば当然なのだが、特にここしばらくはマルチコア技術が広がっていくと考えられるから、要求される技術や知識もかなり難しく、ソフトウェア開発者の負担はますます増えるばかりだ。

ソフトウェアはC言語などで共通化されてはいるものの、これらの言語は動作モデルを含まない。
当然スレッドやMVCなどいろいろなフレームワークがあったりはするのだが、Javaであれ、VBであれ、ライブラリとして提供するのが普通である。

この方式は汎用である一方、時代に合わせてソフトウェアを毎回書きなおす必要があることを意味している。
しかし既存のソフトウェア資産を考えると書きなおしは量的にほとんど不可能になっている!

だから、ソフトウェアを書きなおすことなく、その下のレイヤーで「プロセス世代交代」を行える方法が求められるべきではないかと思うのだ。
ひとつのプログラムを「完結した形で」書いておけば、新しいパラダイム上でもその恩恵を受けつつ動作できる、という仕組みが、である。

これにはやはりVM的な動作でサポートすることが想像しやすい。
たとえば、盛り上がりつつある仮想化技術は一つの決定打になるかもしれない。
JavaもVMだけれど、そういう思想にはなっていないようだから難しそうだ。

最近、Cell/B.E.とか、TBBとかでプログラムを書いてみるのだけれど、すぐに変わるであろうスケーラビリティや帯域を気にしてキリキリやるのはどうにも不毛な気がして、そういう大きな仕組みにメスを入れられないかと考えてみる今日この頃なのである。

| | コメント (0) | トラックバック (0)

8コアの使い道

IntelがクアッドコアのXeon X5355/E5230を発表した。
デュアルCPUにすることで、8コア環境がパソコンでも実現できるようになった。
(Cellはあったけど個人用パソコンとしては買えない)

記事の中でいろんなベンチマークをやっているが、ほとんどの場合比較対象のXeon 5160(デュアルコア)×デュアルCPU=4コアとほとんど変わらず、せいぜい30%程度の差がついたのがCineBenchだけで、それ以外はむしろクロックの高い5160の方がスコアがいいくらいだ。

まぁ、Xeonを買うような人は高解像度ビデオのエンコードをガンガンやってる人なのかも知れないけど、マルチコアの使い方はこういうことじゃないと思うのだ。

ところで、私はエディタ10枚、プログラミングIDE2枚、ブラウザにPowerPoint、Excelと、ウィンドウを多数同時に開いて使うスタイルである。
え、めちゃくちゃだって?(^^;

もし上の15のアプリをシングルコアで時分割して動かすとすると、3GHzであっても200MHzずつだ。
しかし、デュアルコアの2GHzで使うとすると、266MHzずつになる。
例えクロックが低くてもマルチコアのほうがアプリは快適に動くはずなのだ!!

昔デュアルCeleronが流行したことがあったが、それを使っていた時はかなり快適だった記憶があるから、この計算もまんざら乱暴というわけでもないだろう。

そういうわけで、そろそろマルチコア環境に再入門したいなと思っている。
だが、今までのベンチマークはこういうあたりをうまく表せていないと思う。
ぜひマルチコアでのデスクトップ環境にマッチしたベンチマークも開発して欲しいなと思う今日この頃なのである。

| | コメント (2) | トラックバック (0)