Förmågan hos en applikation att använda flera processorer (eller kärnor i en processor) vid behov förlitar sig på flera viktiga mekanismer som arbetar tillsammans:
1. Operativsystemstöd: Operativsystemet (OS) spelar en avgörande roll. Det tillhandahåller infrastrukturen för att hantera flera processer och trådar och schemalägga deras exekvering över tillgängliga processorer. Detta inkluderar funktioner som:
* multitasking: Förmågan att köra flera program samtidigt.
* Multithreading: Möjligheten att dela upp ett enda program i flera trådar som kan köras parallellt.
* Processplanering: Algoritmer som bestämmer vilken process eller tråd som ska köras på vilken processor vid en viss tidpunkt.
* Inter-Process Communication (IPC): Mekanismer som tillåter olika processer eller trådar att utbyta data och samordna deras aktiviteter.
2. Programmeringsspråk och bibliotek: Själva ansökan måste skrivas på ett sätt som gör att den kan utnyttja flera processorer. Detta innebär vanligtvis:
* Samtidsmodeller: Programmeringsparadigmer (som multithreading eller meddelande som passerar) som möjliggör parallell körning.
* Parallella programmeringsbibliotek: Bibliotek (som OpenMP, MPI eller CUDA) som ger verktyg och abstraktioner för att skriva parallellkod lättare. Dessa bibliotek hanterar ofta komplexiteten i att distribuera arbete över flera processorer.
3. Hårdvarustöd: Den underliggande hårdvaran måste kunna parallella bearbetning. Det här betyder:
* Flera processorer/kärnor: Systemet måste ha flera behandlingsenheter tillgängliga.
* delat minne (för vissa modeller): För multitreaded -applikationer tillåter delat minne trådar att enkelt komma åt och ändra samma data. Detta kräver hårdvarustöd för effektiv minnesåtkomst från flera kärnor.
* sammankopplingar: Höghastighetskommunikationsvägar (som systembussen) är avgörande för effektiv kommunikation mellan processorer.
I huvudsak är applikationens förmåga att använda flera processorer en samordnad insats. OS tillhandahåller miljön, programmeringsspråket och bibliotek erbjuder verktyg för att skriva parallellkod, och hårdvaran tillhandahåller bearbetningskraft och kommunikationsinfrastruktur. Om något av dessa element saknas eller otillräckliga kommer applikationen att begränsas i dess förmåga att utnyttja parallellbehandling.