Bildbehandling pipelines kombinerar utmaningarna med schablonberäkningar och stream program. De består av stora grafer av olika stencilstadier, komplexa reduceringar och stadier med globala eller databeroende åtkomstmönster. På grund av deras komplexa struktur, prestandaskillnaden mellan en naiv implementering av en pipeline och en optimerad en är ofta en storleksordning. Effektiva implementeringar kräver optimering av både parallellism och lokalitet, men på grund av stencilernas natur finns det en grundläggande spänning mellan parallellism, lokalitet och införande av redundant recomputation av delade värden. Vi presenterar en systematisk modell av tradeoff utrymme grundläggande till schablon pipelines, en schema representation som beskriver konkreta punkter i detta utrymme för varje steg i en bildbehandling pipeline, och en optimerande kompilator för Halide bildbehandlingsspråk som syntetiserar högpresterande implementationer från en Halide algoritm och ett schema. Genom att kombinera denna kompilator med stokastisk sökning över scheman möjliggörs terse, kompatibla program för att uppnå state-of-the-art prestanda på ett brett spektrum av verkliga bildbehandling pipelines, och över olika maskinvaruarkitekturer, inklusive multicores med SIMD, och heterogen CPU+GPU exekvering. Från enkla Halide program skrivna på några timmar, visar vi prestanda upp till 5× snabbare än handjusterade C, inneboende, och CUDA implementationer optimeras av experter över veckor eller månader, för bildbehandling program utom räckhåll för tidigare automatiska kompilatorer.
Halide REF-ramverket justerar lokala parametrar och parallellismparametrar för bildbehandlingsrörledning.
Halide: a language and compiler for optimizing parallelism, locality, and recomputation in image processing pipelines
{'venue': 'PLDI', 'journal': None, 'mag_field_of_study': ['Computer Science']}