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の場合)うれしいのだが、
なんとなく、損した気分。