A
,B
,C
:大小为100 x 1的单元格数组
A
的每个单元格都是矩阵。所有都有相同的尺寸
B
和C
包含向量。
我需要创建一个大小为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
需要一段时间?如果有人能给我一个小例子,我会很感激。
答案 0 :(得分:0)
看起来您的单元格数组都是sliced variables。这意味着它们不会向所有工人广播,只会向每个工人需要的那些部分广播。
因此,您可以安全地将for
替换为parfor
:
parfor i = 1:100
D{i} = my_func(A{i}, B{i}, C{i});
end