2016-07-29 2 views
-2

나는 matlab에 의해 코드를 작성했고 병렬 컴퓨팅 도구 상자를 사용했습니다. 내 코드에 대한 자세한 설명 : matlab 및 병렬 병렬 유전 알고리즘을 구현하려고합니다. 컴퓨팅 도구 상자.parfor에 의해 병렬 코드가 병렬 버전보다 느린 것

구현했지만 문제가 있습니다. 즉 parfor와의 나의 병렬 코드는 연속적인 것보다 훨씬 느리다.

내 코드 :

tic 

for j=1:maxIteration 
    parfor i=1:numIslands 
     if migrationInterval 
      doMigration; 
     end 
     doCrossover; 
     doMutation; 
     newSpring; 
    end 
end 
toc 

numIslands 항상 소수 (5 ~ 12) maxiteration는 항상 큰 숫자 (5000-1500) 가 내가 당신을 추천 당신에게

+0

내 컴퓨터에는 두 개의 코어가있는 CPU가 있습니다 – monir

+1

['gcp'] (http://www.mathworks.com/help/distcomp/gcp.html)'('nocreate')를 실행하면 무엇을 얻게됩니까? NumWorkers'? 루프 앞에 ['parpool'] (http://www.mathworks.com/help/distcomp/parpool.html)'(2);를 추가하면 타이밍 결과가 변경됩니까? –

+1

수영장 설정 방법에 대한 세부 정보를 제공해 주실 수 있습니까? 또한'migrationInterval'은 무엇입니까? 그것이 사실인지 거짓인지를 결정하는 것은 무엇입니까? – Matt

답변

0

감사합니다 좀 도와주세요입니다 "Run and Time"도구를 사용하여 기능을 실행하십시오. 그 이유가 부 절차 또는 귀하의 기능에있는 경우 결과가 표시됩니다. parfor 프로시 저는 불필요하며 장점이 없지만 항상 실행하는 함수에 달려 있습니다.

+0

감사합니다. "Run and Time"도구를 사용하기위한 참고 자료를 제공해 줄 수 있습니까? MATLAB R2012a에이 도구가 있습니까? – monir

+0

http://mathworks.com/help/matlab/matlab_prog/profiling-for-improving-performance.html - 프로파일 러 (또는 실행 및 시간) 도구 사용 방법에 대한 안내서입니다. – Valentin

0

CPU에 코어가 2 개 있다고합니다. 하나의 문제는 코드 그 자체 일 수도 있습니다. 함수 대신 스크립트를 호출하는 것처럼 보이므로 불필요하게 작업 공간을 넘치게 할 수도 있습니다. 또한, 그 스크립트 중 하나라도 즉시 변수를 선언하는 경우, RAM을 막히게 될 수 있습니다 (Matlab은 특히 그 점이 좋습니다) 따라서 코드 실행 속도가 느려집니다.

각 스크립트를 먼저 최적화하십시오.

스크립트 대신 함수를 사용하는 것이 좋습니다.