Abstrakt. Att utnyttja den fulla beräkningskraften hos nuvarande hierarkiska multiprocessormaskiner kräver en mycket noggrann fördelning av trådar och data mellan den underliggande icke-uniforma arkitekturen för att undvika åtkomststraff för minne. Direktivbaserade programmeringsspråk som OpenMP ger programmerare ett enkelt sätt att strukturera parallelliteten i deras tillämpning och överföra denna information till körtidssystemet. Vår körtid, som är baserad på en flernivås trådschemaläggare i kombination med en NUMA-medveten minneshanterare, omvandlar denna information till "schemaläggningstips" för att lösa problem med tråd/minnesaffinitet. Det möjliggör dynamisk lastfördelning styrd av applikationsstruktur och maskinvarutopologi, vilket bidrar till att uppnå prestandaportabilitet. Första experimenten visar att blandade lösningar (migrerande trådar och data) överträffar nästa-touch-baserade datadistributionspolicyer och öppnar möjligheter för nya optimeringar.
En förlängning av GNU OpenMP, ForestGomp REF, gör det möjligt för utvecklare att ge tips till körtidssystemet för att schemalägga tråd- och minnesmigreringar.
Dynamic Task and Data Placement over NUMA Architectures : an OpenMP Runtime Perspective
{'venue': 'IWOMP', 'journal': None, 'mag_field_of_study': ['Computer Science']}