Parallel Recursive Filtering
- f Infinite Input Extensions
Diego Nehab Andrรฉ Maximo IMPA GE Global Research
GTC 2017
of Infinite Input Extensions Diego Nehab Andr Maximo IMPA GE - - PowerPoint PPT Presentation
Parallel Recursive Filtering of Infinite Input Extensions Diego Nehab Andr Maximo IMPA GE Global Research GTC 2017 Linear time-invariant filters filter Linear Invariant to scale filter scale scale filter Linear Invariant to
Diego Nehab Andrรฉ Maximo IMPA GE Global Research
GTC 2017
filter
filter scale filter scale
add add filter filter filter
filter t t shift filter t t t shift t
๐ = ๐ โ ๐ข ๐๐ = เท
๐=โโ โ
๐
๐โ๐โ๐
๐, ๐ข, ๐: โค โ โ ๐ ๐ข ๐ข ๐ข ๐ = ๐ โ ๐ข ๐ข
filterโs impulse response unit impulse filter convolve filter
๐๐ด = ๐๐ฑ โฑ โฑ โฑ โฑ โฑ ๐0 ๐โ1 โฎ ๐โ๐ โฑ ๐1 ๐0 ๐โ1 โฎ ๐โ๐ โฑ โฎ ๐1 ๐0 ๐โ1 โฎ โฑ ๐๐ โฎ ๐1 ๐0 ๐โ1 โฑ ๐๐ โฎ ๐1 ๐0 โฑ โฑ โฑ โฑ โฑ โฎ ๐จ๐โ2 ๐จ๐โ1 ๐จ๐ ๐จ๐+1 ๐จ๐+2 โฎ = โฑ โฑ โฑ โฑ โฑ ๐0 ๐โ1 โฎ ๐โ๐ โฑ ๐1 ๐0 ๐โ1 โฎ ๐โ๐ โฑ โฎ ๐1 ๐0 ๐โ1 โฎ โฑ ๐๐ โฎ ๐1 ๐0 ๐โ1 โฑ ๐๐ โฎ ๐1 ๐0 โฑ โฑ โฑ โฑ โฑ โฎ ๐ฅ๐โ2 ๐ฅ๐โ1 ๐ฅ๐ ๐ฅ๐+1 ๐ฅ๐+2 โฎ constant diagonals ๐๐ ๐จ๐โ๐ + โฏ + ๐1๐จ๐โ1+๐0๐จ๐+๐โ1๐จ๐+1+ โฏ + ๐โ๐ ๐จ๐+๐ = ๐๐๐ฅ๐โ๐ + โฏ + ๐1๐ฅ๐โ1+๐0๐ฅ๐+๐โ1๐ฅ๐+1+ โฏ + ๐โ๐๐ฅ๐+๐ filter ๐ด ๐ฑ ๐ด ๐ด
finite impulse response support (FIR) โฎ ๐ฆ๐โ2 ๐ฆ๐โ1 ๐ฆ๐ ๐ฆ๐+1 ๐ฆ๐+2 โฎ = โฑ โฑ โฑ โฑ โฑ ๐0 ๐โ1 โฎ ๐โ๐ก โฑ ๐1 ๐0 ๐โ1 โฎ ๐โ๐ก โฑ โฎ ๐1 ๐0 ๐โ1 โฎ โฑ ๐๐ก โฎ ๐1 ๐0 ๐โ1 โฑ ๐๐ก โฎ ๐1 ๐0 โฑ โฑ โฑ โฑ โฑ โฎ ๐ฅ๐โ2 ๐ฅ๐โ1 ๐ฅ๐ ๐ฅ๐+1 ๐ฅ๐+2 โฎ
๐ฒ ๐ด recursive ๐ฆ๐ = ๐๐ก๐ฅ๐โ๐ก + โฏ + ๐1๐ฅ๐โ1+๐0๐ฅ๐+๐โ1๐ฅ๐+1+ โฏ + ๐โ๐ก๐ฅ๐+๐ก direct part is what we think of as convolution it is like a matrix multiplication ๐ฒ = ๐๐ฑ ๐(๐ก ๐)
๐๐ ๐จ๐โ๐ + โฏ + ๐1๐จ๐โ1+๐0๐จ๐+๐โ1๐จ๐+1+ โฏ + ๐โ๐ ๐จ๐+๐ = ๐ฆ๐ recursive part is the inverse of a convolution it is like a linear system ๐๐ด = ๐ฒ infinite impulse response support (IIR) โฑ โฑ โฑ โฑ โฑ ๐0 ๐โ1 โฎ ๐โ๐ โฑ ๐1 ๐0 ๐โ1 โฎ ๐โ๐ โฑ โฎ ๐1 ๐0 ๐โ1 โฎ โฑ ๐๐ โฎ ๐1 ๐0 ๐โ1 โฑ ๐๐ โฎ ๐1 ๐0 โฑ โฑ โฑ โฑ โฑ โฎ ๐จ๐โ2 ๐จ๐โ1 ๐จ๐ ๐จ๐+1 ๐จ๐+2 โฎ = โฎ ๐ฆ๐โ2 ๐ฆ๐โ1 ๐ฆ๐ ๐ฆ๐+1 ๐ฆ๐+2 โฎ direct ๐ฑ filter ๐ด ๐ฑ ๐ด ๐ด direct ๐ฑ ๐ด recursive ๐๐ด = ๐๐ฑ ๐ฒ = ๐๐ฑ ๐๐ด = ๐ฒ
๐ ๐ด = โ๐0 โฑ โฑ โฑ โฑ 1 ๐1 โฎ ๐๐ 1 ๐1 โฎ ๐๐ 1 ๐1 โฎ โฑ 1 ๐1 โฑ 1 โฑ โฑ ๐ด = ๐ณ anticausal ๐ด
direct ๐ฑ ๐ฒ causal ๐ณ anticausal ๐ด ๐ง๐ = 1 โ๐0 ๐ฆ๐ โ ๐1๐ง๐โ1 โ โฏ โ ๐๐ ๐ง๐โ๐ causal part is forward-substitution ๐๐ณ = ๐ฒ ๐(๐ ๐) ๐จ๐ = 1 โ๐0 ๐ง๐ โ ๐1๐จ๐+1 โ โฏ โ ๐๐ ๐จ๐+๐ anticausal is back-substitution ๐ ๐ด = ๐ณ ๐(๐ ๐) ๐ฒ causal ๐๐ณ = โ๐0 โฑ โฑ 1 โฑ ๐1 1 โฑ โฎ ๐1 1 ๐๐ โฎ ๐1 1 ๐๐ โฎ ๐1 1 โฑ โฑ โฑ โฑ ๐ณ = ๐ฒ ๐ด recursive ๐ฒ ๐๐ด = ๐ฒ ๐๐ณ = ๐ฒ ๐ ๐ด = ๐ณ ๐ฒ = ๐๐ฑ
recursive filter
prefiltered post-processed output input Catmull-Rom t cardinal cubic B-spline t
infinite support
cubic B-spline t prefiltered [Nehab & Hoppe 2014]
input direct convolution ๐ก = 2 ๐
2 ๐ ๐ operations
Blur with FIR filter (given ๐)
causal pass ๐ = 3 anticausal pass ๐ = 3
6๐ operations Blur with IIR filter (any ๐) Blur with FFT ๐ log ๐ operations
[van Vliet et al. 1998]
? ?
repeat periodically filter reflect periodically filter constant padding filter
periodic repetition clamp to border
filtered, tiled, and shifted
even more wasted computation filtered even more wasted memory padded filtered more wasted computation padded more wasted memory wasted memory padded wasted computation filtered
input approximation
amount of padding depends
finite output
finite input ๐ฒ2 ๐ฒ4 ๐ฒ5 ๐ฒ6 ๐ฒ1 ๐ฒ3 input extension ๐ฒโ3 ๐ฒโ1 ๐ฒโ0 ๐ฒโ2 ๐ฒโ4 ๐ฒโ5
โฆ
๐ฒ8 ๐ฒ10 ๐ฒ7 ๐ฒ9 ๐ฒ11 ๐ฒ12 โฆ input extension ๐ด8 ๐ด10 ๐ด9 ๐ด11 ๐ด12 โฆ ๐ด5 ๐ด3 ๐ด2 ๐ด1 ๐ด6 ๐ด4 ๐ด7 ๐ณ2 ๐ณ4 ๐ณ5 ๐ณ6 ๐ณ1 ๐ณ3 ๐ณ8 ๐ณ10 ๐ณ7 ๐ณ9 ๐ณ11 ๐ณ12 โฆ ๐ณ0
โฆ
๐ณโ2 ๐ณโ1 ๐ณโ3 ๐ณโ4 ๐ณโ5
finite output
initial causal feedback initial anticausal feedback finite input input extension ๐ฒโ3 ๐ฒโ1 ๐ฒโ0 ๐ฒโ2 ๐ฒโ4 ๐ฒโ5
โฆ
๐ฒ8 ๐ฒ10 ๐ฒ7 ๐ฒ9 ๐ฒ11 ๐ฒ12 โฆ input extension ๐ด5 ๐ด3 ๐ด2 ๐ด1 ๐ด6 ๐ด4 ๐ด7 ๐ฒ2 ๐ฒ4 ๐ฒ5 ๐ฒ6 ๐ฒ1 ๐ฒ3 ๐ณ2 ๐ณ4 ๐ณ5 ๐ณ6 ๐ณ1 ๐ณ3 ๐ณ0
๐ณ8 ๐ณ10 ๐ณ7 ๐ณ9 ๐ณ11 ๐ณ12 โฆ series finite input ๐ฒ2 ๐ฒ4 ๐ฒ5 ๐ฒ6 ๐ฒ1 ๐ฒ3 input extension ๐ด5 ๐ด3 ๐ด2 ๐ด1 ๐ด6 ๐ด4 anticausal ๐ณ2 ๐ณ4 ๐ณ5 ๐ณ6 ๐ณ1 ๐ณ3 causal ๐ฒ0 ๐ฒ0 ๐ฒ0 ๐ฒ0 ๐ฒ0 ๐ฒ0
โฆ
๐ณโ2 ๐ณโ1 ๐ณโ3 ๐ณโ4 ๐ณโ5
โฆ
infinite series ๐ณ0 ๐ณ0 = ๐ต1 ๐ฒ0 initial causal feedback ๐ด8 ๐ด10 ๐ด9 ๐ด11 ๐ด12 โฆ infinite series ๐ด7 = ๐ต2 ๐ด7 + ๐ต3 ๐ณ6 ๐ฒ7 initial anticausal feedback ๐ฒ7 ๐ฒ7 ๐ฒ7 ๐ฒ7 ๐ฒ7 ๐ฒ7 โฆ input extension ๐ต1 = ๐ป๐บเดฅ ๐ฉ๐บ ๐ป๐บ = ๐ฑ โ ๐ฉ๐บ
๐ โ1
๐ต2 = ๐ป๐๐บ๐ฉ๐บ
๐
๐ป๐๐บ โ ๐ฉ๐
๐ ๐ป๐๐บ๐ฉ๐บ ๐ = เดฅ
๐ฉ๐ ๐ต3 = ๐ป๐เดฅ ๐ฉ๐ โ ๐ป๐๐บ๐ฉ๐บ
๐ ๐ต1
๐ป๐ = ๐ฑ โ ๐ฉ๐
๐ โ1
finite output precomputed ๐ ร ๐ matrix precomputed ๐ ร ๐ matrices
แถ ๐ณ2 แถ ๐ณ4 แถ ๐ณ5 แถ ๐ณ6 แถ ๐ณ1 แถ ๐ณ3 1st causal 2nd causal ๐ณ2 ๐ณ4 ๐ณ5 ๐ณ6 ๐ณ1 ๐ณ3 2nd anticausal ๐ด5 ๐ด3 ๐ด2 ๐ด1 ๐ด6 ๐ด4 แถ ๐ด5 แถ ๐ด3 แถ ๐ด2 แถ ๐ด1 แถ ๐ด6 แถ ๐ด4 1st anticausal
finite input ๐ฒ2 ๐ฒ4 ๐ฒ5 ๐ฒ6 ๐ฒ1 ๐ฒ3 = ๐ต5 ๐ด1 แถ ๐ด1 ๐ด1 initial anticausal feedback ๐ณ6 = ๐ต4 แถ ๐ณ6 ๐ณ6 initial causal feedback ๐ต4 = ๐ฑ โ ๐ฉ๐บ
๐ โ1
๐ต5 = ๐ฑ โ ๐ฉ๐
๐ โ1
finite output input extension ๐ฒ3 ๐ฒ5 ๐ฒ6 ๐ฒ4 ๐ฒ2 ๐ฒ1
โฆ
๐ฒ2 ๐ฒ4 ๐ฒ1 ๐ฒ3 ๐ฒ5 ๐ฒ6 โฆ input extension
แท ๐ด5 แท ๐ด3 แท ๐ด2 แท ๐ด1 แท ๐ด6 แท ๐ด4 1st anticausal แถ ๐ณ2 แถ ๐ณ4 แถ ๐ณ5 แถ ๐ณ6 แถ ๐ณ1 แถ ๐ณ3 1st causal ๐ณ2 ๐ณ4 ๐ณ5 ๐ณ6 ๐ณ1 ๐ณ3 2nd causal
finite input ๐ฒ2 ๐ฒ4 ๐ฒ5 ๐ฒ6 ๐ฒ1 ๐ฒ3 แถ ๐ณ6 ๐ณ12 = ๐ต8 + ๐ต9 แท ๐ด1 แถ ๐ณ6 ๐ณ12 = ๐ต6 + ๐ต7 ๐ต7 = ๐ฑ โ ๐ฉ๐บ
2โ โ1๐ณ เดฅ
๐ฉ๐
โ1 ๐ฑ โ ๐ฉ๐บ ๐ ๐ฉ๐ ๐
๐ต6 = ๐ฑ โ ๐ฉ๐บ
2โ โ1 ๐ฉ๐บ โ โ ๐ณ๐ฉ๐ โ เดฅ
๐ฉ๐บ
โ1๐ฉ๐บ ๐ เดฅ
๐ฉ๐ ๐ต8 = ๐ณ โ ๐ฉ๐
๐ โ๐เดฅ
๐ฉ๐ ๐ต9 = ๐ณ โ ๐ฉ๐
๐ โ๐เดฅ
๐ฉ๐๐ฉ๐บ
โ
๐ณ12 initial causal feedback initial anticausal feedback finite output ๐ด5 ๐ด3 ๐ด2 ๐ด1 ๐ด6 ๐ด4 2nd anticausal input extension
โฆ โฆ
input extension
GPU
Threads Threads Shared Memor y Shared Memor y
Global Memory
Multiprocessor Multiprocessor
๐ฒ13 ๐ฒ15 ๐ฒ16 ๐ฒ12 ๐ฒ14 ๐ฒ1 ๐ฒ3 ๐ฒ4 ๐ฒ5 ๐ฒ2
input ๐ฒ7 ๐ฒ9 ๐ฒ10 ๐ฒ11 ๐ฒ6 ๐ฒ8
๐ณ1 ๐ณ3 ๐ณ4 ๐ณ5 ๐ณ2 ๐ณ13 ๐ณ15 ๐ณ16 ๐ณ12 ๐ณ14 ๐ณ7 ๐ณ9 ๐ณ10 ๐ณ11 ๐ณ6 ๐ณ8 causal ๐ด1 ๐ด2 ๐ด3 ๐ด4 ๐ด13 ๐ด15 ๐ด14 ๐ด16 ๐ด8 ๐ด7 ๐ด6 ๐ด5 ๐ด10 ๐ด11 ๐ด9 ๐ด12 anticausal [Ruijters and Thevenaz 2010]
๐ is the filter order ๐ is the number of processors โ is the image height ๐ฅ is the image width
Algorithm Step complexity Threads Bandwidth independent rows then columns 4๐ โ๐ฅ/๐ โ, ๐ฅ 8โ๐ฅ
7 1 3 5 Throughput (GiP/s) 1st order Input size (pixels) 642 1282 2562 5122 10242 20482 40962
[Nehab, Maximo, Lima & Hoppe 2011]
independent rows then columns
correct feedbacks ๐ด9 ๐ด1 ๐ด5 ๐ด13 แถ ๐ด9 แถ ๐ด1 แถ ๐ด5 แถ ๐ด13 ๐ด10 ๐ด11 ๐ด9 ๐ด12 2nd anticausal ๐ณ13 ๐ณ15 ๐ณ16 ๐ณ14 2nd causal แถ ๐ณ13 แถ ๐ณ15 แถ ๐ณ16 แถ ๐ณ14 1st causal แถ ๐ณ4 แถ ๐ณ8 แถ ๐ณ12 แถ ๐ณ16 แถ ๐ณ10 แถ ๐ณ12 แถ ๐ณ9 แถ ๐ณ11 1st causal ๐ณ12 ๐ณ9 ๐ณ10 ๐ณ11 2nd causal แถ ๐ณ5 แถ ๐ณ7 แถ ๐ณ6 แถ ๐ณ8 1st causal ๐ณ4 ๐ณ16 ๐ณ12 ๐ณ8 correct feedbacks ๐ณ5 ๐ณ7 ๐ณ6 ๐ณ8 2nd causal 1st causal แถ ๐ณ1 แถ ๐ณ3 แถ ๐ณ4 แถ ๐ณ2 ๐ณ3 ๐ณ1 ๐ณ4 ๐ณ2 2nd causal ๐ฒ13 ๐ฒ15 ๐ฒ16 ๐ฒ14 ๐ฒ1 ๐ฒ3 ๐ฒ4 ๐ฒ2 ๐ฒ12 ๐ฒ9 ๐ฒ10 ๐ฒ11 ๐ฒ5 ๐ฒ7 ๐ฒ6 ๐ฒ8 แถ ๐ด1 แถ ๐ด2 แถ ๐ด3 แถ ๐ด4 1st anticausal แถ ๐ด13 แถ ๐ด15 แถ ๐ด14 แถ ๐ด16 1st anticausal แถ ๐ด8 แถ ๐ด7 แถ ๐ด6 แถ ๐ด5 1st anticausal แถ ๐ด10 แถ ๐ด11 แถ ๐ด9 แถ ๐ด12 1st anticausal ๐ด1 ๐ด2 ๐ด3 ๐ด4 2nd anticausal ๐ด13 ๐ด15 ๐ด14 ๐ด16 2nd anticausal ๐ด8 ๐ด7 ๐ด6 ๐ด5 2nd anticausal แถ ๐ด๐๐ ๐ด๐๐ ๐ด๐(๐+1) = ๐ฉ๐
๐
+
input ๐ฒ13 ๐ฒ15 ๐ฒ16 ๐ฒ14 ๐ฒ1 ๐ฒ3 ๐ฒ4 ๐ฒ2 ๐ฒ12 ๐ฒ9 ๐ฒ10 ๐ฒ11 ๐ฒ5 ๐ฒ7 ๐ฒ6 ๐ฒ8 แถ ๐ณ๐๐ ๐ณ๐๐ ๐ณ๐(๐โ1) = ๐ฉ๐บ
๐
+ [Sung & Mitra 1986; Nehab, Maximo, Lima & Hoppe 2011]
๐ is the filter order ๐ is the number of processors โ is the image height ๐ฅ is the image width
Algorithm Step complexity Threads Bandwidth independent rows then columns 4๐ โ๐ฅ/๐ โ, ๐ฅ 8โ๐ฅ + split rows and columns โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 9โ๐ฅ
7 1 3 5 Throughput (GiP/s) 1st order Input size (pixels) 642 1282 2562 5122 10242 20482 40962
[Nehab, Maximo, Lima & Hoppe 2011]
independent rows then columns + split rows and columns
correct feedbacks ๐ด9 ๐ด1 ๐ด5 ๐ด13 แท ๐ด10 แท ๐ด11 แท ๐ด9 แท ๐ด12 1st anticausal ๐ด10 ๐ด11 ๐ด9 ๐ด12 2nd anticausal แท ๐ด9 แท ๐ด1 แท ๐ด5 แท ๐ด13 ๐ด13 ๐ด15 ๐ด14 ๐ด16 2nd anticausal แท ๐ด13 แท ๐ด15 แท ๐ด14 แท ๐ด16 1st anticausal ๐ณ15 ๐ณ13 ๐ณ16 ๐ณ14 2nd causal ๐ณ12 ๐ณ9 ๐ณ10 ๐ณ11 2nd causal ๐ณ5 ๐ณ7 ๐ณ6 ๐ณ8 2nd causal ๐ณ3 ๐ณ1 ๐ณ4 ๐ณ2 2nd causal แถ ๐ณ12 แถ ๐ณ9 แถ ๐ณ10 แถ ๐ณ11 1st causal 1st causal แถ ๐ณ1 แถ ๐ณ3 แถ ๐ณ4 แถ ๐ณ2 แถ ๐ณ13 แถ ๐ณ15 แถ ๐ณ16 แถ ๐ณ14 1st causal แถ ๐ณ5 แถ ๐ณ7 แถ ๐ณ6 แถ ๐ณ8 1st causal ๐ณ4 ๐ณ16 ๐ณ12 ๐ณ8 correct feedbacks แท ๐ด8 แท ๐ด7 แท ๐ด6 แท ๐ด5 1st anticausal แท ๐ด1 แท ๐ด2 แท ๐ด3 แท ๐ด4 1st anticausal ๐ด8 ๐ด7 ๐ด6 ๐ด5 2nd anticausal ๐ด1 ๐ด2 ๐ด3 ๐ด4 2nd anticausal แถ ๐ณ4 แถ ๐ณ8 แถ ๐ณ12 แถ ๐ณ16
input แถ ๐ณ๐๐ ๐ณ๐๐ ๐ณ๐(๐โ1) = ๐ฉ๐บ
๐
+ [Nehab, Maximo, Lima & Hoppe 2011] แท ๐ด๐๐ ๐ด๐๐ ๐ด๐(๐+1) = ๐ฉ๐
๐
+ ๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ ๐ณ๐(๐โ1) + ๐ฒ13 ๐ฒ15 ๐ฒ16 ๐ฒ14 ๐ฒ1 ๐ฒ3 ๐ฒ4 ๐ฒ2 ๐ฒ12 ๐ฒ9 ๐ฒ10 ๐ฒ11 ๐ฒ5 ๐ฒ7 ๐ฒ6 ๐ฒ8
๐ is the filter order ๐ is the number of processors โ is the image height ๐ฅ is the image width
Algorithm Step complexity Threads Bandwidth independent rows then columns 4๐ โ๐ฅ/๐ โ, ๐ฅ 8โ๐ฅ + split rows and columns โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 9โ๐ฅ + overlap causal with anticausal โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 5โ๐ฅ
7 1 3 5 Throughput (GiP/s) 1st order Input size (pixels) 642 1282 2562 5122 10242 20482 40962
[Nehab, Maximo, Lima & Hoppe 2011]
independent rows then columns + split rows and columns + overlap causal and anticausal
[Nehab, Maximo, Lima & Hoppe 2011]
เดบ ๐ฏ๐,๐ ๐ฏ๐,๐ ๐ฏ๐,๐โ1
= ๐ฉ๐บ
๐ ๐ข +
๐ฉ๐๐น + ๐ฉ๐๐ถ๐ฉ๐บ๐ถ ๐ ๐ฉ๐บ๐ถ ๐ข +
๐ด๐+1,๐ ๐ณ๐โ1,๐
๐ฉ๐
๐ ๐ข +
๐ด๐+1,๐ ๐ฐ๐,๐ ๐ฐ๐,๐+1
= + ๐ฉ๐๐ถ๐ฉ๐บ๐ ๐ฉ๐๐น
๐ฏ๐,๐โ1 ๐ณ๐โ1,๐
๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ถ ๐ข +
แทแท ๐ฐ๐,๐
๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ ๐ข +
แถ ๐ณ๐,๐ ๐ณ๐,๐ ๐ณ๐โ1,๐
= ๐ฉ๐บ
๐
+
แท ๐ด๐,๐ ๐ด๐,๐ ๐ด๐+1,๐
= ๐ฉ๐
๐
+ ๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ ๐ณ๐โ1,๐ +
๐ is the filter order ๐ is the number of processors โ is the image height ๐ฅ is the image width
Algorithm Step complexity Threads Bandwidth independent rows then columns 4๐ โ๐ฅ/๐ โ, ๐ฅ 8โ๐ฅ + split rows and columns โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 9โ๐ฅ + overlap causal with anticausal โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 5โ๐ฅ + overlap rows with columns โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 3โ๐ฅ
7 1 3 5 Throughput (GiP/s) 1st order Input size (pixels) 642 1282 2562 5122 10242 20482 40962
[Nehab, Maximo, Lima & Hoppe 2011]
+ overlap rows and columns independent rows then columns + split rows and columns + overlap causal and anticausal
+ overlap rows and columns
[Nehab, Maximo, Lima & Hoppe 2011]
Input size (pixels) 642 1282 2562 5122 10242 20482 40962 2nd order 5 1 2 3 Throughput (GiP/s) 4
เดบ ๐ฏ๐,๐ ๐ฏ๐,๐ ๐ฏ๐,๐โ1
= ๐ฉ๐บ
๐ ๐ข +
๐ฉ๐๐น + ๐ฉ๐๐ถ๐ฉ๐บ๐ถ ๐ ๐ฉ๐บ๐ถ ๐ข +
๐ด๐+1,๐ ๐ณ๐โ1,๐ ๐ณ๐โ1,๐
๐ฉ๐
๐ ๐ข +
๐ด๐+1,๐ ๐ฐ๐,๐ ๐ฐ๐,๐+1
= + ๐ฉ๐๐ถ๐ฉ๐บ๐ ๐ฉ๐๐น
๐ฏ๐,๐โ1
๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ถ ๐ข +
แทแท ๐ฐ๐,๐
๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ ๐ข + ๐ฉ๐
๐ ๐ข +
๐ฐ๐,๐ ๐ฐ๐,๐+1
=
๐ฏ๐,๐โ1
๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ ๐ข + เดค
๐ฐ๐,๐ ๐ฏ๐,๐ ๐ฏ๐,๐โ1
= ๐ฉ๐บ
๐ ๐ข + เดฅ
๐ฏ๐,๐
แถ ๐ณ๐,๐ ๐ณ๐,๐ ๐ณ๐โ1,๐
= ๐ฉ๐บ
๐
+
แท ๐ด๐,๐ ๐ด๐,๐ ๐ด๐+1,๐
= ๐ฉ๐
๐
+ ๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ ๐ณ๐โ1,๐ + sequentially find per-block column feedbacks sequentially find per-block row feedbacks
เดฅ ๐ฏ๐,๐ เดบ ๐ฏ๐,๐
= ๐ฉ๐๐น + ๐ฉ๐๐ถ๐ฉ๐บ๐ถ ๐ ๐ฉ๐บ๐ถ ๐ข +
๐ด๐+1,๐ ๐ณ๐โ1,๐ เดค ๐ฐ๐,๐ ๐ด๐+1,๐
= + ๐ฉ๐๐ถ๐ฉ๐บ๐ ๐ฉ๐๐น
๐ณ๐โ1,๐
๐ผ ๐ฉ๐๐ถ ๐ฉ๐บ๐ถ ๐ข +
แทแท ๐ฐ๐,๐
new fully parallel intermediate stage (exactly the same as column processing)
Algorithm Step complexity Threads Bandwidth independent rows then columns 4๐ โ๐ฅ/๐ โ, ๐ฅ 8โ๐ฅ + split rows and columns โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 9โ๐ฅ + overlap causal with anticausal โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 5โ๐ฅ + overlap rows with columns โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 3โ๐ฅ + new trick โ 8๐ โ๐ฅ/๐ โ๐ฅ/๐ โ 3โ๐ฅ
๐ is the filter order ๐ is the number of processors โ is the image height ๐ฅ is the image width
13 1 3 5 7 9 11 642 81922 1282 2562 5122 10242 20482 40962 Input size (pixels) Throughput (GiP/s)
+ overlap rows and columns + new trick
3rd order 4th order
642 81922 1282 2562 5122 10242 20482 40962 17 1 3 15 13 11 9 7 5 Input size (pixels) Throughput (GiP/s)
+ overlap rows and columns + new trick 5th order
แถ ๐ณ2 แถ ๐ณ4 แถ ๐ณ5 แถ ๐ณ6 แถ ๐ณ1 แถ ๐ณ3 1st causal แท ๐ด5 แท ๐ด3 แท ๐ด2 แท ๐ด1 แท ๐ด6 แท ๐ด4 1st anticausal ๐ด5 ๐ด3 ๐ด2 ๐ด1 ๐ด6 ๐ด4 2nd anticausal ๐ณ2 ๐ณ4 ๐ณ5 ๐ณ6 ๐ณ1 ๐ณ3 2nd causal
entire finite input ๐ฒ2 ๐ฒ4 ๐ฒ5 ๐ฒ6 ๐ฒ1 ๐ฒ3 แถ ๐ณ6 ๐ณ12 = ๐ต8 + ๐ต9 แท ๐ด1 แถ ๐ณ6 ๐ณ12 = ๐ต6 + ๐ต7 ๐ต7 = ๐ฑ โ ๐ฉ๐บ
2โ โ1๐ณ เดฅ
๐ฉ๐
โ1 ๐ฑ โ ๐ฉ๐บ ๐ ๐ฉ๐ ๐
๐ต6 = ๐ฑ โ ๐ฉ๐บ
2โ โ1 ๐ฉ๐บ โ โ ๐ณ๐ฉ๐ โ เดฅ
๐ฉ๐บ
โ1๐ฉ๐บ ๐ เดฅ
๐ฉ๐ ๐ต8 = ๐ณ โ ๐ฉ๐
๐ โ๐เดฅ
๐ฉ๐ ๐ต9 = ๐ณ โ ๐ฉ๐
๐ โ๐เดฅ
๐ฉ๐๐ฉ๐บ
โ
๐ณ12 initial causal feedback initial anticausal feedback entire finite output input extension
โฆ โฆ
input extension แถ ๐ณ6 แท ๐ด1
13 1 3 5 7 9 11 642 81922 1282 2562 5122 10242 20482 40962 Input size (pixels) Throughput (GiP/s) 1st order (cubic B-spline interpolation) [Chaurasia et al. 2015] [Nehab et al. 2011] padding exact reflect exact repeat exact clamp to border
conv cuFFT [Chaurasia et al. 2015] [Nehab et al. 2011] 642 81922 1282 2562 5122 10242 20482 40962 7 1 3 5 Input size (pixels) Throughput (GiP/s) 3rd order (2D Gaussian blur with ๐ = ๐/6)
padding exact reflect exact repeat exact clamp to border
https://github.com/andmax/gpufilter