TUGAS SOFSKILL PENGANTAR KOMPUTASI MODERN
Review Jurnal
“Data Parallel Computation on Graphics Hardware"
Nama Kelompok:
·
Desty Putri A 51411913
·
Dian Ayu K 52411021
·
Fitri Cynthia D 52411917
·
Priskyla Vivi E 55411585
·
Syara Safrila 57411900
TEKNIK INFORMATIKA
UNIVERSITAS GUNADARMA
2015
Abstrak
Seiring dengan terus
meningkatnya programabilitas dan kinerja GPU ( Graphics Proccessing Unit ) ,
banyak peneliti yang melirik ke Graphics Hardware untuk mengatasi masalah yang
biasanya terjadi pada CPU. Dalam banyak kasus, melakukan perhitungan dengan
menggunakan Graphic Hardware dapat memberikan keuntungan yang signifikan dibandingkan
dengan implementasi pada CPU tradisional. Namun, jika GPU adalah sumber
pemrosesan yang kuat, penting untuk membangun sebuah abstraksi yang benar
terhadap hardware tersebut, yang nantinya akan mendorong sebuah desain aplikasi
yang lebih efisien dengan peningkatan antarmuka untuk para desainer hardware.
BAB I
Pendahuluan
Data komputasi parallel memberikan
hasil yang lebih baik pada desktop PC, ketika hardware grafis deprogram lebih
modern. Sejak beberapa tahun terakhir, komoditas hardware grafis telah
berkembang pesat dari fungsi pipeline yang tetap menjadi simpul yang dapat
diprogram ( Programmable Vertex ) dan Fragment Processor. Sementara ini
programabilitas baru dirancang terutama untuk Real-Time Shading, banyak
peneliti telah mengamati bahwa perancangan tersebut dapat melampaui proses
rendering. Aplikasi seperti Matrix Multiply [Larsen and McAllister 2001],
Cellular Automata [Harris et al. 2002], dan Complete Ray Tracer [Purcell et al.
2002], dimana aplikasi tersebut sudah terhubung dengan GPU. Penelitian ini
memperlihatkan potensi dari Hardware Grafis dalam menyelesaikan tugas-tugas
komputasi secara umum. Bahkan, arsitektur Hardware Grafis yang akan datang
memungkinkan dapat digunakan untuk simulasi fenomena alam, Physicsbased Model,
dan AI.
Tujuan penulisan dari juranal
ini adalah untuk menunjukkan model pemograman Streamuntuk perhitungan secara umum pada Hardware Grafis. Kontribusi dari
jurnal ini meliputi :
- Menjelaskan dua alasan
utama bahwa hardware grafis lebih cepat daripada CPU melaui Data
Paralelisme dan Intensitas Aritmatika (rasio perhitungan bandwidth).
- Menggunakan pengamatan
sebagai panduan, dengan menyajikan lingkungan pemograman yang disebut Brook.
- Menunjukkan bagaimana
berbagai macam algoritma data parallel dapat diimplementasikan ke dalam Brook, dan menjalankannya pada Hardware Grafis.
- Menganalisa implementasi pemograman Hardware Grafis saat ini, dan memberikan arahan untuk desain hardware masa depan.
BAB II
Pembahasan Hasil Review
1. Dua alasan utama Hardware Grafis lebih cepat dari CPU
Disini ditunjukkan mengapa Hardware Grafis bisa lebih
cepat dari CPU dengan menggunakan metode Data Paralleisme dan Intensitas
Aritmatika, karena Data Paralelisme dapat memungkinkan sistem untuk menggunakan
sejumlah besar ALU dan menyembunyikan
latency memori, jadi sistem dapat menempati semua ALU dengan mengeksekusi
beberapa salinan paralel dari program lalu latency dari proses pembacaan memori
dapat disembunyikan, Teknik menyembunyikan latency memori pertama kali
diterapkan dalam arsitektur grafis untuk menyembunyikan latency pengambilan
tekstur pada gambar [Torborg dan Kajiya 1996; Anderson et al. 1997; Igehy et
al. 1998]. Sedangkan Intensitas Aritmatika adalah rasio operasi aritmatika
dilakukan per operasi memori, atau mentransfer per kata. Sebagai contoh,
pemograman fragment processor saat ini sistem memori memungkinkan satu miliar
128 bit kata per detik dapat dibaca ketika tingkat penghitungan empat kali
lebih cepat, jadi dari operasi aritmatika tersebut menunjukkan rasio mencapai
hingga 4 miliar 128-bit operasi per detik.
2. Model Pemograman Brook Stream.
Merupakan sebuah model
pemograman yang ideal yang ditunjukkan untuk komputasi hardware grafis, dimana
mengharuskan programer untuk menuliskan kode untuk pemrosesan parallel dengan
intensitas aritmatika yang tinggi.
Berikut ini adalah gambaran dari antarmuka brook untuk streaming hardware :
·
Streaming
Merupakan kumpulan records/data yang memerlukan penghitungan yang
sama. Sebuah record bisa jadi dari beberapa tipe pendukung dari sebuah
hardware, mulai dari nilai float tunggal sampai struktur yang kompleks.
Streaming pada Brook dibentuk melalui API LoadStream, cara pemanggilannya :
stream s = LoadStream (float, n, data);
Dimana float adalah tipe elemen, dan n adalah banyaknya tpe elemen float
pada data array.
·
Kernel
Functions
Kernel Functions merupakan suatu fungsi yang membedakan antara
pemograman Stream dengan pemograman Vektor
yang tradisional. Kernel
Functions memungkinkan evaluasi fungsi arbitrary dimana operator vector terdiri
dari operasi matematika sederhana. Kernel Functions dikompilasi secara terpisah
dari aplikasi menggunakan Brook Compiler. Fungsi LoadKernel adalah memuat Kernel yang sudah dikompilasi dari sebuah file dan memberikan
pengidentifikasian Kernel.KernelMap menjadi
sebagai masukan kernel, stream, dan konstanta pengidentifikasi dan mengeksekusi kernel pada setiap elemen dari input stream.
·
Reduction
Sementara Kernel Functions menyediakan mekanisme untuk menerapkan fungsi untuk satu set data,
Reduction menyediakan data dari metode paralel untuk menghitung nilai tunggal
dari satu set record. Contoh dari operai Reduction termasuk juga dari
penjumlahan aritmatika sederhana, komputasi maksimum, atau operasi yang lebih
kompleks seperti Matrix Multiplication.
·
Scatter
and Gather
Operasi Scatter and Gather menyediakan peningkatan secara tidak
langsung dalam membaca atau menulis data. Brook
memisahkan operasi Scatter dari
Ghather untuk mempertahankan Data Paralel. Jika kita diijinkan menulis dan
membaca pada elemen arbitrary didalam Kernel, maka kita akan diperkenalkan
dengan depedensi antara elemen Stream.
3. Implementasi pada Hardware Grafis
Dalam rangka untuk menunjukkan
bahwa hardware grafis mendukung pemrograman modelStreaming. Maka
dibangunlah sebuah sistem yang dapat mengimplementasikan Brook di atas OpenGL dan Cg.
Implementasi ini benar-benar menyembunyikan semua referensi ke API grafis dan
hanya memperlihatkan antarmuka pada bagian sebelumnya. Sistem ini terdiri dari
dua komponen: compiler kernel, yang mengkompilasi fungsi kernel ke dalam kode
Cg, dan sistem runtime dibangun di atas OpenGL yang mengimplementasikan Brook
API.
Ø Streaming
Data Stream berada di tekstur 2D floating point. ketika program
aplikasi mengeluarkan panggilan LoadStream, runtime sistem membuat objek
tekstur 2D dan salinan data ke tekstur. Output stream dari kernel ditulis ke
floating point Buffer dan disalin kembali menjadi objek tekstur. Ketika
aplikasi host mengeluarkan panggilan StoreStream, sistem runtime mengambil data
tekstur dari kartu grafis ke dalam host memori.
Ø Kernel Programs
Kernel dikompilasi menggunakan Brook
Compiler yang menghasilkan kode Cg yang
legal untuk hardware grafis seperti NVidia GeForce FX fragment processor.
Compiler dibangun menggunakan Utility Parser Bison dan Lexical Analyzer Flex.
Alat-alat ini menguraikan kode Kernel dan mengekstrak argument-argumen dan Body Code.
Nantinya hasil akan berupa scripts yang outputnya adalah fungsi Cg.
Ø Kernel Execution
Ketika aplikasi mengeluarkan panggilan KernelMap, runtime sistem
mengeksekusi kernel lalu dimuat menggunakan Fragment Processor. Sistem runtime
mengikat tekstur input, dan meng-set semua variabel konstan, dan mengikat
shader fragmen yang sesuai untuk kernel. Untuk menjalankan kernel, sistem
mengeluarkan quad besar berisi jumlah fragmen yang sama sebagai elemen dalam
input stream.
Ø Reduce
Hardware grafis tidak memiliki metode asli untuk reduksi. Brook
runtime mengimplementasikan reduksi melalui sebuah metode Multipass, sama
seperti jaringan reduksi pada arsitektur data parallel.
Ø Scatter and Gather
Operasi Scatter dan Gather tidak didukung oleh hardware fragmen.
Brook menerapkan Scatter dengan rendering
point ke dalam stream tujuan sebagai berikut. Pertama
stream tujuan diberikan ke offscreen pBuffer. Selanjutnya, sistem mengambil
index stream dari tekstur 2D. Menggunakan data indeks, sistem membuat Poin
OpenGL diposisikan sesuai dengan indeks nilai. Dengan pengguna tertentu,
ScatterOp kernel terikat, dimana titik fragmen melakukan pengurangan dengan
mengambil dua nilai-nilai untuk mengurangi dari tekstur dan menulis hasilnya ke
dalam pBuffer. Setelah semua poin telah diberikan, maka data akan tersebar ke stream tujuan pada pBuffer.
4. Analisa Implementasi Hardware Grafis Saat Ini, dan Arahan untuk
Desain Masa Depan.
Salah satu masalah terbesar
dalam program GPU saat ini adalah bahwa kernel tertentu tidak dapat dijalankan
pada perangkat keras karena kendala pada sumber dayanya. Termasuk kendala pada
jumlah instruksi, jumlah register, jumlah Vertex
Interpolant, dan jumlah Outputnya. Dalam
[Chan et al. 2002], algoritma dikembangkan untuk membagi kernel besar secara
otomatis ke kernel yang lebih kecil. Algoritma yang menangani banyak kendala
pada sumber daya, tetapi tidak bekerja untuk beberapa output. Pemecahan masalah
ini menjadi prioritas tinggi untuk pekerjaan di masa depan.
Perubahan besar dalam hardware
saat ini yang diperlukan untuk mendukung model hardware masa depan adalah:
§ Notasi
pada input dan output streaming untuk ukuran record yang lebih besar.
§ Peningkatan
dukungan untuk Reductions.
§ Menerapkan
penyelesaian Scatter and Gather secara effisien dengan menggunakan metode chace
texturing.
BAB III
Kesimpulan
Jurnal ini menindak tentang
Brook yang merupakan sebuah model pemograman dimana mengharuskan programer
untuk menuliskan kode untuk pemrosesan parallel dengan
intensitas aritmatika yang tinggi dan memungkinkan graphic hardware lebih cepat
dari CPU karena memanfaatkan metode komputasi parallel, yaitu dengan data
paralelisme dan aritmatika intensitas (rasio perhitungan bandwidth).
Sistem pada metode ini
menggunakan dua komponen, yaitu : compiler kernel (yang mengkompilasi fungsi
kernel ke dalam kode Cg) dan sistem runtime dibangun di atas OpenGL (yang
mengimplementasikan Brook API).
BAB IV
Daftar Pustaka
Referensi Jurnal :
http://articloud.blogspot.com/2014/08/review-jurnal-data-parallel-computation.html

