Matlab og multithreading

Skjámynd

Höfundur
ManiO
Besserwisser
Póstar: 3963
Skráði sig: Fim 08. Jún 2006 18:40
Reputation: 0
Staðsetning: Seltjarnarnes
Staða: Ótengdur

Matlab og multithreading

Pósturaf ManiO » Fös 19. Nóv 2010 14:37

Einhver hérna sem er über klár á Matlab og kann að forrita multithreaded scripts fyrir það? Er að forrita script sem að teiknar upp mandelbrot, og vill fá sem besta mynd, og næ ekki að nýta nema 24% af örgjörvanum.


"Knowledge is knowing that a tomato is a fruit,
wisdom is knowing not to put one in a fruit salad."

Skjámynd

Revenant
</Snillingur>
Póstar: 1034
Skráði sig: Fim 24. Jún 2004 12:36
Reputation: 132
Staða: Ótengdur

Re: Matlab og multithreading

Pósturaf Revenant » Fös 19. Nóv 2010 14:57

Matlab er "single threaded" by nature. Hinsvegar, þá eru nokkur functions í Matlab multicore aware að uppfylltum ákveðnum skilyrðum. Sjá: http://www.walkingrandomly.com/?p=1894

Ef þú vilt búa til alvöru multithreaded forrit, þá væri sniðugast að nota mex fæla (C / C++ / Fortran) eða nota java með skipuninni java (að mig minnir)



Skjámynd

Höfundur
ManiO
Besserwisser
Póstar: 3963
Skráði sig: Fim 08. Jún 2006 18:40
Reputation: 0
Staðsetning: Seltjarnarnes
Staða: Ótengdur

Re: Matlab og multithreading

Pósturaf ManiO » Fös 19. Nóv 2010 15:13

Verst er að ég er bundinn við Matlab í verkefninu sem ég er að gera. En ef einhver nennir að rýna í kóðann og sjá hvort að það sé möguleiki á að fínstilla hann til að auðvelda reikningana væru ábendingar vel þegnar. Þetta er í raun bara grunn kóðinn, er búinn að bæta slatta af "user inputti" t.d. að stilla fjölda ítrana og upplausn. Það er held ég bara for lykkjan sem gæti verið hægt að fikta í til að klippa út einhverja óþarfa reikninga.

Kóði: Velja allt

raunMin = -2;
raunMax = 1;
tvinnMin = -1.25;
tvinnMax = 1.25;


itranMax = 1000;


raunSkref = 15;
tvinnSkref = 15;


raunBreidd = raunMax - raunMin;
tvinnBreidd = tvinnMax - tvinnMin;


fjSkrefRaun = raunBreidd/(raunSkref -1);
fjSkrefTvinn = tvinnBreidd/(tvinnSkref -1);


[x,y] = meshgrid([0:raunSkref-1]*fjSkrefRaun+raunMin, ...
        [0:tvinnSkref-1]*fjSkrefTvinn+tvinnMin);
 
Zgildi = ones(size(x));
upphafZ=zeros(size(x));
c=(x+i*y);



z=upphafZ;
h_z=1:(raunSkref*tvinnSkref);

for j=1:itranMax
 
    z(h_z)=z(h_z).^2 +c(h_z);
    h_z=h_z(find(abs(z(h_z))<2));
    Zgildi(h_z)=Zgildi(h_z)+1;
end


"Knowledge is knowing that a tomato is a fruit,

wisdom is knowing not to put one in a fruit salad."