25 april 2011

Woops een weekje geen blog neer gezet wat inhoud dat ik er nu 2 in 1 ga stoppen. De afgelopen 2 weken zijn best druk geweest in veel vergaderingen overleg en adviezen over hoe en wat.

Twee weken geleden is mijn stage begeleider Ben Goertzel in Xiamen aangekomen waarmee er direct een berg in gang werd gezet. Na wat wiskundige formule uitleg gehad te hebben en deze te herkennen in de code kwamen we tot de mooie ontdekking dat een groot deel van de formules beschreven in de papers (handleidingen) van DeSTIN er niet of half in zaten. Omdat de formules redelijk complex kunnen worden heeft de maker ze vervangen voor een versimpelde versie. Waarbij en vooral gewerkt word met constante waardes.

Dit is natuurlijk goed te doen wanneer je voorbeelden niet zo groot zijn maar als we het programma met een camera gaan gebruiken dan wordt het probleem een stuk complexer en wordt het toch wel handig om deze formules in het origineel te hebben in plaats van een versimpelde versie. Maar waar beginnen we. Er zit redelijk wat troep in de code of om het zachtjes uit te drukken. Om de werkelijke functie te vinden kan je beter de rest weg gooien :P.

Dat is dus waar we nu mee bezig zijn en zoals wij het mooi omschreven hebben zijn we de code aan het destilleren :P. Dit doen we door een versimpelde versie te maken en tegelijkertijd de originele code te strippen van all troep. De versimpelde versie heeft alleen de formules waarmee dus de hiërarchie  verdwijnt. Deze is wel van belang voor de werking van DeSTIN voor de mensen die het bij houden het lagen model is in de versimpelde versie niet volledig werkend meer. Maar die kan met weinig moeite weer hersteld worden.

Tot zover het stukje over de voortgang van DeSTIN.

(meer…)

Een week en een dag verder ja gisteren had ik het even iets te druk maar vandaag gaat die er dan toch komen.

Zoals gebruikelijk begin ik even met een kleine update wat ik met mijn stage heb gedaan. En zoals sommige niet zou verbazen ben ik bezig met het begrijpen van DeSTIN. Nu snap ik ondertussen wel wat het doet maar hoe dit in de code tot stand komt is toch even iets lastiger dan ik in eerste instantie had bedacht. Daartegen valt het leren van CUDA weer reuze mee das dat compenseert elkaar redelijk.

Oke wat ben ik nu precies aan het bestuderen dan. DeSTIN werk met lagen en op iedere laag zit een raster waarbij ieder vakje gevuld word door een node. De werking van een van die nodes ben ik aan het uitpluizen aangezien er heel veel gebeurt daarbinnen.

Zo dat was het al weer voor mijn stage deze week mede omdat er wat dagen niet gevuld zijn met het werken aan DeSTIN lees hieronder verder.

Want Xiamen University is negentig jaar geworden en dat word groots gevierd zoals jullie in mijn vorige post konden zien werd er een kleine hoeveelheid stoelen uitgezet voor een podium hier ben ik natuurlijk naar toe geweest samen met Meifang. Wat nog redelijk wat geregel was aangezien die kaarten alleen voor studenten zijn en Meifang geen student van Xiamen is en ik wel. Maar e ik ben dan ook weer de enige buitenlander in het lab dus een beetje profiteren daarvan kan geen kwaad. En zodoende twee kaartjes voor de grote show.

(meer…)

3 april 2011

Een week verder. Wat inhoud er komt weer een verhaal aan.

Ook deze week heb ik aan mijn stage opdracht lopen werken hoewel het nog steeds erg veel lezen is en daarnaast veel opschrijven komt het einde nu wel langzaam in zicht zodat ik ook daadwerkelijk aan de verbeteringen kan gaan beginnen. Aan het einde van de week tijdens mijn wekelijkse meeting met mijn opdrachtgever was er zelf een hoofd ontwikkelaar aanwezig die ervaring had heeft met het soort programma waarmee ik werk en heeft me alvast wat hints en tips gegeven wat wel te doen en wat niet.

DeSTIN bestaat uit nodes waarbinnen een cluster ontstaat. de nodes produceren een signaal door het midden te nemen van het cluster wat ook wel een centroid genoemd word. Over de centroid is veel onduidelijkheid en het word er maar niet duidelijker op dus houd het even bij deze waarneming. Dit alles gebeurt in een layer ook wel laag vertaald in het Nederlands. Iedere laag doet precies het zelfde alleen de hoogste laag heeft heel weinig nodes en de laagste heel veel. iedere node leest of een laag lager uit of zelf een plaatje of later video streams.

Omdat iedere node het zelfde doet zou dit uitstekend geschrikt zijn voor parallellisme wat inhoud dat je een zelfde taak in plaats van in serie uitvoert het tegelijk uitvoert. Om een kleine rekensom te illustreren een plaatje van 800 x 600 =  480000 pixels groot. De laagste laag kijkt per node met een diameter van 4×4 = 16. 480000/16 = 30000 nodes één laag hoger kijk vervolgens met een weergaven van 2×2 per node naar de laag lager. 30000/4 = 7500. Één laag hoger weer 7500/4 = 1875 enz enz. Totdat je nog maar een paar nodes overhoud of zoals wij nu met een plaatje van 32×32 doen eindigend met 1.

30000+7500+1875+… +/- = 40000 nodes die allemaal het zelfde doen. Hier komt CUDA om de hoek kijken 40000 x het zelfde doen kan ik ook op de CPU doen alleen heeft die met de aller nieuwste chips maar 8 cores terwijl de GPU vrolijk een paar honderd ter beschikking heeft. En CUDA wordt erg gelukkig als het iets kan uitvoeren dat het liefst per 1000de word opgestart. Misschien ben ik al wat lezer kwijt maar de nummer zijn wat vreemd. waarom zou iets met 1000de opgestart worden als je maar 100 cores ter beschikking hebt. Een programma draait meestal op één of meer threads. 1 core can meerdere threads runnen. In het geval van CUDA kunnen er blokjes met 64,128 of 256 threads opgestart worden en +/- 65000 bloks per kaart gelanceerd worden ook wel grid genoemd.

Of in andere woorden DeSTIN heeft veel kleine identieke taken met CUDA kan ik die vele kleine taken tegelijk uitvoeren. Waarna je alle berekende waardes als een grote bulk weer terug krijgt. Op dit moment ideaal te noemen.

(meer…)