SlideShare a Scribd company logo
1 of 18
Download to read offline
Akcelerace DWT pomocí SIMD
David Bařina
Fakulta informačních technologií VUT v Brně
30. dubna 2013
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 1 / 18
Úvod
co: akcelerace / vektorizace / paralelizace
čeho: diskrétní vlnková transformace (DWT)
kde: PC (x86-64) a ASVP (EdkDSP)
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 2 / 18
Vlnka CDF 9/7
−3 −2 −1 0 1 2 3
−0.5
0
0.5
1
1.5
φ
−4 −2 0 2 4
−0.5
0
0.5
1
1.5
˜φ
−3 −2 −1 0 1 2 3 4
−0.4
−0.2
0
0.2
0.4
0.6
0.8
ψ
−3 −2 −1 0 1 2 3 4
−0.5
0
0.5
1
˜ψ
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 3 / 18
DWT schématem lifting
di ← di − α(si + si+1)
si ← si + β(di−1 + di )
di ← di − γ(si + si+1)
si ← si + δ(di−1 + di )
di ← ζ−1
di
si ← ζsi
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 4 / 18
Dataflow DWT
α
β
γ
δ
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 5 / 18
Dataflow DWT: multi-loop (ML)
α
β
γ
δ
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 6 / 18
Dataflow DWT: double-loop (DL)
α
β
γ
δ
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 7 / 18
Dataflow DWT: shifted double-loop (SDL)
α
β
γ
δ
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 8 / 18
Srovnání 1D na PC (jen výpočet)
1.0n
10.0n
100.0n
1.0u
10.0 100.0 1.0k 10.0k 100.0k 1.0M 10.0M 100.0M
seconds/sample
samples
ML (0)
DL (4)
SDL (9)
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 9 / 18
Srovnání 1D na ASVP (jen výpočet)
100.0n
1.0u
10.0u
100.0u
10.0 100.0 1.0k 10.0k 100.0k 1.0M
seconds/sample
samples
ML/CPU (0)
ML/BCE (1)
DL (4)
SDL (5)
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 10 / 18
2D DWT
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 11 / 18
2D DWT
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 12 / 18
2D DWT
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 13 / 18
L1 data cache
4096 = 1024 × float
Intel Core2 Duo (L1d = 32kB, 8-way, 64 B)
[tag][cache set:6][offset:6]
4-way
[…000][xxxxxx][xxxxxx]
[…001][xxxxxx][xxxxxx]
[…010][xxxxxx][xxxxxx]
[…011][xxxxxx][xxxxxx]
[…100][xxxxxx][xxxxxx]
[…101][xxxxxx][xxxxxx]
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 14 / 18
Srovnání 2D na PC (cache)
1.0n
10.0n
100.0n
1.0k 10.0k 100.0k 1.0M 10.0M 100.0M
seconds/pixel
pixels
non-optimal stride (0)
prime stride (1)
prime-set stride (2)
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 15 / 18
Srovnání 2D na PC (implementace)
1.0n
10.0n
100.0n
1.0k 10.0k 100.0k 1.0M 10.0M 100.0M
seconds/pixel
pixels
ML (0)
SDL (9)
DL4 (11)
ML4 (12)
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 16 / 18
Srovnání 2D na ASVP
100.0n
1.0u
10.0u
1.0k 10.0k 100.0k 1.0M
seconds/pixel
pixels
ML/CPU (0)
ML/BCEx1 (1)
ML/BCEx2 (1)
DL (4)
SDL (5)
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 17 / 18
Závěr
1D
3 řezy dataflow pro operace SIMD (ML, DL, SDL)
PC: nejrychlejší SDL s SSE (zrychlení 3,1×)
ASVP: nejrychlejší ML s BCE (zrychlení 3,1×)
2D
PC: vliv cache (zrychlení 3,6× při 9 Mpx)
PC: lepší SIMD se 4 řádky najednou
ASVP: ML s BCE (zrychlení 3,6× při 1 Mpx)
David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 18 / 18

More Related Content

More from David Bařina

