我想在 Matlab 中并行运行矩阵乘法的代码。我已经为它编写了顺序代码。我已经使用“spmd”方法并行运行它。但是,并行代码的执行时间比顺序代码多。我的座右铭是减少并行运行代码的执行时间。我不想使用内置函数进行乘法运算,因为我想删除 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 用于顺序,time2 用于并行
矩阵
time1 =
0.0041
Starting matlabpool using the 'local' profile ... connected to 2 labs.
time2 =
0.6950
>>