【发布时间】:2018-11-03 03:41:13
【问题描述】:
我目前正在尝试并行化我的脚本以获得运行时优势。
我的代码包含一个段,当以非常抽象的方式表示时,它具有以下形式:
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]),即在并行运行期间不会发生条目覆盖,否则会危及非顺序处理。
是否有其他方法可以重新构造此功能?
【问题讨论】:
-
MATLAB 无法提前知道您应用的拆分是不相交的。你需要明确这一点。例如,将输出收集到一个元胞数组中,并在完成处理后将它们重新组合成
x。
标签: matlab parallel-processing parfor