在MATLAB中强制分配parfor

时间:2015-11-11 00:46:47

标签: matlab parallel-processing

是否可以在MATLAB中强制parfor迭代次数?例如,如果循环是i = 1:1000,那么是否可以按以下方式分配它:

  

i = 1:250 --->核心1

     

i = 251:500 --->核心2

     

i = 501:750 --->核心3

     

i = 751:1000 --->核心4

1 个答案:

答案 0 :(得分:1)

您无法使用parfor执行此操作,但您可以使用spmdparfeval执行基本相同的操作。

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