Kan vi skapa en programmeringsmiljö som inte kräver att alla forskare är datavetare? Upphovsman:Unsplash/Markus Spiske
Årtionden sedan, datorer var dyra, komplex och sällsynt.
Persondatorrevolutionen förändrade allt detta, förse de flesta av oss med lättillgängliga och billigare prylar som var mindre, snabbare och enklare att använda. Forskare gynnades också. De utvecklade datoriserade tekniker för att studera cellernas inre funktion, planets banor runt avlägsna stjärnor och andra fenomen som en gång var långt bortom deras observationsförmåga.
Men för forskare i framkant, en viss ironi har framkommit:Nya och sofistikerade instrument börjar producera så mycket data att superdatorer behövs för att analysera experimentella resultat. Och forskare som försöker analysera sådana enorma datamängder kämpar ofta för att behärska komplexiteten i programvaran som behövs för att programmera hårdvaran.
Ange Regent, ett nytt programmeringsspråk som utvecklats av en grupp som leds av Stanford -datavetenskaparen Alex Aiken. Bland annat, Regent gör superdatorer lättare att använda. "Vi ville skapa en programmeringsmiljö som inte kräver att alla forskare är datavetare, säger Aiken, Alcatel-Lucent-professor i kommunikation och nätverk.
Regent hjälper till att lösa en av de största utmaningarna inom superdatorer:Dagens superdatorer är mycket mer komplexa än någonsin tidigare, och befintliga programmeringsspråk har kämpat för att hålla jämna steg. En superdator kan i den populära fantasin framstå som en jätte maskin, men det är faktiskt en rad med tusentals mikroprocessorer som fungerar tillsammans. Forskare programmerar vanligtvis dessa matriser med C ++, ett mjukvaruspråk som uppfanns för ungefär 40 år sedan - en eon i datavetenskapstid. Då, den dominerande mikroprocessorn var den centrala processorenheten, eller CPU, chipet som startade PC -revolutionen. CPU:er löser stora problem snabbt, den ena beräkningen efter den andra, på vad programmerare kallar ett seriellt sätt.
På senare tid, dock, en andra typ av mikroprocessor har blivit viktig för superdatorer:grafikprocessorenheten, eller GPU. Först användes för att styra miljontals pixlar på datorskärmar för att förbättra bildspel från videospel, GPU:er kan utföra många liknande beräkningar samtidigt, eller parallellt, som programmerare skulle säga. Parallellbehandling har visat sig vara mycket användbar i applikationer som maskininlärning. C ++ har uppgraderats för att hänga med i dessa och andra hårdvaruändringar. Tyvärr, ackumulering av patchar har gjort språket allt svårare att använda. Regent, dock, gör det lättare för en superdatorprogrammerare att göra saker som att tilldela serieprocessuppgifter till processorer och parallella bearbetningsuppgifter till GPU:er.
När Regent har inramat programmet på en konceptuell nivå, programmerarens avsikter översätts - eller att använda den tekniska termen, sammanställt - till ett andra programvarulager som heter Legion, som Aiken också utvecklat. Legion genererar maskinkod - exakta instruktioner som styr superdatorns hårdvara hur man utför programmet. Den täta integrationen mellan Regent och Legion gör det lättare för programmerare att fatta andra viktiga beslut; i synnerhet, var man ska lagra data som superdatorn måste analysera.
Elliott Slaughter, en forskare vid SLAC National Accelerator Laboratory som har arbetat med Regent and Legion nästan sedan de startade, säger integrationen mellan de två lagren sparar programmerare både pengar och tid. Datorer förbrukar energi, som har en kostnad. Men energikostnaden för att flytta data kan vara 100 gånger kostnaden för att utföra beräkningar på den informationen. Dessutom, stora experiment förlitar sig ofta på instrument som samlar in enorma mängder data. Slaughter sa att vissa instrument kan samla in dataekvivalenten på 20 video -DVD varje sekund för experiment som varar i 15 minuter. Även röra sig med ljusets hastighet över fiberoptik, att få så mycket data från instrument till superdator kan skapa eftersläpningar som kan tugga upp analysen. "Där du lägger in data visar sig vara ett av de viktigaste besluten en programmerare tar, "Säger Slaughter. Regent och Legion sparar pengar och tid genom att ge programmeraren oöverträffad kontroll över var data ska lagras medan de väntar på beräkning.
Kommer Regent att bli utbredd? Forskarna säger att nya språk måste övervinna en stor tröghet. "Regent är ett helt annat sätt att programmera, "Säger Aiken." Det kommer att ta ett tag för forskare att anta den nödvändiga tankegången. "
Men två faktorer fungerar till sin fördel. Först, superdatorhårdvara fortsätter att förbättras. Det amerikanska energidepartementet driver utvecklingen med sitt Exascale Computing Project, som syftar till att uppnå en 50-faldig ökning av superdatorkraft någon gång runt 2021. DOE stöder programvaruprojekt, inklusive Regent, för att hjälpa programmeringen att hålla jämna steg.
Dessutom, många vetenskapsmän som skulle vilja använda superdatorer är inte bekanta med de nuvarande verktygen och slugorna i den branta inlärningskurvan som krävs för att programmera stora experiment. Även erfarna superdatorprogrammerare kan tycka att det nuvarande systemet är besvärligt och undra om det inte finns något bättre sätt. "Vi pratar regelbundet med forskare som inser hur mycket lättare Regent gör livet för dem, "Sa Aiken.