You are on page 1of 27

ANALISIS PERBANDINGAN KOMPUTASI SEKUENSIAL DAN KOMPUTASI PARALEL GPU MEMANFAATKAN TEKNOLOGI NVIDIA CUDA PADA APLIKASI KOMPRESI

CITRA MENGGUNAKAN ALGORITMA DCT 8X8
Oleh : Andika Januarianto Email : andika.januarianto@gmail.com

LATAR BELAKANG
• Ingin membuktikan kebenaran, apakah proses kompresi citra dengan metode DCT 8x8 memang dapat di implementasikan pada komputasi paralel GPU? • Ingin membuktikan kebenaran dari analisa pada percobaan sebelumnya,apakah komputasi paralel GPU juga dapat mempercepat proses kompresi citra dengan menggunkan metode DCT 8x8?

Berapa nilai speedup yang diperoleh dari hasil kompresi setiap citra uji ? • . Data kemudian di olah dalam bentuk tabel dan grafik perbandingan 4. Bagaimana cara kerja algoritma DCT 8x8 pada komputasi sekuensial dan komputasi paralel ? 2. Berapa lama waktu yang dibutuhkan untuk menghasilkan citra yang telah dikompresi dengan komputasi sekuensial maupun komputasi paralel GPU ? 3. Bagaimana hasil perbandingan komputasi waktu yang diperoleh.RUMUSAN MASALAH • • • 1. apakah proses kompresi citra dengan metode DCT 8x8 di arsitektur paralel GPU meghasilkan waktu yang lebih cepat dibandingkan dengan proses kompresi di arsitektur sekuensial ?.

512 x 512 px. Citra uji yang dikompresi sebanyak empat buah dengan masing-masing piksel berukuran dari 256 x 256 px . Parameter yang digunakan untuk menghitung komputasinya menggunakan cuda timer function. 4. 3. 2.lib dan cutil32. Dan mendapatkan nilai speedup pada proses kompresi citra . 1024 x 1024 px dan 2048 x 2048 px dengan depth sebesar 24 bit dan bitmap sebagai format setiap citra uji. Waktu yang didapat dari dua penelitian diatas dinyatakan dengan satuan waktu berupa millisecond. Compiler NVCC untuk CUDA dan Visual Studio 2008 sebagai IDEnya serta menggunakan pustaka cuda yaitu cudart. Penelitian tentang kompresi citra dengan algoritma DCT 8x8 hanya di lakukan pada CPU Intel Core I3-2310M dan GPU Nvidia Cuda Geforce GT540M menggunakan sistem operasi Windows7 Ultimate 32bit . 6. 5.BATASAN MASALAH 1.lib 7. Untuk proses yang bekerja secara sekuensial menggunakan bahasa pemrograman C++ sedangkan untuk proses yang bekerja secara paralel GPU menggunakan teknologi dari Nvidia yang dapat membaca kartu grafis yaitu teknologi Compute Unified Device Architecture ( CUDA ). Penelitian ini dibuat hanya untuk membuktikan apakah komputasi paralel GPU memang lebih cepat daripada kinerja komputasi secara sekuensial?. Algoritma kompresi citra yang digunakan adalah algoritma DCT yang beroperasi pada blok 8x8 dengan pendekatan 1 kernel.

TUJUAN PENELITIAN • Tujuan dari penelitian ini adalah membandingkan nilai speedup dari beberapa sample citra uji yang di olah dari data percobaan pada komputasi sekuensial dan pada komputasi paralel dengan memanfaatkan cuda timer function sebagai uji parameter untuk mendapatkan waktu proses kompresi citra pada setiap sampel uji . .

