Hmmm, het is half vijf in de namiddag en de “uitslagen” van Google Analytics voor gisteren zijn er nog steeds niet. Heb maar ineens die nieuwe tracking code geïnstalleerd, want ze zijn er precies vanalles bezig.
![]()
Hmmm, het is half vijf in de namiddag en de “uitslagen” van Google Analytics voor gisteren zijn er nog steeds niet. Heb maar ineens die nieuwe tracking code geïnstalleerd, want ze zijn er precies vanalles bezig.
![]()
Herinner je je deze crash nog?
Zoals ik al een paar posts geleden al zei, ben ik dus wat met distributed computing aan het prutsen hier op het werk. Dat houdt in dat je het werk dat je programma moet uitvoeren, gaat verdelen over meerdere processoren. Een klein voorbeeldje hiervan is dat je een for loop verdeeld over een aantal processoren in plaats van dat je die sequentiëel uitvoert op 1 processor. Ik gebruik het al een tijdje eigenlijk, maar op een vrij naïeve manier. Ik test voor mijn doctoraatsonderzoek statistische algoritmes op kunstmatig gegenereerde datasets. Die datasets bezitten verschillende karakteristieken die allen gevariëerd worden aan de hand van een for loop. Zo zit ik meestal met een zeven tot tien geneste for-loops en dat vraagt allemaal tijd, gigantisch veel tijd. Verdelen over meerder processoren is de boodschap dus. In eerste instantie verdeelde ik de langste for loop over aparte processoren wat al 10 keer sneller ging. Het kan echter ingenieuzer en Matlab heeft er een toolbox voor. Die code postte ik een aantal dagen geleden, maar die ging te graag. Het probleem is dat je Matlab moet opstarten op een login-processor van de processor-cluster om dan het werk naar andere processors te sturen. Op die login-processor krijg je echter maar een half uur CPU tijd en dat vind Matlab niet genoeg (Matlab is echt traag). Bummer. Alles zelf geschreven dan maar. In de binnenste for loop wordt nu telkens een bestand geschreven met daarin alle opdrachten (plus resultaten wegschrijven) die moeten uitgevoerd worden en dat bestand wordt dan in een wachtrij gestoken die het dan uitvoert als er een processor vrij is (yeah, er zit veel volk op onze cluster). Enfin zo heb ik dus 11 CPU dagen (ja, u leest het goed) op 21 uur en een half tijd afgewerkt. Iets meer dan tien keer sneller, maar dat hangt af van hoeveel processors er vrij zijn natuurlijk. Voila, bij deze weet u wat ik in de dag zo allemaal uitspook
Deze morgen stak de concertaankondiging van Superbus in de bus. Ze spelen op 28 november in de AB. Ik kend het niet, ging wat op zoek en vond hun homepage en last.fm pagina. Het is een Frans groepje en klinkt niet onaardig. Poppy, zoals dat heet. French Pop, zelfs, denk ik. De groep ziet er fleurig uit en het deuntje op de homepage is catchy. Hun laatste single heet Lola en is terug te vinden op hun homepage.
Op last.fm kan je ook nog oud werk beluisteren. Hieronder een track die niet zou misstaan in het StuBru programma Duyster.
Vanmiddag een zalig stukje code geschreven:
% Create a scheduler
sched = findResource('scheduler', 'type', 'generic');
set(sched,'Configuration','PBS')
% specify the walltime
set (sched, 'SubmitFcn', {@pbsSubmitFcn, '00:30:00'})
% Create a Job
j=createJob(sched);
% Create Tasks
for ii=1:5000
createTask(j, @function, 1, {ii,ii});
end
% Submit the jobs
submit(j)
% Wait for PBS-jobs to finish
j.waitForState
% Get the results
res = j.getAllOutputArguments
Niet de code zelf is geniaal, maar wat het doet. Parallel 5000 functies laten lopen op evenveel processors (of minder als er minder processors vrij zijn). We hebben hier al een tijd een computer cluster op de KULeuven en die is zoooo handig.
Technorati Tags: matlab , distributed computing , cluster