Subscribed unsubscribe Subscribe Subscribe

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の場合)うれしいのだが、

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