与单元阵列的并行计算

时间:2017-09-08 20:07:18

标签: matlab matrix parallel-processing cell

ABC:大小为100 x 1的单元格数组 A的每个单元格都是矩阵。所有都有相同的尺寸 BC包含向量。

我需要创建一个大小为100 x 1的单元格数组D。序列代码如下所示:

for i=1:100
    D{i}=my_func(A{i},B{i},C{i});
end

其中my_func是一个函数,它接受矩阵和向量的输入,产生一个向量。

我想使用parfor(或spmd)来加快速度。但是,A的大小很大,因此我不想向所有工作人员广播A。有没有办法有效地做到这一点,因为my_func需要一段时间?如果有人能给我一个小例子,我会很感激。

1 个答案:

答案 0 :(得分:0)

看起来您的单元格数组都是sliced variables。这意味着它们不会向所有工人广播,只会向每个工人需要的那些部分广播。

因此,您可以安全地将for替换为parfor

parfor i = 1:100
    D{i} = my_func(A{i}, B{i}, C{i});
end