maandag 17 augustus 2015

High Performance Computing: Meer dan het samenvoegen van rekenkracht

Bij High Performance Computing wordt rekenkracht samengevoegd op zo'n manier dat het een zeer hoge performance kan leveren, zodat complexe rekenproblemen binnen afzienbare tijd kunnen worden opgelost.

Het samenvoegen kan door computers te verbinden over een netwerk (bijv. internet), waarbij de computers wat van hun tijd of al hun tijd besteden aan het oplossen van een gemeenschappelijk probleem (mier methode). Elke individuele computer krijgt veel kleine taken en lost deze op. Alle resultaten worden gerappoteerd aan een centrale server, die alle resultaten integreert en tot een totaal oplossing komt.

Het samenvoegen kan ook door processoren heel dicht bij elkaar te brengen in een groot computer cluster (olifant methode), waarbij tijd wordt gespaard doordat de data niet verplaatst hoeft te worden en waarbij de processoren kunnen samenwerken.

Hoewel dit redelijk simpel klinkt, komt er veel meer bij kijken dan wat kabels leggen voor de verbindingen.

HPC is geavanceerde logistiek
Een groep mensen bij elkaar in een ruimte maakt nog geen team. Zo maakt een groep processoren nog geen High Performance Computing. Als een complexe taak moet worden opgelost door krachten te bundelen, moeten die krachten wel op een slimme manier gebundeld worden, om bijv. te voorkomen dat taken dubbel of in onlogische volgorde worden uitgevoerd, waardoor het proces zeer inefficiënt verloopt.

Parallellisatie
High Performance Computing heeft een belangrijke eigenschap die voor enorme snelheidswinst zorgt; parallellisatie. Normaal gesproken gebeuren berekeningen door computers sequentieel, dus na elkaar. Bij parallellisatie gebeuren berekeningen tegelijkertijd.

Logistiek manager
Daarbij is er bij High performance Computing een applicatie welke zeg maar de logistiek manager is. Deze moet ervoor zorgen dat het totaal proces voor het oplossen van het complexe probleem zo snel mogelijk gebeurt. Er moet een plan gemaakt worden om het probleem aan te pakken, het probleem moet eventueel opgedeeld worden in kleine stukken en er moet een taakverdeling gemaakt worden zodat de deel-problemen door de meest geschikte rekeneenheden worden opgelost. Ook dient er goed gepland te worden welke taak wanneer wordt uitgevoerd en is communicatie tussen de rekeneenheden belangrijk. Sommige taken hebben namelijk bijv. de resultaten van andere taken nodig als input voor hun berekeningen. Als die resultaten niet op tijd klaar staan, komt er vertraging.

Toegewijde chips
Er worden allerlei chips ontwikkeld die goed zijn in het uitvoeren van één bepaalde taak. Als een groot probleem wordt verdeeld in kleinere taken, dan zou zo'n toegewijde chip zich volledig kunnen richten op de taak waar hij goed in is en dit super snel doen. Als het taken betreft die voorheen een belangrijke bottleneck waren, dan kan er met deze chips alleen al een enorme snelheidswinst gerealiseerd worden.

Metafoor: verhuizing
Om het wat 'tastbaarder' te maken gebruik ik als metafoor even een verhuizing. Als er maar één verhuizer is zal het verhuizen grof gezegd ongeveer twee keer zo langzaam gaan als dat er twee verhuizers zijn en ongeveer drie keer zo langzaam als wanneer er drie verhuizers zijn. Dit is een voorbeeld van het voordeel van parallellisatie, maar alleen als de verhuizers niet teveel met elkaar gaan lopen kletsen ;-)

Er moet wel een plan van aanpak gemaakt worden voor het verhuizen om het proces zo snel mogelijk af te ronden. Het is handig om dat door iemand met logistiek inzicht te laten doen (logistiek manager). Als bijv. de spullen niet goed worden ingedeeld, kost dit veel ruimte en moet er extra gereden worden, wat een verspilling van tijd is. Verder moeten de verhuizers goed overleggen wie welke spullen inlaadt. Zo is het bijv. handig dat de sterkste de zwaarste spullen tilt (toegewijde chips).

Hopelijk geeft deze post u wat meer inzicht in de onderliggende techniek en logistiek van HPC.

Geen opmerkingen:

Een reactie posten