1

「sort」は、マルチスレッドを利用する matlab(R2010a) の組み込み関数の 1 つです。8 コアのマシンで大規模なマトリックスで「並べ替え」を使用すると、すべてのコアがアクティブになっていることがわかりますが、それぞれの報告された CPU 使用率は決して 25% を超えません。私自身のopenmp「mex」はすべてのコアを完全に採用しています。matlab に all を強制的に使用させる方法はありますか?

前もって感謝します、

カムラン

4

1 に答える 1

3

これは、コード内のスレッドが常に機能しているという意味ではありませんが、MATLAB のスレッドはそれほど機能していません。#pragma omp barriermatlab のスレッドがスリープしている間に、コード ( ) 内のいくつかのロック/ミューテックスでスピン (アクティブ待機) することがあります。効果は同じです-スレッドは待機しますが、あなたの場合、100%のCPU使用率が表示されます。

MATLAB には、「CPU を 100% 使用する」というスイッチがありません。これはOSによって決定されます。スレッドに作業がある場合、スレッドは実行されます。あなたの説明から、matlabs のスレッドは頻繁にスリープ状態になると思います。

そのため、MATLAB が何を行うにしても、少なくともできる限りのことをしようとします。matlab とほぼ同じ速さの場合は、おめでとうございます。よかったね :)

于 2012-10-26T06:19:43.600 に答える