Libraries & tools voor optimalisatie van C/C++ code voor multicore systemenSpreker: Klaas van Gend AbstractProcessoren met meerdere cores zijn tegenwoordig alomvertegenwoordigd in de meeste computersystemen, zoals PC's en mobieltjes. Helaas voor eindgebruikers, maar system met vier of meer cores bieden vaak niet meteen extra voordelen. Veel applicaties die smachten naar meer rekenkracht zijn nog steeds niet in staat om voordeel te halen uit alle aanwezige cores. Het schrijven van multi-threaded applicaties is dan ook niet makkelijk: Programmeurs riskeren namelijk problemen als data race condities en andere run-time fouten die moeilijk te debuggen zijn. Het updaten van programmastatus vanuit meerdere threads is gewoon link. Bij bestaande code is het vaak vooraf onduidelijk of ontwikkeltijd die wordt gespendeerd aan het optimaliseren voor multicore zich ooit terug zal verdienen. In veel gevallen zullen onvoorziene zij-effecten de resultaten negatief beïnvloeden. Om het kort samen te vatten: software engineers zullen nieuwe truuks moeten leren en parallelle frameworks gaan gebruiken om in de multicore wereld nog relevant te blijven. Qua parallelle frameworks zijn er best wel een aantal mogelijkheden, zowel commercieel als open source. Sommige helpen specifiek met het implementeren van parallelisme, zoals OpenMP, Intel TBB, MPI of Apple’s Accelerate Framework. Zelfs de nieuwe C11 en C++11 standaarden hebben nu mooie ondersteunen voor het implementeren van multithreading. Een hele andere groep zijn de bibliotheken die cpu-intensieve algoritmes als parallelle versie implementeren. Voorbeelden hiervan zijn Intel IPP en CodeSourcery VSIPL++. Deze verschillende bibliotheken adresseren verschillende onderdelen van het parallellisatieprobleem. Sommige leveren bouwstenen, andere threading classes. Sommige helpen met het herschrijven van loops of functieflows om parallellisme te realiseren. Zulke bibliotheken helpen echter niet met ontdekken welke delen van de code te parallelliseren zijn. Programmeurs moeten dus nog steeds met tools als profilers aan de gang om de hotspots te vinden; tenslotte zijn software engineers berucht voor slecht gokken waar de bottlenecks zitten... Klaas bespreekt eerst het algemene probleem van parallelisatie en vectorisatie in C en C++. Daarna gaat hij hotspots zoeken en deze met de diverse bibliotheken oplossen. BiografieKlaas van Gend begon met C programmeren op zijn zestiende. Vier jaar later kwam hij Linux tegen op de universiteit. Sindsdien is Klaas (nu 39) hooked op open source en Linux. Hij begon zijn carrière als Linuxprogrammeur in 1999. In 2004 stapte Klaas over naar MontaVista Software, een leverancier van embedded Linux. Sinds februari 2012 werkt Klaas voor Vector Fabrics, een Nederlandse start-up die een tool heeft ontwikkeld om in bestaande C code parallelisatiemogelijkheden te vinden en benutten. Als de senior FAE werkt hij veel moet klanten om het meeste uit hun multicore-omgeving te halen. Als mens vraagt hij zich nog steeds af waarom mannen zo slecht zijn in multitasken. Na zes jaar penningmeester te zijn geweest voor de NLUUG is Klaas in 2012 afgezwaaid. Hij woont en werkt in Eindhoven. |
Najaar 2012
| |||||||
2024-11-06 | ||||||||
|