• Vi utvecklade en prestanda bärbar programmeringsmodell (PM) för många kärnenheter. • Att förena parallellutsändning och datalayout är obligatoriskt för prestandaportabilitet. • Kokkos C++library implementerar denna PM med pthreads, OpenMP och CUDA back-ends. • Demonstrera Xeon Phi och NVIDIA GPU-prestandaportabilitet med miniapplikationer. • Rekommendera en strategi för äldre ansökningskoder för att migrera till mångacore. a r t i c l e i n f o Den mångkärniga revolutionen kan kännetecknas av ökande antal trådar, minskat minne per tråd och mångfald av ständigt föränderliga mångakärniga arkitekturer. Högpresterande datortillämpningar (HPC) och bibliotek måste utnyttja allt finare parallellism inom sina koder för att upprätthålla skalbarheten på dessa enheter. Ett stort hinder för prestandaportabilitet är de olika och motstridiga begränsningarna av minnesåtkomstmönster mellan olika enheter. Samtida bärbara programmeringsmodeller behandlar många centrala parallellism (t.ex. OpenMP, OpenACC, OpenCL) men hanterar inte minnesåtkomstmönster. Kokkos C++-biblioteket gör det möjligt för applikationer och domänbibliotek att uppnå prestandaportabilitet på många centrala arkitekturer genom att förena abstraktioner för både finkornig dataparallalism och minnesåtkomstmönster. I den här artikeln beskriver vi Kokkos abstraktioner, sammanfattar dess applikationsprogrammer-gränssnitt (API), presenterar resultat för enhetstestkärnor och miniapplikationer samt skisserar en stegvis strategi för migrering av äldre C++-koder till Kokkos. Kokkos-biblioteket är under aktiv forskning och utveckling för att integrera funktioner från nya generationer av många centrala arkitekturer och för att ta itu med en växande lista över applikationer och domänbibliotek.
Kokkos REF tillhandahåller abstraktioner för parallell kodutförande och datahantering för CUDA, OpenMP och Pthreads via ett C++-bibliotek.
Kokkos: Enabling manycore performance portability through polymorphic memory access patterns
{'venue': 'J. Parallel Distributed Comput.', 'journal': 'J. Parallel Distributed Comput.', 'mag_field_of_study': ['Computer Science']}