【发布时间】:2016-02-02 18:24:40
【问题描述】:
考虑 MATLAB 中的以下代码:
function parallelProblem
N = 10;
A = rand(N);
parfor i=1:N
for k=2:N
A(i,k) = f(A(i,k-1));
end
end
end
function y=f(x)
y = x;
end
这是我正在处理的有问题的代码的摘要。基本上这个想法是这样的:我必须变量i和k并且我可以在不同i之间没有通信的情况下执行我的计算,但是k的不同值之间的通信是必需的。
因此我想在i 上并行化循环。但是,对于上面的代码,我得到了错误
parallelProblem
Error: File: parallelProblem.m Line: 6 Column: 9
The variable A in a parfor cannot be classified.
See Parallel for Loops in MATLAB, "Overview".
将鼠标悬停在单词 parfor 上(带下划线)给出
The PARFOR loop can not run due to the way the variable 'A' is used.
悬停在f(A(i,k-1)) 上会给出
Valid indices for 'A' are restricted in PARFOR loops
和
In PARFOR loop, variable 'A' is indexed in different ways, potentially causing dependencies between iterations.
从直观的角度来看,我认为没有理由让代码并行工作。有什么办法,我可以修改我的代码以获得所需的结果?
【问题讨论】:
标签: matlab parallel-processing parfor