7

Ubuntuで実行されているラップトップがありIntel(R) Core(TM) i5-2410M CPU @ 2.30GHzます。Intel上記のプロセッサの Web サイト (ここにあります) によると、このプロセッサには 2 つのコアがあり、一度に 4 つのスレッドを並行して実行できます (2 つの物理コアがありますが、4 つの論理コアがあるため)。

開始matlabpoolすると、構成から始まり、local2 つのラボに接続されていると表示されます。これは、2つのスレッドを並行して実行できることを意味すると思います。CPUが実際に4つのスレッドを並行して実行できることを知らないのですか?

4

1 に答える 1

9

私の経験では、 のlocal構成はmatlabpool、既定では、論理コアの数ではなく、マシンが所有する物理コアの数を使用します。したがって、マシンでmatlabpoolは、2 つのラボにのみ接続します。

ただし、これは単なる設定であり、次のコマンドで上書きできます。

matlabpool poolsize n

ここnで、Matlab で使用するラボの数を示す 1 ~ 12 の整数です。

ここで、コメントの @RodyOldenhuis からの簡単な教訓のおかげで、私はもう少しうまく答えることができるという興味深い点に到達します。

ハイパースレッディングとは、特定の物理コアで同時に 2 つのスレッドを実行できることを意味します。もちろん、文字通り同時に処理することはできません。アイデアは次のようになります。スレッドの 1 つがタスクをコアに割り当てるのに非効率的である場合、コアはいくらかの「ダウンタイム」を示す可能性があります。2 番目のスレッドは、この「ダウンタイム」を利用して作業を完了できます。

私の経験では、Matlab は多くの場合、コアへのスレッドの割り当てが効率的です。したがって、1 つの Matlab スレッド (つまり、1 つのラボ) が実行されている場合、コアの「ダウンタイム」はほとんどない可能性があり、したがって、コアへの利点はほとんどありません。ハイパースレッディング。私のデスクトップは、4 つの物理コアと 8 つの論理コアを備えた core-i7 です。parforただし、ループを 4 つのラボで実行する場合と 8 つのラボで実行する場合の違いはほとんどありません。実際、8 つのラボでは、追加のラボの初期化に関連する起動コストが原因で遅くなることがよくあります。

もちろん、これはおそらく、Matlab に対して同時に実行している可能性のある他のプログラムなど、他の外部要因によってすべて複雑になります。

要約すると、Matlab に 4 つのラボ (または 12 のラボ) を初期化するように強制できたとしても、2 つのラボを超えるスピードアップは見られないというのが私の疑いです。プロセッサ。

于 2013-01-22T22:41:41.103 に答える