Parfor loop slicing question.

조회 수: 3 (최근 30일)
andrew joros
andrew joros 2012년 1월 9일
Can someone tell me how to slice the array "data" that is within the parfor loop in the code below?:
parfor i=1:32 %fprintf('Now on year %d\n',i);
% data((1+(366*(i-1)):366*i),1)=1979+(i-1);
% data((1+(366*(i-1)):366*i),2)=1:366;
data((1+(366*(i-1)):366*i),3)=squeeze(motemp.TMIN(loni,lati,:,i));
data((1+(366*(i-1)):366*i),4)=squeeze(motemp.TMAX(loni,lati,:,i));
data((1+(366*(i-1)):366*i),5)=squeeze(mowind.WIND(loni,lati,:,i));
data((1+(366*(i-1)):366*i),6)=squeeze(moshum.DATA(loni,lati,:,i));
data((1+(366*(i-1)):366*i),7)=squeeze(morad.RADIATION(loni,lati,:,i));
end
FYI The array 'data' is 11712x15.
If you want to see the full code go here: http://pastebin.com/H3HEwAwR
Thanks and much appreciated.
I'm willing to paypal someone a little cash if they can help me out here.
  댓글 수: 4
Michael
Michael 2012년 1월 10일
Ah, that is tricky. The result would be 103936 .mat files? I would suggest running profiler to find where most time is spent (perhaps for 5-10 lat/long points) because I have a bad feeling the majority of it will be spent writing the large files to storage which would be considerably slower than any matrix reshaping done by the CPU (and would also probably not benefit from parallel architecture within the CPU).
andrew joros
andrew joros 2012년 1월 10일
Yes I will be making ~104k .mat files. I am thinking parfor wont be any fast than a regular for-loop. Right?

댓글을 달려면 로그인하십시오.

답변 (1개)

Edric Ellis
Edric Ellis 2012년 1월 10일
Looking at your complete code, I would strongly recommend that you try to apply PARFOR to the outermost loop that gives you sufficient parallelism (i.e. has at least as many iterations as you have workers). This is generally the most efficient. It looks to me like either of the 2 outermost loops would be reasonable candidates.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by