Nama : Arief Nugraha
NPM : 51413300
KELAS : 4IA12
ABSTRAK
GPU (Graphic
Processing Unit) merupakan prosesor khusus untuk bagian grafis 3D dari microprocessor . GPU dipopulerkan oleh
NVIDIA, NVIDIA juga mengembangkan sebuah teknologi yang bernama CUDA (Compute Unified Device Architecture). CUDA (Compute
Unified Device Architecture) adalah sebuah
arsitektur perangkat keras dan perangkat lunak untuk mengelola komputasi secara
paralel pada perangkat keras GPU. Setiap perangkat GPU berkemampuan CUDA dapat
bertindak sebagai sebuah perangkat komputasi data paralel secara massal dengan
jumlah memori yang besar.
Pada Tugas akhir ini dilakukan analisis
konfigurasi fungsi kernel secara eksplisit pada GPU CUDA, dengan studi kasus:
perkalian matriks, yaitu dengan pembagian proses kedalam block, thread, dan kombinasi antara block dan thread. Dari
hasil analisis, didapatkan hasil bahwa tidak ada perbedaan yang signifikan
antara waktu pengujian dan variabel block
dan thread pada pengujian block saja dan thread saja. Sedangkan pada pengujian yang menggunakan kombinasi
antara block dan thread, didapatkan hasil adanya perbedaan yang signifikan antara
kedua variabel block dan thread terhadap
waktu percobaan dan adanya interaksi antara variabel block dengan variabel thread
pada tiap masing-masing waktu pengujian percobaan
Kata kunci: GPU, CUDA, perkalian matriks, kernel.
PENDAHULUAN
Perkembangan media
teknologi semakin pesat,
salah satunya adalah Augmented
Reality (AR). Augmented Reality mulai digunakan sebagai media iklan, informasi
dan edukasi. Augmented Reality merupakan teknologi yang dapat menambahkan
object dalam suatu tampilan atau gambar secara langsung menggunakan konsep
komputer visual. Pada dasarnya Augmented Reality lebih banyak digunakan dalam
bentuk yang sederhana menggunakan marker atau markerless, tetapi komputasinya
membutuhkan resource yang cukup besar karena didalam proses Augmented Reality
terdapat proses tracking dan juga 3D object rendering. Untuk itu, dalam
pembuatannya dalam kasus ini digunakan sistem paralel GPU menggunakan Nvidia
CUDA.
Penelitian
dalam bidang Augmented Reality sudah banyak dilakukan, penelitian bertujuan untuk mendapatkan Augmented Reality yang memiliki performansi yang baik. Permasalahan yang
menjadi pokok utama dalam penelitian tersebut bukanlah mengenai rendering
object 3D tapi mengenai object tracking[15]. Object tracking adalah salah satu
kunci utama dalam Interactive Augmented Reality, pendeteksian gesture dan
object membutuhkan algoritma yang dapat memodelkan object dengan baik salah
satunya adalah dengan menggunakan Haar Classifier dengan algoritma Viola-Jones.
Algoritma
Viola-Jones merupakan algoritma yang digunakan untuk melakukan pendeteksian
wajah. Namun pada perkembangannya metode tersebut dapat digunakan pada
pendeteksian object lain seperti tangan, mata, jari dan seluruh tubuh. Metode
tersebut membutuhkan resources komputasi yang sangat besar. Algoritma yang
digunakan pada object tracking sangat mempengaruhi performansi dari sistem AR.
Jika menggunakan algoritma dengan kompleksitas yang tinggi maka konsep
real-time akan menjadi sulit diimplementasikan. Oleh karena itu digunakan suatu
arsitektrur paralel yang dapat mengurangi kompleksitas waktu yang tinggi yaitu
dengan menggunakan CUDA.
Nvidia CUDA
merupakan extensi untuk beberapa bahasa pemprograman seperti C dan C++. Dengan
menggunakan CUDA dimungkinkan untuk melakukan proses komputasi menggunakan GPU.
Dengan menggunakan CUDA, programmer dapat membuat suatu algoritma paralel dan
membagi proses tersebut kedalam block-block dan thread yang terdapat di dalam
GPU. Pemprograman CUDA sering kali menggunakan representasi vektor, data yang
digunakan kemudian dimasukkan kedalam array dimana array tersebut diproses
didalam block atau thread tergantung kebutuhan.
Dengan
memanfaatkan kemampuan dari CUDA tersebut, diharapkan kualitas dari Augmented
Reality menjadi sangat baik dilihat dari kecepatan frame per second (fps) atau
jumlah frame yang diolah perdetik. Bukan hanya untuk Augmented
Reality sederhana menggunakan marker yang diharapkan memiliki performansi yang
baik, tetapi juga Markerless Augmented Reality yang dapat berinteraksi dengan
object nyata. Produk Augmented Reality tersebut dapat dimanfaatkan untuk
berbagai bidang seperti pendidikan, periklanan, atau mungkin juga untuk membuat
game jenis baru yang sangat interaktif hanya menggunakan komputer dan kamera.
Dengan menggunakan Augmented Reality, diharapkan dapat membantu menyelesaikan
masalah dan menjawab tantangan dunia dalam bidang komputasi dan komputer
visual. Sebagai contoh, jika Augmented
Reality digunakan dalam proses belajar, maka proses pembelajaran tersebut akan
lebih menarik dan mudah dimengerti.
PEMBAHASAN
CUDA adalah
sebuah teknologi yang dikembangkan oleh NVIDIA untuk mempermudah utilitasi GPU
untuk keperluan umum (non-grafis). Arsitektur CUDA ini memungkinkan pengembang
perangkat lunak untuk membuat program yang berjalan pada GPU buatan NVIDIA
dengan syntax yang mirip dengan syntax C yang sudah banyak dikenal. Akibatnya,
sekarang para developer dapat memanfaatkan kemampuan prosesing GPU untuk
mengakselerasi komputasi program mereka dengan jaaauuuuh lebih mudah.
Lalu apa
manfaatnya susah-susah menggunakan GPU untuk menjalankan program? Begini,
berbeda dengan CPU yang harus siap untuk menjalankan berbagai instruksi
program, GPU didesain khusus untuk menghitung dan menyajikan pixel-pixel gambar
yang akan ditampilkan. Karena satu pixel tidak berhubungan dengan pixel yang
lain, GPU dirancang untuk melakukan banyak operasi secara paralel. Nah,
kemampuan eksekusi paralel secara masif inilah yang kemudian dapat dimanfaatkan
dengan CUDA.
Pemorgraman
CUDA sama seperti membuat program C biasa. Saat kompilasi, syntax2 C biasa akan
diproses oleh compiler C, sedangkan syntax dengan keyword CUDA akan diproses
oleh compiler CUDA (nvcc)
Bagaimana
bagi pengguna biasa, apakah ada manfaat yang bisa didapat dari membeli hardware
berteknologi CUDA. Hmm, saat ini sudah mulai banyak software yang mendukung
akselerasi dengan CUDA. Misalnya MATLAB dan beberapa plugin dari Adobe
Photoshop CS5. Bila perangkat lunak ini mendeteksi adanya hardware yang
kompatibel dengan CUDA, maka beberapa proses komputasinya akan dilaksanakan
oleh GPU. Walhasil, program akan dapat dieksekusi dengan lebih cepat. Review di
tomshardware ini contohnya, menampilkan pengurangan waktu eksekusi yang
mengesankan dari plugin Photoshop untuk manipulasi gambar.
Seperti
telah disebutkan, CUDA memungkinkan programmer untuk mengeksekusi program pada
GPU. Tentu saja, program – program yang akan mendapat akselerasi adalah
program-program yang dapat dipecah menjadi banyak eksekusi paralel. Untungnya,
buanyak komputasi saintifik masuk pada kategori tersebut. Beberapa aplikasinya
antara lain Computational Fluid Dynamics (CFD), Molecular Dynamics, Seismic
Simulation, Simulasi Finansial dan Saham, Image Processing dan Video Processing
Secara
bisnis ini adalah ide yang luar biasa. Pengembangan hardware GPU telah mendapat
“subsidi” dari industri gaming dan hasilnya sekarang dapat digunakan untuk
aplikasi yang lebih, ahem, “berguna”. Tidak heran saat ini teknologi CUDA telah
merevolusi dunia High Performance Computing.
CUDA
adalah sebuah arsitektur pemrograman untuk General Purpose Graphics Processing
Unit (GPGPU). Secara umum, komponen-komponen pendukung CUDA adalah:
- · Aplikasi, adalah perangkat lunak yang dibuat oleh penguna, memakai bahasa pemrograman khusus (kembangan C).
- · Pustaka perangkat lunak, yang menyediakan layanan dasar untuk program aplikasi mengakses CPU maupun GPU.
- · Perangkat keras khusus, yaitu GPU yang menyediakan mesin paralel.
- · Perangkat keras CPU, sebagai mesin sekuensial.
Dengan
demikian, seorang pengguna CUDA haruslah membuat program dulu dalam bahasa
pemrograman kembangan C (dengan ditambahi beberapa sintak yang sangat
memudahkan pemrograman paralel tingkat tinggi). Kode sumber program itu
dikompilasi, kemudian dijalankan. Program CUDA induk akan berjalan di CPU,
sedangkat bagian paralelnya akan berjalan di GPU.
Model pemrograman CUDA adalah membagi pekerjaan yang
akan di lakukan ke banyak unit pemroses paling kecil, yakni thread. Setiap
thread memiliki memori tersendiri dan mengerjakan inti pekerjaan yang kecil dan
akan berjalan bersamaan dengan thread lain sehingga waktu yang di butuhkan
untuk mengerjakan pekerjaan seluruhnya menjadi lebih singkat. Kumpulan dari
thread tersebut disebut sebagai blok dalam blok memiliki satu memori tersendiri
yang bisa di gunakan thread dalam blok tersebut. Media untuk saling
berkomunikasi antar thread dinamakan dengan Share memori. Setiap blok akan di
kelompokkan lagi menjadi sebuah grid yang menjadi sekumpulan block yang
digunakan dalam komputasi.

CPU dalam CUDA disebut dengan istilah Host, dan GPU
disebut dengan istilah Device. Ada 2 bagian pada pemrograman CUDA yaitu fungsi
yang di jalankan pada CPU dan fungsi yang di jalankan pada GPU, karnel adalah
sebutan untuk program CUDA yang berjalan pada GPU. Pada saat fungsi ini
berjalan, pemogram harus memberikan informasi pada GPU untuk memesan berapa
banyak block, thread yang akan digunakan dalam masing-masing block.
Perangkat CUDA menggunakan spasi memori yang memiliki
karakteristik yang berbeda yang menunjukkan yang berbeda dalam aplikasi Cuda.
Ruang ruang memory pada CUDA seperti terlihat pada Gambar.

PENUTUP
GPU terdiri dari ribuan core yang bisa mengeksekusi perintah secara paralel. Dengan kartu grafis yang memiliki kemampuan GPU Acceleration, para programmer ini bisa mengaplikasikan pemrograman dengan teknik paralel computing ke dalam core-core GPU (bersama-sama CPU). Dengan begitu, proses-proses di dalam software (rendering contohnya) menjadi lebih cepat.
Daftar Pustaka