multithreading - Matlab多线程函数

标签 multithreading matlab

“排序”是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/

相关文章:

multithreading - 多线程对 IO-bound 操作有意义吗?

C# OpenFileDialog 线程启动但未显示对话框

xml - MATLAB-XML查找同级元素

c# - 托管代码 (C#) 与 Matlabs 和 C++ 的速度比较

python - 如何将参数传递给正在运行的Python线程

c++ - 递归互斥锁背后的想法

c++ - Linux C++串口读写

c - 如何级联两个二阶巴特沃斯滤波器

c++ - 错误 LNK2019 : unresolved external symbol

c - 通过 mex 函数返回 C 结构体