matlab parallel computing toolbox

(1) parfor の威力は甚大である。

大きなループ、すなわちその内部で計算量を要するループ、があれば、

そのforをparforにかえるだけで、複数のプロセスによる並列計算が

行える。

 

その方法の素晴らしい点は、forをparforに変える以外に、プログラム

を改変しなくてよいという点にある。過去につくったライブラリなど

の内部の修正するは事実上不可能である。無理に改変すれば、そこ

にバグに入り込んでしまい保守性が著しく低下してしまう。parforは

ライブラリを呼び出す側のみの変更で済むので適用範囲が広い。

 

parforを使うには、for文による繰り返しがあり、繰り返し実行される命令が、

それぞれ独立していいて、計算結果に依存関係がないことが必須である。

当然ながら、parforのなかにおかれる手続きは計算負荷の高いものでなけれ

ばならず、計算負荷が軽いとparforのオーバーヘッドが重くのしかかりかえって

遅くなる。その意味では、繰り返し回数は少なく、計算負荷が大きい場合に、

むいている。

 

(2) macをつかっていて残念な点が二つある。

toolboxはgpuもまた利用できるようになっているのだが、

gpuの種類の違いからmacの場合はこれができないことが一点。

ただこれは、もしgpuを使おうとすると結構大幅なソースの書き換えが必要となり、

実質的にそれが難しい場合が多いから、かえってよかったかもしれない。

 

もう一つは、parforで並列計算するとき、プロセスの数はcpuのコア数と同じ

になり、hyper-threadは使えないということ。cpuの負荷を眺めても50%まで

しかあがらない。もちろんtoolboxがなければ10%程度をうろうろしていたのであり、

パフォーマンスが5倍あがったのだから(quad coreの場合)うれしいのだが、

なんとなく、損した気分。