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
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
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