RANCANGAN SISTEM
3.2 Konstruksi Struktur Uniform Grid
Konstruksi struktur uniform grid merupakan proses pembuatan struktur uni-form grid sesuai dengan yang telah dirancang pada sub bab 3.1. Pada tahapan ini terdapat 6 proses yang dilakukan secara serial dan masing-masing proses berjalan secara paralel. Proses-proses tersebut adalah inisialisasi, overlapped polygon, par-allel prefix sum, perhitungan perpotongan cell pada uniform grid, paralel sort, dan scanning data. Proses dan metode yang digunakan pada proses konstruksi struktur uniform griddiambil dari makalah penulis, [FH09].
3.2.1 Inisialisasi
Proses inisialisasi adalah proses menentukan resolusi uniform grid yang digu-nakan dan memesan memori yang dibutuhkan untuk menyimpan struktur uniform grid(pada gambar 3.2 terdapat pada sebelah kiri atas). Persamaan 2.15 digunakan untuk menentukan resolusi uniform grid dengan nilai variabel k = 5. Nilai k = 5 diambil dari percobaan pada makalah [WIK+06] yang menghasilkan nilai k = 5 adalah nilai k terbaik untuk digunakan pada penentuan struktur uniform grid. Proses ini berjalan secara serial pada CPU karena hanya terdiri dari beberapa perhitungan dan pemesanan memori untuk struktur data uniform grid sehingga tidak diperlukan proses paralel.
3.2.2 Overlapped Polygon
Overlapped polygonmerupakan proses untuk mencatat berapa cell yang berpo-tongan dengan polygon dari model input serta proses perhitungannya bersifat inde-penden pada satu polygon. Proses perhitungan berjalan secara paralel dengan thread berjumlah banyaknya polygon dari input model. Metode perhitungannya menggu-nakan pemetaan dari AABB suatu polygon ke koordinat uniform grid (koordinat dengan x, y, dan z adalah cell index dan (0,0,0) berada di AABB uniform grid yang paling minimum). Total perhitungan yang dilakukan pada proses ini akan digu-nakan untuk memesan memori yang dibutuhkan oleh struktur data triangle offset. Pseudocodesederhana untuk melakukan pemetaan dari koordinat katersian ke ko-ordinat uniform grid dapat dilihat pada algoritma 3.1.
Algoritma 3.2 Perhitungan perpotongan cell
>> Find AABB Polygon
>> Convert AABB Polygon to Uniform Grid Coord. >> In Uniform Grid Coord
>> Loop from Min. AABB to Max. AABB >> Save Polygon Index and Cell Index
3.2.3 Paralel Prefix Sum
Proses berikut adalah melakukan penambahan terhadap semua hasil yang di-dapatkan pada proses overlapped polygon untuk mencari total memori yang dibu-tuhkan untuk struktur triangle offset. Pada proses sebelumnya, data hasil keluaran disimpan dalam array dan proses selanjutnya adalah melakukan penambahan untuk setiap elemen pada array tersebut. Proses penambahan tersebut dinamakan prefix sum. Persamaan 3.1 merupakan persamaan inclusive scan yang digunakan pada proses ini dengan menggunakan pustaka CUDPP (CUDA Data Parallel Process-ing) [SHG08, SHZO07].
[a0, a1, . . . , an−1] ⇒ [a0, (a0+ a1), . . . , (a0+ a1+ . . . + an−1)] (3.1) 3.2.4 Perhitungan Perpotongan Cell
Perhitungan perpotongan cell adalah proses mencatatan cell mana saja yang berpotongan dengan polygon. Proses ini mirip dengan proses kedua, yaitu over-lapped polygon, tetapi pada proses ini bukan menghitung tetapi mencatat cell mana saja yang berpotongan dengan polygon dari model input. Algoritma sederhana yang digunakan pada proses ini dapat dilihat pada algoritma 3.2.
Pada algortima tersebut ada 4 buah langkah. Langkah pertama adalah mencari AABB dari polygon yang sedang diproses. Berikutnya melakukan konversi dari koordinat kartesian ke koordinat uniform grid. Lakukan perulangan dari AABB minimum ke AABB maximum yang telah dikonversi ke koordinat uniform grid lalu catat index cell dan index polygon yang sedang diproses. Data index cell akan disimpan pada struktur data sementara sedangkan data index polygon akan disimpan pada struktur triangle offset pada struktur data utama. Struktur data sementara yang berisi index cell akan dihilangkan setelah semua proses konstruksi telah dilewati. 3.2.5 Paralel Sort
Langkah berikutnya adalah melakukan sorting berdasarkan index cell sehingga membentuk data yang urut dari index cell terkecil ke yang terbesar. Proses
pen-Algoritma 3.3 Scanning data
>> IF next index cell is different then >> endindex = this triangle offset index >> ENDIF
>> IF previous index cell is different then >> startindex = this triangle offset index >> ENDIF
gurutan dilakukan dengan menggunakan algoritma paralel radix sort yang terdapat pada makalah [SHG09], yang sampai saat ini merupakan algoritma paralel sorting yang paling cepat yang pernah diimplementasikan pada platform CUDA. Algoritma dari paralel radix sort tersebut telah diimplementasikan pada pustaka CUDPP dan pustaka tersebut digunakan pada proses ini.
3.2.6 Scanning Data
Scanning dataadalah proses mencatatan index awal dan index akhir yang meny-impan data polygon yang berpotongan dengan index cell. Proses scanning data di-lakukan secara paralel dengan thread sebanyak jumlah overlapped polygon yang telah dihitung pada proses kedua. Algoritma 3.3 adalah algoritma yang digunakan untuk melakukan scanning data. Pada algoritma tersebut, ditekankan bahwa sete-lah melakukan proses sorting maka data dianggap akan urut dari index cell terkecil ke index cell terbesar sehingga yang diperlukan adalah melihat data pada index cell sekarang dengan data pada index cell sebelumnya dan data pada index cell selan-jutnya, jika data index cell sekarang dengan data index cell sebelumnya tidak sama maka berarti index triangle offset sekarang adalah index awal dari cell sedangkan jika data index cell sekarang tidak sama dengan data index cell selanjutnya maka index triangle offset sekarang merupakan index terakhir pada triangle offset dari cell.
3.2.7 Flowchart Konstruksi Struktur Uniform Grid
Gambar 3.3 merupakan flowchart konstruksi struktur data uniform grid beser-ta dabeser-ta masukan dan dabeser-ta keluaran yang digunakan. Dabeser-ta masukan dan keluaran yang disertakan hanya struktur data yang telah dirancang pada sub bab sebelumnya. Triangle dataakan selesai dan tidak akan diubah setelah tahapan load model sedan-gkan triangle offset tidak akan diubah lagi setelah proses paralel sort. Data uniform gridadalah data yang paling akhir dirubah yaitu pada proses scanning data.
Gambar 3.4: Gram-Schmidt Orthonormalization