正常循环比并行循环花费的时间少

时间:2017-02-03 14:14:55

标签: matlab optimization parallel-processing

让我们考虑以下代码

tic;
y=zeros(1000,1);
for n=1:1000
    z=randn(n);
    y(n)=max(svd(z));
end
plot(y);
toc

这个程序在我的电脑中有以下信息 enter image description here

通知

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中的并行编程无效吗?我该如何优化给定代码?

0 个答案:

没有答案