23 mei 2011

Welkom lezer.

Week 14 van mijn stage was een hele goede week. In ieder geval voor het project. Na flink veel gepuzzeld te hebben met het CUDA Grid, block en thread systeem en ik me een klein beetje verkeken had op de derde dimensie die in het systeem zat kwam er dan op vrijdag ochtend een einde aan het hele hoe krijg ik DeSTIN in CUDA zodat de GPU ook daadwerkelijk wat te doen heeft.

Eerst een kleine uitleg waarop ik mij verkeek DeSTIN bestaat uit lagen nu zijn deze niet zo denderend groot in de huidige form waardoor deze gemakkelijk in één block van CUDA past en hierop ging ik de mist in. Aangezien binnen een node wat dan een hele thread zou worden nog een laag zat en de informatie die ik krijg over CUDA meld dat je de thread klein moet houden.

Wat er gebeurde was dat ik even naar iets anders was gaan kijken DeSTIN maakt nu gebruik van 4 lagen omdat het dan naar een plaatje van 32 bij 32 pixels kan kijken. Omdat we foto’s en eigenlijk live beelden aan DeSTIN willen voeren was ik even gaan kijken naar hoeveel lagen zou ik nodig hebben voor ik een 640 bij 320 pixel plaatje kan bekijken zonder teveel de structuur aan te hoeven passen. Nu kijkt de laagste laag met een 4 bij 4 pixel per node naar het plaatje en als de laagste laag uit 8 bij 8 nodes bestaat kan je een plaatje van 32 bij 32 voeren.

Om een berg berekeningen te besparen kom je op een 9 lagen uit. Dit voornamelijk om de laagste laag het 4 bij 4 pixel gedeelte niet te overschrijden maar wel kleine. Bij negende lagen bestaat de laagste laag uit 256 bij 256 nodes dit past niet meer in één block en dien je meerdere blocks te gaan gebruiken. Een ander gedeelte was het gebruik van geheugen. Het plaatje zit in langzaam geheugen en iedere node kijkt maar naar een klein stukje waarna deze vele malen geraadpleegd word. Je dient dan het kleine stukje te verhuizen naar snel geheugen. (Shared memory voor de gene die weten waar ik het over heb)

Laag ontwerp

Aangezien het snelle geheugen erg klein is kwam dan eindelijk op vrijdag morgen het eureka momentje. Inplaats van de laag in een block te proppen dien ik de laag in de grid te proppen. met een limitering van 65535 blocks in drie richtingen op mijn eigen videokaart en in twee richtingen op de super computer waarbij als ik het goed gelezen heb ik dus daadwerkelijk 65535×65535 mag doen zie ik geen probleem

en in de toekomst wanneer het aantal lagen verhoogt zou moeten worden naar 10 voor HD input. Het resultaat één block word één node binnen de node kan ik super goed gebruik maken van het shared memory aangezien die data zo goed als gelijk blijft binnen de gehele node.

Zoals je hier aan de linkerkant kan zien met mijn prachtige teken kunsten komt het model er dan ongeveer zo eruit te zien. Nu kwam er een vraag terug van mijn opdracht gever of het aantal threads nu niet de limitering word van het netwerk kan ik dit niet met zekerheid zeggen maar met de lage hoeveelheid centroids dat word gebruikt in layer 4 en ik per block max 1024 op eigen of 512 op super machine aan threads kan gebruiken weet ik nog niet of dit echt de limitering is.

Daarbij als ze upgraden naar de zelfde typen videokaart als die ik heb is deze limitering ook verdwenen aangezien de derde dimensie dan gebruikt kan worden van het grid. Hiermee kan je dus ook 65535 blocks omhoog.

Met deze analyse en ontwerp wacht me alleen nog het realiseren, implementeren en documenteren af.

(meer…)

5 maart 2011

Het is al weer even stil vanaf mijn kant dus vandaar een berichtje hier.

Hoewel ik het nog niet echt interessant vind om over mijn stage werkzaamheden zelf te schrijven. Komt hier dan toch een stukje hoe mijn dagelijkse bezigheid er op dit moment uit ziet.

Zoals de meeste mensen sta ik op een vast tijdstip op neem ik een douche, ontbijt ik en neem ik de bus naar mijn stage welk welgeteld 1 Yuan (+/- 0,10 euro) kost. Vervolgens loop ik 9 trappen(5 in het gebouw 4 om bij het gebouw zelf te komen) op om bij mijn werkplek aan te komen. Daar aangekomen gaat mijn laptop aan en ga ik aan de slag. Wat ik op dit moment doe is voornamelijk analyseren en leren. Mijn opdracht is duidelijk zorg ervoor dat een programma wat traag is snel gaat werken door middel van het werk wat die doet in kleine stukjes te hakken en te voeren aan een machine die heel veel kleine taken tegelijk kan uitvoeren. (Parallel programming).

Zo rond een uurtje of 11:30 a 12:00 beginnen ik en mijn collega’s honger te krijgen. She Fan (mijn chinees typen is nog steeds op zijn Nederlands) wat inhoud kom eten of eigenlijk vragen ze heb je al je rijst op gegeten :). Vervolgens al die trappen weer af en door de poort naar buiten naar een garagebox of een dak restaurant. Aangezien mijn collega’s het leuk vinden met mij te eten en ze daarvoor ook speciaal naar het werk komen rond lunch tijd zijn we meestal met een man of 5 a 8.

(meer…)