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.