diman kehilangan bitrate foto tidak berpengaruh pada citra. Loseless Compression Teknik kompresi citra dimana tidak ada satupun informasi citra yang dihilangkan. Teknik ini mengubah detail dan warna pada file citra menjadi lebih sederhana tanpa terlihat perbedaan yang mencolok dalam pandangan manusia. Chroma Subsampling. sehingga ukurannya menjadi lebih kecil. Metode yang dipakai pada teknik kompresi ini antara lain : Run Length Encoding. Teknik pada kompresi terbagi menjadi 2 jenis yaitu : 1. 2. Transform Coding ( termasuk DCT di dalamnya ) . Lossy Compression Teknik kompresi citra yang menghilangkan beberapa informasi dalam citra asli dan merubah ukuran file citra menjadi lebih kecil dari citra aslinya. biasanya digunakan pada citra medik. biasanya digunakan pada citra foto atau image lain yang tidak memerlukan detail citra . Aritmatik ) dan Adaptive Dictionary Based ( LZW ). Metode yang dipakai pada teknik kompresi ini antara lain : Color Reduction. Entropy Encoding ( Huffman.KOMPRESI CITRA Kompresi citra adalah aplikasi kompresi data yang dilakukan terhadap citra digital dengan tujuan untuk mengurangi redudansi dari data-data yang terdapat dalam citra sehingga dapat disimpan atau ditransmisikan secara efisien.

jika Algoritma DCT menggunakan blok 8x8 maka inputan n = 8. • Skema Metode Kompresi DCT 8x8 : • Algoritma DCT memiliki kompleksitas waktu Total sebesar O ( N log N).ALGORITMA DCT • • Metode DCT pertama kali diperkenalkan oleh Ahmed. DCT merupakan sebuah skema lossy compression dimana NxN blok ditransformasikan dari domain spasial ke domain DCT. . membutuhkan ( 8^{\text{3}}) langkah untuk menyelesaikan proses perkalian matriksnya. Natarajan dan Rao pada tahun 1974 DCT adalah sebuah teknik untuk mengubah sinyal ke dalam komponen frekeunsi dasar. Oleh karena itu. dengan kompleksitas waktu yang diterapkan pada formula perkalian dua matriks sebesar O ( N^{\text{3}}).

pada metode ini hal ini tidak akan terjadi karena metode ini terjadi di domain frekeunsi di dalam citra. bukan domain spasial. Tidak tahan terhadap perubahan suatu objek dikarenakan pesan mudah dihapus karena lokasi penyisipan data dan pembuatan data dengan metode DCT diketahui. . Implementasi algoritma yang panjang dan membutuhkan banyak perhitungan. Walaupun gambar yang dikompresi dengan lossy compression akan menimbulkan kecurigaan karena perubahan gambar terlihat jelas. Kokoh terhadap manipulasi pada stego-object. DCT menghitung kuantitas bit-bit data citra dimana pesan tersebut disembunyikan di dalamnya. 2.ALGORITMA DCT • Kelebihan kompresi citra menggunakan DCT adalah : 1. • Kekurangan kompresi citra menggunakan algoritma DCT adalah : 1. sehingga tidak akan ada perubahan yang terlihat pada cover gambar. 2.

ARSITEKTUR CUDA • CUDA merupakan akronim dari Compute Unified Device Architecture yaitu sebuah teknologi yang dikembangkan oleh NVIDIA untuk mempermudah utilita. menggunakan texture loops.si GPU untuk keperluan umum (non-grafis). CUDA hanya terdapat pada GPU Nvidia . • 1. 2. 3. diantaranya adalah : 1. 2. dengan beberapa ekstensi yang simpel. Hal ini dapat digunakan sebagai user-managed-cache. Kekurangan dari arsitektur CUDA adalah : CUDA tidak support texture rendering. • Arsitektur CUDA memiliki beberapa keunggulan. Shared memory – CUDA menyingkapkan wilayah memory yang cepat (berukuran 16 KB) yang dapat di bagi diantara thread-thread yang ada. CUDA menggunakan bahasa “C” standar. sehingga mengaktifkan bandwitdth yang lebih besar (dari besaran bandwidth yang dimungkinkan). Bus Bandwidth dan latensi antara CPU dengan GPU bisa jadi tidak imbang.

3. • CUDA SDK. CUDA toolkit. 2. merupakan driver yang harus sudah terinstal pada device yang akan digunakan untuk menjalankan program CUDA. Beberapa karakteristik Cuda Constan Memory. Didefinisikan dengan keyword _constant_ Tidak perlu alokasi memori dengan _cudaMalloc_ Diisi dengan __cudaMemcpyToSymbol__ . Komponen tersebut antara lain : 1. berisi sample-sample program CUDA dan header yang dapat dijalankan oleh program CUDA CUDA Constant Memory Adalah memori konstan pada GPU. CUDA driver. Device tersebut harus menggunakan kartu grafis dari Nvidia. antara lain : 1. 2.ARSITEKTUR CUDA • Untuk dapat bekerja dengan teknologi CUDA ada 3 komponen yang harus tersedia pada perangkat PC atau notebook. 3. merupakan ruang lingkup pengembangan CUDA dari bahasa C sehingga akan menghasilkan CUDA-enabled GPU. Konstan. artinya tidak dapat diubah selama eksekusi kernel.

Langsung tersedia untuk kernel. constant memory juga dicache secara agresif oleh GPU. . sehingga 16 threads yang mengakses alamat yang sama cukup melakukan satu kali pembacaan memori. • CUDA Shared Memory CUDA Shared Memory dibagi menjadi modul memori berukuran sama yang disebut bank memori.ARSITEKTUR CUDA 4. tidak perlu di pass sebagai parameter 5. Karena sifatnya yang konstan. Setiap bank memori memegang nilai 32-bit yang berurutan (seperti int atau float) sehingga array yang berurutan dengan mengakses thread berturut-turut sangat cepat. Tidak perlu di frre memory setelah eksekusi Keuntungan menggunakan constant memory adalah dia diakses secara half-warp.

yang memasarkan kartu video GeForce 256 sebagai “GPU pertama di dunia .> data digital -> Kartu Grafis -> memori Kartu Grafis -> GPU ( diubah menjadi piksel ) -> VRAM-> DAC ->Data Analog -> Monitor . • Istilah GPU ini didefinisikan dan dipopulerkan oleh Nvidia pada tahun 1999. • Sistem Kerja GPU Driver VGA .GPU ( Graphic Processing Unit ) • GPU adalah sirkuit khusus yang dirancang untuk cepat memanipulasi dan mengubah memori yang sedemikian rupa sehingga mempercepat pembangunan gambar dalam frame buffer yang dimaksudkan untuk output untuk tampilan. segitiga setup / kliping. pencahayaan. yang merupakan sebuah chip prosesor tunggal yang terintegrasi dengan transformasi. dan mesin render yang mampu memproses minimal 10 juta poligon per detik “.

• thread adalah satuan eksekuis terkecil dalam CUDA. • Jumlah thread yang dapat dijalankan pada satu block terbatasi oleh kemampuan hardware. • Thread yang berada dalam satu block dapat saling berbagi memori. Thread ini dikelompokkan pada block. tapi satu kernel dapat dijalankan oleh banyak block sekaligus. tapi tidak dengan thread yang berada di lain block . • Banyaknya block dan thread per block didefinisikan saat memanggil kernel dalam program.GPU ( Graphic Processing Unit ) • Kernel sendiri dijalankan dengan banyak • Eksekusi Program pada GPU thread secara bersamaan pada GPU.

Karena perhitungsn function cosine pada bahasa c memerlukan kompleksitas yang cukup rumit. Jadi perhitungan koefisien matriksnya terdiri dari 2*N elemen yang disebar ke dalam 8x8 blok.ALGORITMA DCT 8X8 PADA KOMPUTASI SEKUENSIAL DAN PARALEL • Pada Komputasi sekuensial. penerapan algoritma DCT 8x8 tidak menggunakan perkalian matriks persegi . Berikut sintaks perhitungan function cosine menggunakan bahasa C. .

peta pendekatan dijelaskan baik untuk model pemrograman CUDA dan arsitektur parallel khususnya. Untuk mengkonversi 8x8 masukan sampel ke dalam domain transform. dan perkalian dua matriks mutlak diperlukan.ALGORITMA DCT 8X8 PADA KOMPUTASI SEKUENSIAL DAN PARALEL • Pada Komputasi Paralel Implementasi algoritma DCT8x8 menurut teori dasar dilakukan dengan menggunakan dasar perkalian mariks. • Gambar dibagi menjadi satu set blok seperti yang ditunjukkan pada gambar di bawah ini. Pada CUDA. .

u). Fungsi Dua dimensi DCT ukuran NxN didefinisikan sebagai berikut : • Array pada memori konstan tersebut ditampilkan sebagai array dua dimensi yang berisi nilai-nilai fungsi dasar yaitu A (x. Masing-masing thread di blok-CUDA menghitung koefisien DCT tunggal. . Semua bentuk persinyalan sebelum di hitung akan disimpan dalam bentuk array yang terletak pada memori.ALGORITMA DCT 8X8 PADA KOMPUTASI SEKUENSIAL DAN PARALEL • Setiap satu set blok-CUDA menjalankan 64 thread untuk melakukan penghitungan DCT.

3.y) memuat satu pixel dari tekstur untuk memori bersama. ThreadIdx. Untuk memastikan semua koefisien dari (A^T)X adalah dihitung.x.x kolom dari blok masukan.y dari kosinus koefisien (yang sebenarnya deretan A^T dengan nomor yang sama) dan ThreadIdx. dan harus di sinkronisasikan. Thread dihitung dengan formula ( A^TX ) A . . Untuk memastikan seluruh blok dimuat untuk saat ini. dengan cara yang sama seperti langkah 2 4. Thread dengan koordinat (ThreadIdx. Thread menghitung dot product antara dua vektor: Kolom ThreadIdx.ALGORITMA DCT 8X8 PADA KOMPUTASI SEKUENSIAL DAN PARALEL Dua dimensi DCT dilakukan dalam empat jumlah thread): 1. 2. semua thread yang melewati titik sinkronisasi. Seluruh blok akan disalin dari shared memory untuk hasil output dalam global memorydan setiap thread bekerja dengan single pixel.

