“排序”是matlab(R2010a)中的内置功能之一,它利用了
多线程。当我在大型矩阵上使用“排序”时,
8个核心,我可以看到所有核心都已激活,但是报告了
每个CPU的使用率都不会超过25%。虽然我自己的openmp是“mex”
运用了所有核心。
有没有一种方法可以迫使Matlab使用全部?
提前致谢,
卡姆兰
最佳答案
这并不意味着代码中的线程一直都在工作,而在MATLAB中线程却工作得并不多。您可能在代码(#pragma omp barrier
)中的某些锁/互斥锁上旋转(主动等待),而matlab的线程可能正在休眠。效果是一样的-线程等待,但是在您的情况下,您将看到100%的CPU使用率。
MATLAB没有开关说“使用100%的CPU”。这由操作系统决定。如果线程有效,它们将运行。根据您的描述,我会说Matlab中的线程经常对 sleep 进行排序。
因此,无论MATLAB做什么,它至少都会尽力而为。如果您的速度几乎与matlab一样快,那就恭喜!对你有益 :)
关于multithreading - Matlab多线程函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13072936/