Matlab에서 행렬 곱셈을위한 코드를 병렬로 실행하고 싶습니다. 나는 그것을위한 순차 코드를 작성했다. 나는 그것을 병렬로 실행하기 위해 'spmd'방법을 사용했다. 그러나 병렬 코드의 실행 시간은 순차 코드보다 큽니다. 제 모토는 코드를 병렬로 실행하는 실행 시간을 줄이는 것입니다. for 루프에서 종속성을 제거하고 실행하려면 Inbuilt 함수를 곱셈에 사용하고 싶지 않습니다. 내가 어떻게 해?? 내가 코드를 fallowing 시도 .. 이 저를 도와주세요 ..matlab에서 행렬 곱셈을위한 병렬 코드
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
내가 가진 출력했다 .. 병렬
매트릭스두고 순차적와 TIME2에 대한 시간 1
time1 =
0.0041
Starting matlabpool using the 'local' profile ... connected to 2 labs.
time2 =
0.6950
>>
시도 당신은 그런 사소한 예를 들어 어떤 개선을 볼 가능성이있어 SPMD –
후 틱을 넣어 : 당신은, 예를 들어,'10000x10000' matrces을'설정 A' 할 수있는'b' 시도해야합니다. 그러나 MATLAB을지지하는 BLAS 알고리즘은 매우 빠릅니다. 그건 그렇고, 내가 (당신의 질문에서 "종속성 제거"로 해석)이 일을하기위한 당신의 이유는 다소 불안정합니다 ... 병렬 컴퓨팅 툴박스는 단순한 매트릭스 곱셈보다 많은 의존성이 있습니다. – wakjah
나는 SPMD 후 tic을 넣으려고했는데, 그게 daint work – user1916616