我想在Matlab中并行运行矩阵乘法代码。我已经为它编写了顺序代码。我使用'spmd'方法并行运行它。但是,并行代码的执行时间多于顺序代码。我的座右铭是减少并行运行代码的执行时间。 我不想使用Inbuilt函数进行乘法,因为我想删除for循环中的依赖项并运行它。我该怎么做?? 我试过停止代码.. 请帮帮我......
a=[1,2,3,4;5,6,7,0;8,9,10,11;12,13,14,15];
b=[1,2,3,4;5,6,7,0;8,9,10,11;12,13,14,15];
warning off all;
%Sequential code
tic
for i=1:4
for j=1:4
sum=0;
for k=1:4
sum=sum+(a(i,k)*b(k,j));
c(i,j)=sum;
end;
end;
end;
time1 =toc
%parallel code
matlabpool('open');
tic
spmd
for i=1:4
for j=1:4
sum=0;
for k=1:4
sum=sum+(a(i,k)*b(k,j));
c(i,j)=sum;
end;
end;
end;
end;
time2 =toc
我得到的输出是:time1为sequencecial,time2为parallel
矩阵
time1 =
0.0041
Starting matlabpool using the 'local' profile ... connected to 2 labs.
time2 =
0.6950
>>
答案 0 :(得分:1)
扩展评论而不是答案:
c
;已知代码建议动态创建矩阵比更新先前创建的矩阵要慢得多。请尝试c = zeros(grows,ncols)
开始。