Stencilberäkningar används i stor utsträckning från fysiska simuleringar till maskininlärning. De är pinsamt parallella och passar perfekt modern hårdvara som Graphic Processing Units. Även om schablonberäkningar har studerats i stor utsträckning, är det fortfarande svårt att optimera dem för allt mer varierande hårdvara. Domänspecifika språk (DSL) har höjt programabstractionen och erbjuder goda resultat. Detta lägger dock bördan på DSL-implementatorer som måste skriva nästan fullfjädrad parallelliserande kompilatorer och optimatorer. Lift har nyligen dykt upp som ett lovande tillvägagångssätt för att uppnå prestandaportabilitet och bygger på en liten uppsättning återanvändbara parallella primitiver som DSL eller bibliotek författare kan bygga på. Lift nyckel nyhet är i sin kodning av optimeringar som ett system av extensible rewrite regler som används för att utforska optimering utrymme. Lift har dock främst fokuserat på linjär algebraverksamhet och det återstår att se om detta tillvägagångssätt är tillämpligt för andra områden. Detta papper visar hur komplexa flerdimensionella schablonkod och optimeringar såsom tiling är uttryckliga med hjälp av kompositioner av enkla 1D Lift primitiva. Genom att utnyttja befintliga Lift primitiva och optimeringar, kräver vi bara tillägg av två primitiva och en skriva om regeln för att göra det. Våra resultat visar att detta tillvägagångssätt överträffar befintliga kompilatormetoder och handjusterade koder.
LIFT REF är ett funktionellt dataparallell programmeringsspråk som gör det möjligt att uttrycka stencilslingor som en uppsättning återanvändbara parallella primitiver och optimera dem.
High performance stencil code generation with lift