2012-10-25 44 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一樣快 - 恭喜!對你有好處:)