Síða 1 af 1

Matlab og multithreading

Sent: Fös 19. Nóv 2010 14:37
af ManiO
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.

Re: Matlab og multithreading

Sent: Fös 19. Nóv 2010 14:57
af Revenant
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)

Re: Matlab og multithreading

Sent: Fös 19. Nóv 2010 15:13
af ManiO
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