paralelisasi transformasi wavelet diskrit … · citra pada gpu menggunakan arsitektur paralel cuda...

Post on 15-May-2019

232 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related