1

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

>> 
4

1 に答える 1