Setiap blok thread menghitung satu sub persegi untuk mendapatkan hasil perhitungan matriks ( Kotak persegi hijau ). Setiap thread dalam blok menghitung satu elemen matriks. Blok biru menunjukkan bagaimana perhitungan dilakukan . matriks akan bertukar posisi. . Untuk mentransfer kolom kedua. Elemen pada matriks asli dan transfer matriks koefisien disorot dengan warna yang berbeda.ALGORITMA DCT 8X8 PADA KOMPUTASI SEKUENSIAL DAN PARALEL • Jika dilihat model komputasi algoritma DCT 8x8 pada thread yaitu sebagai berikut : • Model komputasi DCT pada GPU ditunjukkan pada gambar di atas.

ALGORITMA DCT 8X8 PADA KOMPUTASI SEKUENSIAL DAN PARALEL • Model Pengalokasian Memori pada algoritma DCT 8x8 setiap elemen me-load dari memori global untuk berbagi memori . Maka dibuatlah padding lokasi yang di set sebagai warna biru terang agar akses memori menjadi selaras ketika mengeksekusi program . Karena ukuran blok di atur menjadi 8x8. Setelah menyelesaiakan perhitungan. data memori akan di-load kembali ke memori global. maka indeks thread akan menjadi jumlah indeks pada bank memori. Untuk menyesuaikan model perhitungan dengan ukuran piksel matriks .

