是否可以在MATLAB中强制parfor迭代次数?例如,如果循环是i = 1:1000,那么是否可以按以下方式分配它:
i = 1:250 --->核心1
i = 251:500 --->核心2
i = 501:750 --->核心3
i = 751:1000 --->核心4
答案 0 :(得分:1)
您无法使用parfor
执行此操作,但您可以使用spmd
或parfeval
执行基本相同的操作。
在parfeval
中:
for fidx = 1:4
range = (((fidx - 1)*250)+1):(fidx*250)
f(fidx) = parfeval(@bodyFcn, 1, range);
end
在spmd
:
spmd
for i = drange(1, 1000)
...
end
end
有关drange
的文档,请参阅http://www.mathworks.com/help/distcomp/using-a-for-loop-over-a-distributed-range-for-drange.html。