Review Jurnal Data Parallel Computation on Graphics Hardware



Review Jurnal
“Data Parallel Computation on Graphics Hardware"

   Ian Buck                   Pat Hanrahan

Stanford University 











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 Stream untuk 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 model Streaming. 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 :






DMCA.com Protection Status

1 Response to "Review Jurnal Data Parallel Computation on Graphics Hardware"