Spatial blockering är en kritisk minnesåtkomstoptimering för att effektivt utnyttja datorresurserna hos parallella processorer, såsom många huvudprocessorer. Genom att återanvända cache-laddade data över flera rumsliga iterationer, kan rumslig blockering avsevärt minska trycket av att få tillgång till långsamt globalt minne. Stencilberäkningar kan till exempel utnyttja sådan dataåteranvändning via rumslig blockering genom GPU:s minneshierarki för att förbättra prestandan. Tillvägagångssätt för att dra nytta av sådan blockering kräver dock komplexa och tråkiga ändringar av GPU-kärnorna för olika schabloner, GPU-arkitekturer och flera nivåers cachesystem. I detta arbete utforskar vi utmaningarna med olika rumsliga blockeringsstrategier över tre cachenivåer av GPU (dvs. L1 cache, scratchpad minne, och register) och föreslår ett ramverk GPUUniCache att automatiskt generera koder för att komma åt buffrade data i cached system av GPUs. Baserat på egenskaperna hos rumslig blockering över olika stencilkärnor generaliserar vi mönster för datakommunikation, indexkonvertering och synkronisering (med abstrakta ISA-vänliga gränssnitt) och kartlägger dem till olika arkitekturer med högt optimerade kodvarianter. Vårt tillvägagångssätt förenklar avsevärt utformningen av effektiva och bärbara schablonberäkningar över GPU:er. Jämfört med schablonkärnor baserade på maskinvarustyrt minne (L1 cache) och andra state-of-theart GPU-riktmärken, kan GPU-UniCache uppnå betydande förbättringar. •Komputeringsmetoder → Vektor / strömmande algoritmer; •Programvara och dess teknik → Domänspecifika språk;
Liknande i mål till Swizzle Inventor, Hou et al. föreslå ett ramverk, kallat GPU-UniCache, för att automatiskt generera kod som får tillgång till data buffrad i register och delat minne REF.
GPU-UniCache: Automatic Code Generation of Spatial Blocking for Stencils on CPUs
{'venue': "CF'17", 'journal': None, 'mag_field_of_study': ['Computer Science']}