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