matlab - 以编程方式确定是否在 parfor 与 for 循环内执行

标签 matlab parfor

在开发 parfor 循环时,通常最好从串行循环开始,以使用小数据集进行测试,然后添加“par”以扩展到大样本集等。串行运行时,获得关于以下方面的诊断信息非常好for 循环的每次迭代但是,当使用 parfor 循环处理大量数据集诊断信息时,应该关闭。

所以问题是:有没有什么方法可以通过编程检测是在 for 循环还是 parfor 循环中执行?这种方式可以像 if ~isParfor; fprintf(...);结束

最佳答案

您可以使用未记录的命令 feature('isdmlworker') 来确定代码是否正在工作程序上运行。如果在 worker 上运行,它返回 true,否则返回 false。请注意,虽然此命令已经存在很长时间并且看起来很稳定,但理论上它没有记录并且可能会发生变化。

或者,您可以使用文档化的 usejava('desktop'),如果您使用 MATLAB 桌面运行,它返回 truefalse 否则( worker 就是这种情况)。这非常接近于成为一名 worker ,只要您有时不在没有桌面的情况下运行 MATLAB 本身(即使用 -nodesktop 选项启动它)。

另请注意,如果您不启动工作池,parfor 会像 for 循环一样在本地运行,因此这两个都将返回 false - 我想这可能是您想要的,但无论如何都值得注意。

关于matlab - 以编程方式确定是否在 parfor 与 for 循环内执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26508880/

相关文章:

arrays - MATLAB:比较三个数组中的所有元素

java - 使用 matlab 或 java 的 144Hz 监视器的高帧率问题

ubuntu - 在 parfor 循环后 Matlab 变量为空

matlab - Simulink-Simulation with parfor(并行计算)

matlab - 防止 MATLAB 打开池

python - 如何在 Python 中使用 MATLAB 中的 unique(a, 'rows' )?

matlab - 如何在matlab中连接结构体和数组?

matlab - 如何在Matlab中使用匿名函数过滤数组?

matlab - Parfor切片变量导致Matlab崩溃

matlab - parfor 不打印