Automatisk parallellisering

Automatisk parallellisering  - optimering av programmet av kompilatorn , vilket består i att automatiskt konvertera det till en form som körs på en parallell dator , till exempel på en SMP- eller NUMA-maskin. Målet med att automatisera parallellisering är att befria programmeraren från den tidskrävande och felbenägna processen med manuell parallellisering. Trots att kvaliteten på automatisk parallellisering har förbättrats under de senaste åren, är den fullständiga parallelliseringen av sekventiella program fortfarande en alltför svår uppgift som kräver de mest komplexa typerna av programanalys.

Auto-parallelleraren fokuserar vanligtvis på kontrollkonstruktioner som slingor som bearbetar arrayer, eftersom i allmänhet det mesta av programmets exekvering sker inuti slingor av något slag. Den parallella kompilatorn försöker dela slingan i delar så att dess separata iterationer kan köras på olika processorer samtidigt.

Programanalys

Kompilatorer analyserar innan de gör parallellisering för att svara på följande frågor:

Svårigheter

Automatisk parallellisering är svårt för kompilatorer av skäl:

På grund av komplexiteten i helautomatisk parallellisering finns det flera metoder för att förenkla det:

Tidiga parallelliserande kompilatorer

Många tidiga parallelliserande kompilatorer arbetade med program skrivna i Fortran , på grund av dess strängare restriktioner för pekaraliasing jämfört med C. Dessutom skrivs ett stort antal beräkningsmatematikprogram i Fortran, vilket kräver stora resurser för sitt arbete. Exempel på kompilatorer:

Moderna kompilatorer med stöd för parallellisering

Se även

Anteckningar

  1. 1 2 3 4 5 6 7 8 Patrick Lam. Föreläsning 12. Vi ska prata om automatisk parallellisering idag (länk ej tillgänglig) . ECE459: Programmering för prestanda (10 februari 2011). Hämtad 17 november 2013. Arkiverad från originalet 27 maj 2015. 
  2. 1 2 Robert van Engelen. Högpresterande beräkningar och vetenskaplig beräkning . HPC vid Florida State University (3 oktober 2012). Hämtad 17 november 2013. Arkiverad från originalet 27 maj 2015.

Länkar