Upload
voliem
View
221
Download
0
Embed Size (px)
Citation preview
PARALELISASI TRANSFORMASI WAVELET
DISKRIT MENGGUNAKAN ARSITEKTUR CUDA
PADA GRAPHIC PROCESSING UNIT UNTUK
DE-NOISING CITRA
DOSEN PEMBIMBING:
Dr. Nanik Suciati, S.Kom. M.Kom
Wahyu Suadi, S.Kom, MM, M.Kom
Penyusun Tesis:
Rudy Cahyadi HP- 5109201051
Sidang Tesis
Surabaya 18 Juli 2011
Pendahuluan
Citra Asli Citra de-noising (512x512) Citra de-noising(2048x2048)
Citra noise(gaussian std=0,1) Citra de-noising (1024x1024) Citra de-noising(4096x4096)
Pendahuluan
Semakin besar ukuran citra, hasil de-noising semakin baik
De-noising citra mengunakan Transformasi Wavelet
Diskrit (DWT)
Dekomposisi DWT 2D
Thresholding
Rekonstruksi DWT 2D
Pendahuluan
Semakin besar ukuran citra, hasil de-noising semakin baik
De-noising citra mengunakan Transformasi Wavelet
Diskrit (DWT)
Dekomposisi DWT 2D
Thresholding
Rekonstruksi DWT 2D
Pendahuluan
Semakin besar ukuran citra, hasil de-noising semakin baik
De-noising citra mengunakan Transformasi Wavelet
Diskrit (DWT)
Dekomposisi DWT 2D
Thresholding
Rekonstruksi DWT 2D
Masalah
Waktu komputasi
(citra 4096x4096, CPU Quad core @2,666Ghz 4GB DDR2)
De-noising 1 citra RGB ~ 27,1 detik
Proses Dekomposisi DWT 2D ~ 14,2 detik
Thresholding detil-detil koefisien ~ 3,9 detik
Proses Rekonstruksi DWT 2D ~ 9 detik
Kurang real-time
Penelitian sebelumnya
[3]Yang Su, Zhijie Xu. (2010), “Parallel implementation of
wavelet-based image denoising on programmable PC-
grade graphics hardware”, Signal Processing volume 90, issue
8, Elsevier, hal. 2396-2411.
Menggunakan OpenGL (graphic pipeline)
Memanfaatkan GPU untuk paralel image processing,
perhitungan dilakukan di Texture Buffer (mempunyai texture
cache)
Proses dekomposisi dan rekonstruksi DWT 2D di GPU
Motivasi
Ada teknologi baru untuk komputasi paralel yang lagi trend, yaitu CUDA
(Compute Unified device Architecture).
[6] Weinlich, A., Keck, B., Scherl, H., Kowarschik, M., Hornegger, J. (2008), “Comparison of High-
Speed Ray Casting on GPU using CUDA and OpenGL”, High Performance and Hardware-Aware
Comuting (HipHac), ed R Buchty and J-P Weiss, hal 25-30.
[7] Amorim, R., Haase, G., Liebmann, M., Weber dos Santos, R, (2009), “Comparing CUDA and
OpenGL implementation for a Jacobi iteration”, High Performance Computing & Simulation, IEEE,
978-1-4244-4906-4.
OpenGL dibutuhkan pengetahuan khusus grafika komputer, waktu
implementasi lebih lama
CUDA 2x lebih cepat dari OpenGL
Texture cache didesain untuk memelihara bandwidth
CUDA shared memory dapat mengurangi latency
CUDA menganut SIMT (Single Instruction Multiple Thread) / Data
Paralelisme
Level Paralelisme
Dekomposisi DWT (Pemfilteran horisontal)
Filter daubechies 4
i increment 2
Perhitungan lpv dan hpv Independent -> Data Paralelisme -> CUDA
lpv 0 lpv 1 ... lpv m/2-1 hpv 0 hpv 1
... hpv m/2-1
24
31;
24
33;
24
33;
24
313210
=h=h
+=h
+=h
03122130 ;;;g h=gh=gh=gh=
32j322j212j12j0lpv +++i Dh+Dh+Dh+Dh=
32j322j212j12j0hpv +++i Dg+Dg+Dg+Dg=
Level Paralelisme
Rekonstruksi DWT (Pemfilteran horisontal)
d0 sampai dhalf-1 adalah low-pass value, dan dhalf sampai dn-1 adalah high-pass value.
Perhitungan D Independent -> Data Paralelisme -> CUDA
D j=h2d i+g2d half +i+h0 d i+1+g0d half +1+i
D j+1=h3d i+g3dhalf +i+h1d i+1+g1d half +1+i
Paralel Dekomposisi DWT 2D dgn CUDA
Untuk setiap komponen warna (R,G,B)
1. Mentransfer komponen warna citra (input data) dari host memory ke
device global memory.
2. Pemfilteran horisontal dekomposisi 1D pada device.
Menetapkan jumlah block pada grid, dan jumlah thread tiap block
Mentranfer input data baris dari global memory ke shared memory. Satu thread
load 2 data
Setiap thread menghitung low-pass value dan high-pass value, kemudian
mentransfer hasil perhitungan ke global memory.
3. Pemfilteran vertikal dekomposisi 1D pada device.
Cara sama dengan no.2 , tp input data berupa data kolom
4. Mentransfer data hasil dekomposisi dari device global memory ke host
memory.
Alokasi block thread pemfilteran horisontal
dekomposisi
Block (0,0)
Block (1,0)
Block(0,0) Block(1,0)
Block(0,1)
Block(0,2)
Block(0,3)
Block(0,1)
Block(0,2)
Block(0,3)
Block(1,1)
Block(1,2)
Block(1,3)
.
.
.
Block(0,1023)
.
.
.
Block(1,1023)
Thread(0,0) Thread(1,0) Thread(2,0) ... Thread(511,0)
Thread(0,0) Thread(1,0) Thread(2,0) ... Thread(511,0)
Grid 0
Alokasi block thread pemfilteran vertikal dekomposisi
Block (0,0)
Block (0,1)
Grid 0
Thread(0,0)
Thread(0,1)
Thread(0,2)
...
Thread(0,511)
Thread(0,0)
Thread(0,1)
Thread(0,2)
...
Thread(0,511)
Block(0,0)
Block(0,1)
Block(1,0) Block(2,0) ... Block(1023,0)
Block(1,1) Block(2,1) ... Block(1023,1)
Data pada shared memory (pemfilteran horisontal)
Mentranfer input data dari global memory ke shared memory. Satu thread load
2 input data.
Perhitungan low-pass dan high-pass value
(pemfiteran horisontal)
Setiap thread menghitung low-pass value dan high-pass value, kemudian mentransfer
hasil perhitungan ke global memory.
Paralel Dekomposisi DWT 2D dgn CUDA
Untuk setiap komponen warna (R,G,B)
1. Mentransfer komponen warna citra (input data) dari host memory ke
device global memory.
2. Pemfilteran horisontal rekonstruksi 1D pada device.
Menetapkan jumlah block pada grid, dan jumlah thread tiap block
Mentranfer input data dari global memory ke shared memory. Satu thread load
satu data low-pass value dan satu data high-pass value.
Setiap thread menghitung satu data rekonstruksi kemudian mentransfer hasil
perhitungan ke global memory
3. Pemfilteran vertikal rekonstruksi 1D pada device.
Cara sama dengan no.2 , tp input data berupa data kolom
4. Mentransfer data hasil rekonstruksi dari device global memory ke host
memory.
Alokasi block thread pemfilteran horisontal
dekomposisi
Alokasi block thread pemfilteran vertikal dekomposisi
Mentranfer input data dari global memory ke shared memory. Satu thread load satu
data low-pass value dan satu data high-pass value.
.
Data pada shared memory (pemfilteran horisontal)
Perhitungan data rekonstruksi (pemfilteran
horisontal)
Setiap thread menghitung satu data rekonstruksi kemudian mentransfer hasil
perhitungan ke global memory
Lingkungan Uji Coba
Data Uji coba
(ukuran:512x512,1024x1024,2048x2048,4096x4096)
CPU Intel(R) Quad Core(TM) @2,666 GHz, 4 GB DDR2,
GPU Nvidia Geforce GTS 450 AMP! Edition 1GB
GDDR3.
CPU I3 @2,4Ghz, 2GB, GPU Geforce 310M 512GB
Visual Studio 2008 Professional, Matlab R2010a.
NVMEX ( NVCC + MEX )
Pengujian kebenaran program
Gaussian noise std=0,1
Versi GPU-CUDA (PSNR=21,1027)
Versi CPU (PSNR=21,0973)
Evaluasi Kinerja Kualitas Citra hasil De-noising pada
berbagai Model Noise
Evaluasi Kinerja Kualitas Citra hasil De-noising pada
berbagai Model Noise
Evaluasi Kinerja Kualitas Citra hasil De-noising pada
berbagai Model Noise
Evaluasi Kinerja Waktu Komputasi Dekomposisi
DWT 2D pada GPU-CUDA dan CPU
Ukuran Citra Dekomposisi CPU
(ms)
Dekomposisi GPU +
transfer antar memori
(ms)
Dekomposisi GPU -
tranfer antar memori
(ms)
512x512 163,7 31,7 4,6
1024x1024 843,7 75,3 13,6
2048x2048 3498,1 265,7 51,9
4096x4096 14182,8 977,4 176,5
Evaluasi Kinerja Waktu Komputasi Rekonstruksi
DWT 2D pada GPU-CUDA dan CPU
Ukuran Citra Rekonstruksi CPU
(ms)
Rekonstruksi GPU +
transfer antar memori
(ms)
Rekonstruksi GPU -
transfer antar memori
(ms)
512x512 84,0 25,9 4,2
1024x1024 513,6 73,4 14,4
2048x2048 2194,6 257 52,4
4096x4096 9034,3 966,7 190,8
Evalusi kinerja Kecepatan dekomposisi &
rekonstruksi GPU terhadap CPU
Ukuran Citra kecepatan
dekomposisi+ transfer
antar memori (x)
kecepatan
dekomposisi– transfer
antar memori (x)
kecepatan
rekonstruksi + tranfer
antar memori (x)
kecepatan
rekonstruksi - transfer
antar memori (x)
512x512 5,2 35,4 3,2 20,1
1024x1024 12,2 61,9 6,9 35,7
2048x2048 13,2 67,4 8,5 41,9
4096x4096 14,5 80,4 9,3 47,4
0
10
20
30
40
50
60
70
80
90
kecepatan
dekomposisi+
transfer antar
memori (x)
kecepatan
dekomposisi -
transfer antar
memori (x)
kecepatan
rekonstruksi +
transfer antar
memori (x)
kecepatan
rekonstruksi -
transfer antar
memori (x)
512x512
1024x1024
2048x2048
4096x4096
Evalusi kinerja Kecepatan de-noising citra
GPU terhadap CPU
Ukuran Citra De-noising versi CPU (ms) De-noising versi GPU CUDA (ms) Kecepatan (x)
512x512 313,6 140,7 2,2
1024x1024 1612,6 425,9 3,8
2048x2048 6686,3 1635,7 4,1
4096x4096 27101,1 6199,4 4,4
0
500
1000
1500
2000
2500
3000
3500
512x512 1024x1024 2048x2048
ms
ukuran citra
De-noising versi penelitian
kami* (ms)
De-noising versi peneltian
sebelumnya*** (ms)
Evalusi kinerja Kecepatan de-noising citra penelitian
kami dengan penelitian sebelumnya
Ukuran
Citra
De-noising versi
penelitian sebelumnya*
(ms)
De-noising versi penelitian
kami** (ms)
De-noising versi penelitian
kami*** (ms)
512x512 222 216,4 140,7
1024x1024 725 747,5 425,9
2048x2048 3324 3768,6 1635,7
4096x4096 Tidak tersedia Tidak tersedia 6199,4
*Geforce GTX 7900 **Geforce 310 ***Geforce GTS 450
GTX 7900 tidak support CUDA, Tesla HPC tidak support OpenGL
0
500
1000
1500
2000
2500
3000
3500
4000
512x512 1024x1024 2048x2048
De-noising versi
penelitian kami* (ms)
De-noising versi
penelitian kami** (ms)
De-noising versi
peneltian
sebelumnya*** (ms)
GeForce 7900
GTX GeForce 310 GeForce GTS 450
Core Clock 650 MHz 589 / 1,402 MHz 783 / 1,566 MHz
Memory Clock 1.6 GHz 1 GHz 3.6 GHz
Memory Interface 256-bit 64-bit 128-bit
Memory Transfer Rate 51.2 GB/s 8 GB/s 57.7 GB/s
Pixels per clock 24 16 192
http://www.hardwaresecrets.com/article/NVIDIA-Chips-Comparison-Table/132
Kesimpulan
Waktu komputasi proses dekomposisi atau rekonstruksi
citra pada GPU menggunakan arsitektur paralel CUDA
dibandingkan dengan waktu dekomposisi atau
rekonstruksi pada CPU adalah lebih cepat 3,2 sampai 14,5
kali. Sehingga dengan paralelisasi tersebut, dapat membuat
waktu komputasi proses de-noising citra lebih cepat 2,2
sampai 4,4 kali dari proses de-noising pada CPU saja.
bottleneck waktu komputasi paralel terbesar terletak pada
transfer data antar memori, yaitu sekitar 80%.
SEKIAN TERIMA KASIH