FUTHARK - nyt programmeringssprog
Futhark er et (tillempet) akronym for: High-performance purely functional data-parallel array programming on the GPU og blev tirsdag den 20. juni 2017 præsenteret af PhD-studerende Troels Henriksen fra DIKU på den mest betydningsfulde konference for programmeringssprog, PLDI 2017.
Læs forskningsartiklen. Fås også som PDF.
Problemet: Der mangler skræddersyede programmeringssprog til parallelle processer
Parallelle computere er blevet mainstream blandt programmører. Det er almindeligt anerkendt, at der stadig mangler gode modeller og programmeringssprog til at programmere disse. Dette problem stikker endnu mere i øjnene, når man bevæger sig fra fler-kerne-CPU'er og over til grafikkort, GPU'er, som har udviklet sig til at blive massive parallelt-koblede maskiner, der kan bruges til alle typer af opgaver. Her kommer de traditionelle programmeringssprog til kort.
Funktionelle sprog foreslås ofte som løsningen på problemet med at håndtere parallelitet, idet de ikke er så afhængige af sekventielle rækkefølger eller afledte effekter. Men der er også problemer med at få funktionelle sprog til at fungere på et graffikkort. Bl.a. fordi de kun understøtter en begrænset form for parallelitet.
Løsningen: Et helt nyt funktionels programmeringssprog
Løsningen har været at designe et lille funktionelt sprog, som har lige præcis de karakteristika og begrænsninger, der gør det muligt at konstruere en fantastisk effektiv optimerende oversætter, der kan generere GPU-kode. Denne oversætter (eller compiler) kan håndtere alle lavniveau-detaljer, så programmøren kan koncentrere sig om, hvordan man bedst kan udtrykke parallelismen i algoritmen.
Lektor Martin Elsman, adjunkt Cosmin Oancea, lektor Andrzej Filinski og ikke mindst ph.d-studerende Troels Henriksen, har i 4 år forsket i at udvikle det nye programmeringssprog og oversætter, som har fået navnet FUTHARK.
Futhark er et lille data-parallelt funktionel sprog, som minder om en krydsning af Haskell og OCaml. Paralleliteten udtrykkes gennem en indbygget second-order array combinators (SOACs) som ligner de højere-ordens-funktioner der kendes fra funktionsprogrammering.