New Transforms for JPEG Format
New Transforms for JPEG FormatNew Transforms for JPEG Format
New Transforms for JPEG FormatDavid Bařina
 
Discrete Wavelet Transforms on Parallel Architectures
Discrete Wavelet Transforms on Parallel ArchitecturesDiscrete Wavelet Transforms on Parallel Architectures
Discrete Wavelet Transforms on Parallel ArchitecturesDavid Bařina
 
Parallel Implementation of the 2-D Discrete Wavelet Transform
Parallel Implementation of the 2-D Discrete Wavelet TransformParallel Implementation of the 2-D Discrete Wavelet Transform
Parallel Implementation of the 2-D Discrete Wavelet TransformDavid Bařina
 
Single-Loop Software Architecture for JPEG 2000
Single-Loop Software Architecture for JPEG 2000Single-Loop Software Architecture for JPEG 2000
Single-Loop Software Architecture for JPEG 2000David Bařina
 
Lifting Scheme Cores for Wavelet Transform
Lifting Scheme Cores for Wavelet TransformLifting Scheme Cores for Wavelet Transform
Lifting Scheme Cores for Wavelet TransformDavid Bařina
 
Real-Time 3-D Wavelet Lifting
Real-Time 3-D Wavelet LiftingReal-Time 3-D Wavelet Lifting
Real-Time 3-D Wavelet LiftingDavid Bařina
 
IIR aproximace Gaussovy funkce
IIR aproximace Gaussovy funkceIIR aproximace Gaussovy funkce
IIR aproximace Gaussovy funkceDavid Bařina
 
Bit Twiddling Hacks: Integers
Bit Twiddling Hacks: IntegersBit Twiddling Hacks: Integers
Bit Twiddling Hacks: IntegersDavid Bařina
 
Fixed-point arithmetic
Fixed-point arithmeticFixed-point arithmetic
Fixed-point arithmeticDavid Bařina
 

More from David Bařina (13)

New Transforms for JPEG Format
New Transforms for JPEG FormatNew Transforms for JPEG Format
New Transforms for JPEG Format
 
JPEG
JPEGJPEG
JPEG
 
Discrete Wavelet Transforms on Parallel Architectures
Discrete Wavelet Transforms on Parallel ArchitecturesDiscrete Wavelet Transforms on Parallel Architectures
Discrete Wavelet Transforms on Parallel Architectures
 
Parallel Implementation of the 2-D Discrete Wavelet Transform
Parallel Implementation of the 2-D Discrete Wavelet TransformParallel Implementation of the 2-D Discrete Wavelet Transform
Parallel Implementation of the 2-D Discrete Wavelet Transform
 
Single-Loop Software Architecture for JPEG 2000
Single-Loop Software Architecture for JPEG 2000Single-Loop Software Architecture for JPEG 2000
Single-Loop Software Architecture for JPEG 2000
 
Lifting Scheme Cores for Wavelet Transform
Lifting Scheme Cores for Wavelet TransformLifting Scheme Cores for Wavelet Transform
Lifting Scheme Cores for Wavelet Transform
 
Real-Time 3-D Wavelet Lifting
Real-Time 3-D Wavelet LiftingReal-Time 3-D Wavelet Lifting
Real-Time 3-D Wavelet Lifting
 
Wavelet News
Wavelet NewsWavelet News
Wavelet News
 
IIR aproximace Gaussovy funkce
IIR aproximace Gaussovy funkceIIR aproximace Gaussovy funkce
IIR aproximace Gaussovy funkce
 
GStreamer
GStreamerGStreamer
GStreamer
 
FFmpeg
FFmpegFFmpeg
FFmpeg
 
Bit Twiddling Hacks: Integers
Bit Twiddling Hacks: IntegersBit Twiddling Hacks: Integers
Bit Twiddling Hacks: Integers
 
Fixed-point arithmetic
Fixed-point arithmeticFixed-point arithmetic
Fixed-point arithmetic
 

