让我们考虑以下代码
tic;
y=zeros(1000,1);
for n=1:1000
z=randn(n);
y(n)=max(svd(z));
end
plot(y);
toc
通知
SVD_without_parallel
Elapsed time is 84.722488 seconds.
现在我决定并行运行这个程序,首先,我已经在我的计算机上创建了最多的工作人员
N = maxNumCompThreads
Warning: maxNumCompThreads will be removed in a future release. Please remove any instances of this
function from your code.
> In maxNumCompThreads (line 26)
N =
4
parpool('local',4)
并运行以下代码
tic;
y=zeros(1000,1);
parfor n=1:1000
z=randn(n);
y(n)=max(svd(z));
end
plot(y);
toc
通知我
SVD_with_parallel
Elapsed time is 94.041680 seconds.
你可以告诉我这是什么原因吗?这意味着当我们只有一个循环时,matlab中的并行编程无效吗?我该如何优化给定代码?