science >> Wetenschap >  >> Elektronica

een nieuwe, gebruiksvriendelijkere taal voor het programmeren van supercomputers

Kunnen we een programmeeromgeving creëren waarin niet elke onderzoeker een computerwetenschapper hoeft te zijn? Krediet:Unsplash/Markus Spiske

Decennia geleden, computers waren duur, complex en zeldzaam.

De personal computerrevolutie veranderde dat allemaal, de meesten van ons voorzien van gemakkelijk toegankelijke en goedkopere gadgets die kleiner waren, sneller en gemakkelijker te gebruiken. Ook wetenschappers profiteerden ervan. Ze ontwikkelden geautomatiseerde technieken om de innerlijke werking van cellen te bestuderen, de banen van planeten rond verre sterren en andere verschijnselen die ooit ver buiten hun waarnemingsvermogen lagen.

Maar voor onderzoekers op het scherpst van de snede, er is een zekere ironie ontstaan:nieuwe en geavanceerde instrumenten beginnen zoveel gegevens te produceren dat supercomputers nodig zijn om experimentele resultaten te analyseren. En wetenschappers die zulke enorme datasets proberen te analyseren, hebben vaak moeite om de complexiteit van de software die nodig is om de hardware te programmeren onder de knie te krijgen.

Regent invoeren, een nieuwe programmeertaal ontwikkeld door een groep onder leiding van Stanford computerwetenschapper Alex Aiken. Onder andere, Regent maakt supercomputers gebruiksvriendelijker. "We wilden een programmeeromgeving creëren waarin niet elke onderzoeker een computerwetenschapper hoeft te zijn. " zegt Aiken, de Alcatel-Lucent Professor in Communicatie en Netwerken.

Regent helpt bij het oplossen van een van de grootste uitdagingen in supercomputing:de supercomputers van vandaag zijn veel complexer dan ooit tevoren, en bestaande programmeertalen hebben moeite om gelijke tred te houden. Een supercomputer kan in de populaire verbeelding verschijnen als één gigantische machine, maar het is in feite een reeks van duizenden microprocessors die samenwerken. Wetenschappers programmeren deze arrays meestal met C++, een softwaretaal die zo'n 40 jaar geleden werd uitgevonden - een eon in de tijd van de informatica. Vroeger, de overheersende microprocessor was de centrale verwerkingseenheid, of CPU, de chip die de pc-revolutie lanceerde. CPU's lossen grote problemen snel op, de ene berekening na de andere, op wat programmeurs een seriële mode noemen.

Recenter, echter, een tweede type microprocessor is belangrijk geworden voor supercomputing:de grafische verwerkingseenheid, of GPU. Voor het eerst gebruikt om miljoenen pixels op computerschermen te besturen om de beelden van videogames te verbeteren, GPU's kunnen veel vergelijkbare berekeningen tegelijkertijd uitvoeren, of parallel, zoals programmeurs zouden zeggen. Parallelle verwerking is uiterst nuttig gebleken in toepassingen zoals machine learning. C++ is geüpgraded om deze en andere hardwarewijzigingen bij te houden. Helaas, de aanwas van patches heeft de taal steeds moeilijker te gebruiken gemaakt. Regentes, echter, maakt het voor een supercomputerprogrammeur gemakkelijker om dingen te doen zoals seriële verwerkingstaken toewijzen aan CPU's en parallelle verwerkingstaken aan GPU's.

Nadat Regent het programma conceptueel heeft omkaderd, de bedoelingen van de programmeur worden vertaald, of om de technische term te gebruiken, gecompileerd - in een tweede softwarelaag genaamd Legion, die Aiken ook ontwikkelde. Legion genereert machinecode:nauwkeurige instructies die de hardware van de supercomputer aangeven hoe het programma moet worden uitgevoerd. De nauwe integratie tussen Regent en Legion maakt het voor programmeurs gemakkelijker om andere belangrijke beslissingen te nemen; Opmerkelijk, waar de gegevens moeten worden opgeslagen die de supercomputer moet analyseren.

Elliott Slaughter, een wetenschapper bij het SLAC National Accelerator Laboratory die bijna sinds hun oprichting aan Regent en Legion heeft gewerkt, zegt dat de integratie tussen de twee lagen programmeurs zowel geld als tijd bespaart. Computers verbruiken energie, wat een kostprijs heeft. Maar de energiekosten van het verplaatsen van gegevens kunnen 100 keer zo hoog zijn als de kosten van het uitvoeren van berekeningen op die gegevens. Bovendien, grote experimenten zijn vaak afhankelijk van instrumenten die enorme hoeveelheden data verzamelen. Slaughter zei dat sommige instrumenten het gegevensequivalent van 20 video-dvd's per seconde kunnen verzamelen voor experimenten die 15 minuten duren. Zelfs bewegen met de snelheid van het licht over glasvezel, het krijgen van zoveel gegevens van instrument naar supercomputer kan vertragingen veroorzaken die de analyse kunnen verergeren. "Waar je de gegevens plaatst, blijkt een van de belangrijkste beslissingen te zijn die een programmeur neemt, " Zegt Slaughter. Regent en Legion besparen geld en tijd door de programmeur ongekende controle te geven over waar de gegevens moeten worden opgeslagen terwijl deze in afwachting zijn van de berekening.

Zal Regent wijdverbreid worden? De onderzoekers zeggen dat nieuwe talen veel traagheid moeten overwinnen. "Regent is een heel andere manier van programmeren, ", zegt Aiken. "Het zal even duren voordat onderzoekers de vereiste mentaliteit hebben aangenomen."

Maar twee factoren werken in zijn voordeel. Eerst, supercomputerhardware blijft verbeteren. Het Amerikaanse ministerie van Energie stimuleert ontwikkelingen met zijn Exascale Computing Project, die ernaar streeft om ergens rond 2021 een 50-voudige toename van de supercomputationele kracht te bereiken. DOE ondersteunt softwareprojecten, inclusief regent, om de programmering te helpen gelijke tred te houden.

Bovendien, veel wetenschappers die supercomputers willen gebruiken, zijn niet bekend met de huidige tools en wantrouwend voor de steile leercurve die nodig is om grote experimenten te programmeren. Zelfs ervaren supercomputerprogrammeurs vinden het huidige systeem misschien omslachtig en vragen zich af of er geen betere manier is. "We praten regelmatig met wetenschappers die beseffen hoeveel gemakkelijker Regent het leven voor hen maakt, ' zei Aiken.