Akcelerace DWT pomocí SIMD

  • 1. Akcelerace DWT pomocí SIMD David Bařina Fakulta informačních technologií VUT v Brně 30. dubna 2013 David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 1 / 18
  • 2. Úvod co: akcelerace / vektorizace / paralelizace čeho: diskrétní vlnková transformace (DWT) kde: PC (x86-64) a ASVP (EdkDSP) David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 2 / 18
  • 3. Vlnka CDF 9/7 −3 −2 −1 0 1 2 3 −0.5 0 0.5 1 1.5 φ −4 −2 0 2 4 −0.5 0 0.5 1 1.5 ˜φ −3 −2 −1 0 1 2 3 4 −0.4 −0.2 0 0.2 0.4 0.6 0.8 ψ −3 −2 −1 0 1 2 3 4 −0.5 0 0.5 1 ˜ψ David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 3 / 18
  • 4. DWT schématem lifting di ← di − α(si + si+1) si ← si + β(di−1 + di ) di ← di − γ(si + si+1) si ← si + δ(di−1 + di ) di ← ζ−1 di si ← ζsi David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 4 / 18
  • 5. Dataflow DWT α β γ δ David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 5 / 18
  • 6. Dataflow DWT: multi-loop (ML) α β γ δ David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 6 / 18
  • 7. Dataflow DWT: double-loop (DL) α β γ δ David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 7 / 18
  • 8. Dataflow DWT: shifted double-loop (SDL) α β γ δ David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 8 / 18
  • 9. Srovnání 1D na PC (jen výpočet) 1.0n 10.0n 100.0n 1.0u 10.0 100.0 1.0k 10.0k 100.0k 1.0M 10.0M 100.0M seconds/sample samples ML (0) DL (4) SDL (9) David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 9 / 18
  • 10. Srovnání 1D na ASVP (jen výpočet) 100.0n 1.0u 10.0u 100.0u 10.0 100.0 1.0k 10.0k 100.0k 1.0M seconds/sample samples ML/CPU (0) ML/BCE (1) DL (4) SDL (5) David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 10 / 18
  • 11. 2D DWT David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 11 / 18
  • 12. 2D DWT David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 12 / 18
  • 13. 2D DWT David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 13 / 18
  • 14. L1 data cache 4096 = 1024 × float Intel Core2 Duo (L1d = 32kB, 8-way, 64 B) [tag][cache set:6][offset:6] 4-way […000][xxxxxx][xxxxxx] […001][xxxxxx][xxxxxx] […010][xxxxxx][xxxxxx] […011][xxxxxx][xxxxxx] […100][xxxxxx][xxxxxx] […101][xxxxxx][xxxxxx] David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 14 / 18
  • 15. Srovnání 2D na PC (cache) 1.0n 10.0n 100.0n 1.0k 10.0k 100.0k 1.0M 10.0M 100.0M seconds/pixel pixels non-optimal stride (0) prime stride (1) prime-set stride (2) David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 15 / 18
  • 16. Srovnání 2D na PC (implementace) 1.0n 10.0n 100.0n 1.0k 10.0k 100.0k 1.0M 10.0M 100.0M seconds/pixel pixels ML (0) SDL (9) DL4 (11) ML4 (12) David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 16 / 18
  • 17. Srovnání 2D na ASVP 100.0n 1.0u 10.0u 1.0k 10.0k 100.0k 1.0M seconds/pixel pixels ML/CPU (0) ML/BCEx1 (1) ML/BCEx2 (1) DL (4) SDL (5) David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 17 / 18
  • 18. Závěr 1D 3 řezy dataflow pro operace SIMD (ML, DL, SDL) PC: nejrychlejší SDL s SSE (zrychlení 3,1×) ASVP: nejrychlejší ML s BCE (zrychlení 3,1×) 2D PC: vliv cache (zrychlení 3,6× při 9 Mpx) PC: lepší SIMD se 4 řádky najednou ASVP: ML s BCE (zrychlení 3,6× při 1 Mpx) David Bařina (FIT VUT v Brně) Akcelerace DWT pomocí SIMD 30. dubna 2013 18 / 18