我目前正在尝试并行化脚本以获取运行时好处。
我的代码包括一个段,当以非常抽象的方式表示时,该段具有以下形式:
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]
),即在并行运行期间不会发生条目覆盖,否则会危及非顺序处理
也许还有另一种方法可以重新构造此功能?
答案 0 :(得分:1)
由于输出大小正在变化,因此我将使用结构。
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