Traditionellt har dataanalys och beräkningar utförts genom att de exekveras på datorns huvudprocessor, CPU:n. Allt eftersom datamängderna har ökat har det blivit vanligare att ta till olika typer av andra verktyg. Mest framträdande har dessa kanske varit användningen av GPU:er, som ursprungligen var avsedda för grafik, för maskininlärning (GPU står Graphics Processing Unit). I många fall räcker det med att använda färdiga ramverk för en viss uppgift och att dessa har stöd för en accelerator, men många gånger kan man också behöva skriva accelererad kod själv. I den här kursen tittar vi på vad som skiljer olika acceleratortyper från en traditionell CPU, hur de kommunicerar med varandra och hur vi kan programmera dem och mäta prestanda - något som är extra viktigt eftersom det kan vara en stor utmaning att utnyttja ens en bråkdel av acceleratorernas teoretiska beräkningseffektivitet.