Abstract-Programmering acceleratorer som GPU:er med låg nivå API:er och språk som OpenCL och CUDA är svåra, felbenägna, och inte prestanda-portable. Automatisk parallellisering och domänspecifika språk (DSL) har föreslagits för att dölja komplexitet och återfå prestanda portabilitet. Vi presenterar PENCIL, en strikt definierad undergrupp av GNU C99-berikad med ytterligare språkkonstruktioner-som gör det möjligt för kompilatorer att utnyttja parallellism och producera mycket optimerad kod när man riktar acceleratorer. PENCIL syftar till att fungera både som ett portabelt implementeringsspråk för bibliotek och som målspråk för DSL-kompilatorer. Vi implementerade en PENCIL-till-OpenCL-backend med hjälp av en toppmodern polyhedral kompilator. Polyhedralkompilatorn, utökad för att hantera databeroende kontrollflöde och icke-affin array åtkomster, genererar optimerad OpenCL-kod. För att demonstrera potentialen och prestandaportabiliteten hos PENCIL och PENCIL-till-OpenCL kompilatorn, anser vi att ett antal bildbehandlingskärnor, en uppsättning riktmärken från Rodinia och SHOC sviter, och DSL inbäddande scenarier för linjär algebra (BLAS) och signalbehandling radarapplikationer (SpearDE), och presentera experimentella resultat för fyra GPU-plattformar: AMD Radeon HD 5670 och R9 285, NVIDIA GTX 470, och ARM Mali-T604.
PENCIL REF är ett programmeringsspråk som definieras som en begränsad delmängd av C99, avsedd som ett genomförandespråk för bibliotek och ett samlingsmål för DSL.
PENCIL: A Platform-Neutral Compute Intermediate Language for Accelerator Programming
{'venue': '2015 International Conference on Parallel Architecture and Compilation (PACT)', 'journal': '2015 International Conference on Parallel Architecture and Compilation (PACT)', 'mag_field_of_study': ['Computer Science']}