为了运行时的好处,我目前正在尝试并行化我的脚本。
我的代码包括一个片段,当以非常抽象的方式表示时,它具有以下形式:
x=zeros(5,1);
y{1}=[1; 3; 5];
y{2}=[2; 4];
parfor i=1:2
x(y{i})= func(y{i});
end
因此,我希望不是按顺序填充变量x
的索引,而是以并行的方式填充。然而,这给了我以下错误:
The variable x in a parfor cannot be classified.
要分配的索引总是不相交的(例如示例[1; 3; 5]
和[2; 4]
(,即在并行运行期间不会发生条目的重写,否则会危害非顺序处理。
是否有其他方法可以重新表述此功能?
我会使用structs,因为输出大小正在变化。
x=zeros(5,1);
y{1}=[1; 3; 5];
y{2}=[2; 4];
parfor i=1:2
temp{i}= sin(y{i});
end
for i=1:2
x(y{i})=temp{i};
end