我有两台计算机和一个有效的MATLAB代码。
1)在一台计算机上,包含parfor的行执行并行计算,如预期的那样。
2)在另一台计算机上,parfor执行就好像它是一个普通的for循环,没有任何并行化。即使是并行地询问两件事情,也会发生这种情况。
在两台计算机上都没有代码错误。
到底是怎么回事?
默认情况下,MATLAB使用并行池中的可用工作线程。 [...]您可以使用
parpool
覆盖并行池中的默认工作数。当池中没有工作者或M
为零时,MATLAB仍然以非确定性顺序执行循环体,但不是并行执行。在测试代码时,使用此语法在并行和串行执行之间切换。
因此,如果一台计算机没有可用的工作程序,则循环执行顺序。