Binnen de wereld van high performance computing (hpc) werd tot voor kort nog veel gebruik gemaakt van specialistische supercomputers. Dergelijke machines beginnen echter langzaam te verdwijnen ten faveure van slimme software. En daar kunnen meer bedrijven van profiteren dan vroeger het geval was.
Nog niet zo heel lang geleden was high performance computing (hpc) voorbehouden aan supercomputers, speciale machines met een bijzonder groot rekenvermogen. Wellicht herinnert iemand zich nog de schaakmatch tussen Kasparov en Deep Blue in de jaren 90. Kasparov, op dat moment de wereldkampioen schaken, nam het toen op tegen een team van techneuten van IBM die gebruik maakten van een digitaal rekenmonster genaamd Deep Blue. Deep blue was zo’n supercomputer.
Supercomputers halen vooral zo’n bijzonder groot rekenvermogen, omdat ze meer en sterkere processoren hebben dan gewone computers. In Deep Blue zaten er 36. Mede door die high-end specificaties hadden supercomputers iets heel exclusiefs. Alleen bedrijven met veel geld en specialistische kennis kunnen zich apparatuur met dergelijke specificaties veroorloven. Hpc lag hierdoor lange tijd buiten het bereik van de doorsnee onderneming.
Computer wordt cluster
Supercomputers worden vandaag de dag nog steeds gebruikt voor hpc, maar het gebruik van dergelijke specialistische machines is wel aan het afnemen. Tegenwoordig worden grote rekentaken vooral gedaan door clusters van servers. Relatief goedkope servers, die ook door kleinere bedrijven worden gebruikt en gewoon online gekocht kunnen worden, worden aan elkaar gekoppeld in enorme serverparken. Software zorgt ervoor dat de rekentaak door al die samenwerkende servers wordt gedaan.
Er zijn verschillende redenen waarom deze manier van werken tegenwoordig de voorkeur krijgt. Op de eerste plaats is een cluster van standaard servers vele malen goedkoper dan een speciale machine. Daarnaast is de wet van Moore ook van toepassing op de wereld van hpc. Iedere nieuwe chip heeft tweemaal zoveel verwerkingskracht als zijn voorganger en de chips uit supercomputers verouderen zodoende snel. Het is daarom prettig om te werken met relatief goedkope hardware die makkelijk te vervangen of op te waarderen is.
Big Data
De clustertechnologie, die momenteel in de hpc-wereld zoveel wordt toegepast, heeft grote gevolgen. De kosten om een serverpark in te richten zijn gedaald en bedrijven die eerder nooit de inzet van hpc zouden overwegen kunnen daar nu wel mee aan de slag. Met name de diverse initiatieven die spelen op het gebied van big data analyse zijn daarbij erg aansprekend. Big data is in feite een alternatieve term voor high performance data analyse, een vorm van hpc die al erg lang wordt toegepast. Door de komst van software als Hadoop wordt deze vorm van hpc echter de laatste jaren steeds meer toegepast.
High performance computing, vroeger ooit duur en exclusief voor kapitaalkrachtige, grote ondernemingen, ligt dus helemaal niet meer zo ver weg. De vraag is tegenwoordig daarom niet zozeer ‘kan het wel?’ maar ‘wat wil ik eigenlijk weten?’
Simulaties bijvoorbeeld kunnen sterk profiteren van een clusters van servers. De simulaties op https://wuala.com/QuantumRandomnessApplications/Finance geven een nagenoeg lineaire versnelling met de toename van het aantal threads wanneer je een parallele implementatie gebruikt. Alleen al multi-core Xeon processoren kunnen simulaties sterk versnellen. Met een 12 core Xeon Mac Pro zie je de snelheid nagenoeg lineair oplopen met het toenemen van het aantal threads wanneer het aantal threads kleiner dan 25 is.
Hmmm Willem,
Waneer verwerking van processen parallel gedaan kan worden zouden wellicht ook krachtige FPGA’s in aanmerking kunnen komen.
Kun je nog even toelichten waar je limmiet van 25 threads vandaan komt ?
Is dat per per cpu of totaal ?
@Mathijs wat je zegt is uiteraard waar maar we hebben het wel over techniek die toch al heel wat jaartjes op de markt is. Denk daarbij vooral aan BeoWulf-clusters. Wat is er nu zo bijzonder aan geworden?
Wie de wet van Moore noemt mag niet verzwijgen dat er ook nog een wet van vertraging is, door Gordon Moore al in 2005 besproken omdat uitdaging niet zo zeer meer ligt in de chip maar de bridge. Kan hier een lange reactie gaan schrijven maar misschien handig om ook eens te kijken naar de presentatie van Sandeep Poonia over Grid Computing, Hadoop is tenslotte toch meer een grid dan een cluster.
http://www.slideshare.net/sandpoonia/1-grid-computing
Feitelijk kwam de wet van Moore tenslotte al aan zijn einde toen Intel overging op multicore processoren, de parallelisatie waarvoor de software wel geschikt moet zijn. Bij HPC gaat het dan ook om de afstemming van computing, storage, netwerk en software. Zeg maar de som der delen die uiteindelik response, doorvoer, beschikbaarheid en de integriteit van de uitkomsten bepalen.
Met name laatste is in de hype van Big Data iets wat niet vergeten mag worden want er gaat tenslotte een verhaal de ronde dat Kasparov niet door rekenkracht maar een bug in de software verslagen werd.
@Pascal, 26-09-2014 13:35:
Kun je nog even toelichten waar je limiet van 25 threads vandaan komt?
Het aantal threads moet minimaal twee maal het aantal cores zijn om maximaal gebruik te maken van de multi-core architectuur. Dus op een Xeon 12-core CPU moet je minimaal 24 parllele threads starten om optimaal gebruik te maken van de multi-core architectuur.
Is dat per per cpu of totaal ?
Per multi-core cpu.
Willem dank (ik had even overzien dat het om een 12 Core CPU ging)
MultiThreading snap ik.. schrijf ik zelf ook wel eens dingetjes mee.
Maar perfomance is nu niet speciaal mijn specialiteit….
Zouden we in de keuken van de NSA kunnen kijken dan vinden we een sterk voorbeeld van hpc en big data.
Clustering bestaat inderdaad al heel wat jaren , er was toch ooit een projekt waar je op je pc een achtergrond programma kon laden om mee te werken aan een onderzoek naar buitenaardse intelligentie? Dat was een echt grid.
Waar ik in geloof zijn de processoren die IBM nu aan het ontwikkelen is: neuro synapic chips
Processoren die de architectuur van Von Neumann los laten en beter toegespitst zijn op specifieke taken.
Want net als met imperative programing versus bijvoobeeld declarative programing… je kan nog zoveel code schrijven, de archictectuur bepaald ook of je uberhaupt bepaalde performance kan behalen.
We moeten steeds meer kijken wat we willen bereiken en hoe we dat gaan bereiken. Het is niet zo dat je met alle talen en processoren alles uiteindelijk kunt bereiken en dat het een kwestie van smaak is.
Met de juiste techniek, taal en kunde kun je op een gegeven moment meters maken en in deze strijd zullen nieuwe reuzen gaan ontstaan.
Dus ja, we hebben allemaal toegang tot high performance computing, we hebben Google 🙂 maar niet alles is voor alles geschikt.
Henri,
Procesoren waar jij het over hebt laten de von Neumann architecteur niet los maar kunnen voor een set van instructies een soort van mixed mode bereiken.
Voor een beperkt stukje geheugen (wat nog altijd behoorlijk veel kan zijn al is dat zelden nodig) kan de CPU dan twee adressen tegelijk lezen, of lezen en schrijven.
Ongeveer op die manier worden op ARM en PIC CPU’s DSP instructies geimplementeerd waardoor je een significante performance winst kunt halen waar het dergelijke berekeningen betreft.
Ik meen (maar weet niet zeker) dat met MMX instructies ook zoiets mogelijk was.
Pascal, 26-09-2014 13:35:
Quote: `Waneer verwerking van processen parallel gedaan kan worden zouden wellicht ook krachtige FPGA’s in aanmerking kunnen komen.
Kun je nog even toelichten waar je limmiet van 25 threads vandaan komt?
Is dat per per cpu of totaal?`
Voor de simulatie van bijvoorbeeld derivaten is snelheid erg belangrijk.
De snelheid is vooral belangrijk om de standaard deviatie van de prijs en andere berekende parameters te kunnen bepalen door vele simulatie uit te voeren met bijvoorbeeld randomized Quasi-Monte Carlo methoden op Multi-processor / Multi-core CPU of GPU systemen. Dit zijn zeer geavanceerde systemen welke gebruik maken van speciale random sequences zoals randomized sobol sequences.
Deze systemen draaien op Multi-core CPU (Intel) of GPU (NVIDIA) Hardware. FPGA lijkt me hiervoor niet erg geschikt.