【发布时间】:2017-06-20 02:26:58
【问题描述】:
有没有一种简单的方法可以在 matlab 中编写一个 for 循环,使得低于一定次数 (n) 的迭代是一个正常的 for 循环,而高于这个阈值是一个 parfor 循环?
我想减少与创建并行池相关的开销。我尝试将工作人员的数量设置为 1(少于 n 次迭代),但开销仍然不可忽略。
【问题讨论】:
-
为什么不能用
if n > 100, parfor ... else, for... end包围所有内容,或者只是提前启动池? -
我考虑过这些解决方案..但我觉得它们并不令人满意..
-
您可能想澄清您对所需解决方案的期望,看看“琐碎的解决方案”(可能是唯一的解决方案)如何不够好......您是否考虑过其他一些部分你的算法可能比创建池更耗时?
-
1.该程序应该很快(至少开销很小)独立于之前启动的 parpool。 2.代码应该易于维护和扩展,因此我不想要重复的代码段。我想到了类似 parfor 的预定义修饰符(例如 parpool(1) 但这仍然会导致开销..)
标签: matlab for-loop parallel-processing parfor