0

私は、さまざまな照明条件の下で適応型の全自動セグメンテーション アルゴリズムに取り組んでいます。このアルゴリズムのコアは、粒子群最適化 (PSO) を使用してファジー システムを調整し、非常に時間がかかると信じています :| たった 5 個のパーティクルと 100 回の反復で、2 ~ 3 時間待たなければなりません。100 枚以上の写真を含むデータ セットから 1 つの画像を処理しているだけです。

Intel coer i7-2670Qm @ 2.2GHz //8.00GB RAM//64ビットオペレーティングシステムを搭載したmatlab R2013を使用しています

問題は次のとおりです。プログラムを開始すると、CPU の 12% ~ 16% しか使用されず、コアが 1 つしか機能しません!!

私はたくさん検索して matlabpool に入ったので、この行をコードに追加しました:

matlabpool open 8

プログラムを開始すると、タスク マネージャーは 98% の CPU 使用率を示しますが、それはほんの数秒間です。その後、CPU 使用率は 12 ~ 13% に戻りました :|

このコードをより速く実行する方法を知っていますか?!

4

3 に答える 3

2

12 パーセントは、Matlab が 1 つのスレッド/コアのみを使用しているように聞こえますが、これは全負荷で使用されていますが、これは正常です。

matlabpool open 8それだけでは十分ではありません。これはワーカーを開くだけです。それらに作業を割り当てるには、parfor などのコマンドを使用する必要があります。

于 2013-10-27T09:10:41.670 に答える
1

ダニエルの提案に加えて、PARFOR を適用するには、反復が独立しているアルゴリズムで時間のかかる FOR ループを見つけて、それを PARFOR に変換するのが理想的です。一般に、PARFOR は、可能な限り最も外側のレベルに適用すると最適に機能します。また、並列処理を追加する前にシリアル コードを最適化するために、MATLAB プロファイラーを使用する価値もあります。

于 2013-10-27T10:24:33.263 に答える