2013-04-24 4 views
0

나는 MATLAB을 연구 중이다. MATLAB에서 병렬 컴퓨팅 도구 상자를 처음 사용했습니다. 코어 i3 프로세서, MATLAB R2011a, 2GB RAM, 320 하드 디스크가 있습니다.병렬 코드가 MATLAB의 병렬 컴퓨팅 도구 상자를 사용하는 순차 코드보다 시간이 오래 걸립니다. 왜?

속도를 계산하기 위해 다음 코드를 작성하여 병렬 코드가 순차 코드보다 더 오래 걸리는 것으로 나타났습니다.

첫 번째 코드는

2 코드 0.379056 초를 취하고있다 0.039763 초를하고있다.


첫 번째 코드 :

tic 
MM = magic(5); 
MN = magic(5); 
ML = magic(5); 
MP = magic(5); 
MK = magic(5); 
MM 
MN 
ML 
MP 
MK 
toc 

2 코드 : 내가 병렬 컴퓨팅 도구 상자를 배우고 싶은

matlabpool open local 4 

tic 
spmd % Uses all 3 workers 
    MM = magic(5); % MM is a variable on each lab 
end 
MM{1} 
MM{2} 
MM{3} 
MM{4} 
toc 
matlabpool close 

.

+2

더 큰 문제로 시도해보십시오. 아마도 병렬화의 오버 헤드는 그러한 작은 규모의 문제에 대한 속도 향상보다 비용이 많이 듭니까? – Dan

+0

또한 작업자에게 다른 작업을 시도하십시오. Matlab은 몇 가지 동일한 순차 작업에 대한 계산 속도를 높일 수 있습니다. –

답변

1

의견에서 Dan이 언급했듯이 병렬화가 도움이 되기에는 문제가 너무 작습니다. 예를 들어 5에서 5000으로 작성하는 magic 행렬의 크기를 늘리면 이미 명확한 개선이 이루어졌습니다. 즉, 크기가 클수록 병렬화의 오버 헤드는 하나의 행렬에 대한 계산 시간에 비해 (거의) 무시할 수있게됩니다.

+0

고마워,하지만이 4000000 행렬을 만들려고했지만 원하는 결과를 제공하지 않습니다. 나에게 적합한 코드를 제안 해주세요. –