2012-10-25 45 views
1

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

由于提前,

卡姆兰

+2

你的mex比MATLAB更快吗? – angainor

+0

不,稍慢。我不会在mex中进行任何预先排序。但所有内核的CPU使用率均为100%。 – user1641496

回答

3

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

MATLAB没有开关说'使用100%的cpu'。这由操作系统决定。如果线程有效,他们运行。从你的描述中,我会说在matlabs中的线程经常对睡眠进行排序。

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