HASIL PENGUJIAN DAN ANALISA • Grafik Percobaan Komputasi Sekuensial pada setiap citra uji .

HASIL PENGUJIAN DAN ANALISA • Grafik Percobaan Komputasi Paralel GPU pada setiap citra uji .

HASIL PENGUJIAN DAN ANALISA • Grafik Perbandingan Waktu proses kompresi Citra pada Komputasi Sekuensial dan Komputasi Paralel GPU pada setiap citra uji .

• Nilai Speedup dari beberapa citra uji .KESIMPULAN • Proses kompresi citra dengan metode DCT 8x8 dapat diimplementasikan pada arsitektur parallel GPU sehingga dapat menjadi pilihan alternatif untuk memproses kompresi suatu citra dengan tidak hanya memanfaatkan arsitektur sekuensial saja.

KESIMPULAN • Hasil akhir yang didapat dapat disimpulkan bahwa speed up bersifat terus meningkat terhadap data citra uji serta speedup bersifat non-linear terhadap data citra uji. Karena pengaruh jumlah piksel yang semakin besar menyebabkan penghitungan bit-bit citra menjadi lebih kompleks. • Dari percobaan yang telah dilakukan pada beberapa citra uji tentang komputasi sekuensial dan komputasi parallel pada proses kompresi maka speedup akan terus meningkat jika jumlah piksel semakin besar. . Hal ini sesuai dengan Hukum Gustafson yang berbunyi “Speedup akan meningkat jika ukuran data juga ditingkatkan” .

.SARAN Mengingat masih banyaknya perbaikan yang perlu dilakukan pada skripsi ini. diantaranya adalah : 1. maka penulis mempertimbangkan beberapa saran yang diperlukan dalam proses untuk mengembangkan materi skripsi penulis di kemudian hari. Melakukan ujicoba jika metode DCT8x8 pada CUDA di implementasikan untuk transmisi citra menggunakan kanal multipath. 2. Melakukan perbandingan komputasi waktu setiap citra uji antara metode DCT 8x8 pada CUDA dengan metode Fraktal pada CUDA.

2. 2008. [3] Analisis Kinerja Perkalian Matriks Paralel Menggunakan Metrik Isoefisiensi. : NVIDIA Corporation. Nvidia Corp.Referensi [1] Obhukov.download. [Online] http://developer. 2009. Jakarta : TESLA. Vol.pdf. . Discrete Cosine Transform for 8x8 Blocks with CUDA. Nvidia Corp website.3. Kartawijaya. Anton and Kharmalov. s. [2] Nvidia Corporation. 10. 2008.com/compute/cuda/2_3/toolkit/docs/N VIDIA_CUDA_Programming_Guide_2. Alexander. Maria.nvidia.l.

Q&A .