1

“排序”是 matlab(R2010a) 中利用多线程的内置函数之一。当我在大型矩阵上使用“排序”时,在具有 8 个内核的机器上,我可以看到所有内核都已激活,但每个内核报告的 cpu 使用率从未超过 25%。虽然我自己的 openmp “mex” 完全使用了所有内核。有没有办法强制 matlab 使用 all ?

提前致谢,

卡姆兰

4

1 回答 1

3

这并不意味着您的代码中的线程一直都在工作,而在 MATLAB 中的线程并没有那么多工作。您可以在代码 ( ) 内的某些锁/互斥锁上旋转(主动等待)#pragma omp barrier,而 matlab 的线程可能正在休眠。效果是一样的 - 线程等待,但在您的情况下,您将看到 100% 的 cpu 使用率。

MATLAB 没有显示“使用 100% 的 cpu”的开关。这是由操作系统决定的。如果线程有工作,它们就会运行。根据您的描述,我会说matlabs中的线程经常对睡眠进行排序。

所以无论 MATLAB 做什么,它至少会尽力做到最好。如果你的速度几乎和 matlab 一样快 - 恭喜!对你有益 :)

于 2012-10-26T06:19:43.600 回答