• Tidak ada hasil yang ditemukan

2. BAB VISUALISASI FLUIDA SATU DAN DUA FASE DENGAN PEMROGRAMAN PARALEL GPU CUDA.

N/A
N/A
Protected

Academic year: 2017

Membagikan "2. BAB VISUALISASI FLUIDA SATU DAN DUA FASE DENGAN PEMROGRAMAN PARALEL GPU CUDA."

Copied!
23
0
0

Teks penuh

(1)

2. BABII

TINJAUAN PUSTAKA

2.1. Tinjauan Pustaka

Visualisasi merupakan salah satu cara untuk merepresentasikan data

(Hansen & Johnson, 2005) sebuah data bisa di dapatkan dari bermacam metode

yang ada seperti simulasi (Weiskopf, 2006). Selain data untuk membuat sebuah

visualisasi di butuhkan beberapa tools pendukung seperti perangkat lunak dan

perangkat keras, perangkat lunak yang yang pasti di butuhkan adalah video

accelerator atau yang sering kita kenal dengan VGA ( Video Graphics

Accelerator ) yang berfungsi untuk menerjemahkan data ke dalam output layar

monitor. OpenGL, paraview, blender, matlab, openCV dan lain lain merupakan

tools aplikasi yang banyak di gunakan untuk menampilkan hasil visualisasi,

seperti beberapa peneliti ini yang membuat visualisasi penelitiannya dengan

beberapa tools tersebut (Thurey, 2007; Schreiber, 2010; Zhang et al., 2008). Ada

beberapa metode numerik untuk membuat sebuah simulasi fluida di antarnya.

Smoothed particle hydrodynamics (SPH), Level-set and NS (nevier-stokes), dan

Lattice Boltzmann (LB), merupakan metode metode yang sering di gunakan untuk

membuat simulasi fluida seperti Thurey (2007) dan Munoz (2010) yang

menggunakan metode LB, Janicke & Scheuermann (2010) yang menggunakan

metode SPH.

Keuntungan metode LB adalah kodenya lebih simpel di bandingkan

dengan metode lainnya, eksekusi waktunya lebih cepat, dan akurasi yang di dapat

tidak kalah dengan metode yang lain. Metode ini banyak di gunakan peneliti

(2)

sifat lattice volume, seperti asap, minyak, udara (Thurey, 2007). Selain aliran satu

fase Metode LB bisa juga di terapkan untuk simulasi fluida multifase (Mohamad,

2011; Sukop & Thorne, Jr., 2007),

Aliran multi fase dan multi komponen terjadi sekitar kita, di alam atau pun

di industri. Multi fase merupakan kondisi di mana terdapat dua atau lebih jenis

fluida dalam satu aliran, komponen yang di maksud adalah mengacu pada unsur

kimia sehingga untuk multiphase satu komponen misal H2O terdiri dari air dan

uap air (Sukop & Thorne, Jr., 2007). Sebaliknya multi komponen terdiri dari

unsur kimia yang terpisah seperti minyak dan air. Pembuatan simulasi satu cukup

mudah karena hanya menerapkan satu model lattice yang sama. Namun untuk

simulasi dua fase atau multi fase memiliki kesulitan tersendiri di sebabkan harus

menghitung nilai kecepatan rata-rata yang berbeda pada tiap fasenya. Model yang

yang banyak di gunakan adalah model yang di usulkan oleh Shan & Chen (1993),

dan banyak peneliti yang menggunakan model tersebut di antaranya (Sukop &

Thorne, Jr., 2007) (Huang et al., 2008) (Schreiber, 2010) (Huang et al., 2010).

Model shan and chen relatif mudah di terapkan dalam pemodelan dua fase. Dalam

penelitian ini menyimulasikan satu fase dan dua fase yang merupakan bagian dari

multi fase.

Beban komputasi menjadi masalah tersendiri saat melakukan komputasi

simulasi fluida. Masalah ini yang di alami oleh Fadlila Rohmadani (2010) dan

Dharmawan dkk (2011) yang membuat simulasi gerakan air 3 Dimensi dengan

metode Lattice Boltzmann, hasil yang di dapat memuaskan namun peneliti belum

(3)

Semakin besar beban komputasinya maka akan semakin lama waktu

simulasinya, untuk mengatasinya adalah dengan menerapkan komputasi paralel

pada programnya. Komputasi paralel merupakan teknik untuk membagi proses

perhitungan yang di bebankan pada CPU kepada bagian pemroses lain. Tidak

perlu menggunakan prosesor berkecepatan tinggi dengan membagi proses pada

banyak prosesor dengan kecepatan rendah maka bisa mengurangi waktu proses

simulasinya (Wehner, 2009).

Pada saat ini yang cukup populer dalam penggunaan komputasi paralel

adalah penggunaan GPU CUDA ( Compute Unified Device Architecture ) CUDA

sendiri merupakan tools GPU untuk keperluan umum ( non-grafis). Arsitektur

CUDA memungkinkan proses komputasi perangkat lunak berjalan di GPU buatan

Nvidia, menurut Strzodka (2005) GPU merupakan kekuatan proses paralel pada

akhir tahun ini. Telah banyak penelitian yang menggunakan teknik komputasi

paralel seperti yang di lakukan oleh Schreiber (2010) Brodtkorb dkk. (2011), yang

membuat simulasi dan visualisasi fluida GPU CUDA sebagai komputasi paralel.

GPU di rancang khusus untuk melakukan operasi secara paralel, karena

transistor yang lebih banyak dari pada CPU di khususkan hanya untuk pengolahan

data saja (Gebaly, 2011). Pemrograman CUDA sama seperti membuat program C

biasa. Saat kompilasi, syntax C biasa akan di proses oleh compiler C, sedangkan

syntax dengan keyword CUDA akan di proses oleh compiler CUDA (nvcc)

(nvidia, 2012). Dengan itu proses yang di jalankan bisa lebih cepat.

Selain penggunaan perangkat keras atau hardware dalam visualisasi

(4)

sangat membantu dalam membuat visualisasi dari data hasil simulasi. openGL

merupakan software interface to graphics (Schreiber, 2010; Gebaly, 2011).

Dari kajian pustaka di atas maka pada penelitian ini di usulkan

pengembangan simulasi untuk membuat penelitian tentang metode Lattice

Bolztmann dengan penerapan visualisasi fluida satu fase dan dua fase

menggunakan pemrograman GPU CUDA dan mengkaji perbedaan waktu

komputasi yang di butuhkan untuk menyelesaikan simulasi fluida satu dan dua

fase.

2.2. Landasan Teori 2.2.1. Visualisasi

Bidang visualisasi di fokuskan pada penciptaan gambar yang

menyampaikan informasi penting tentang data yang mendasari (Hansen &

Johnson, 2005). Membuat visualisasi di perlukan sebuah data, sumber data bisa di

peroleh dari, simulasi numerik, pengukuran data fisik atau database. (Weiskopf,

2006) dalam pembuatan visualisasi data mentah akan di ubah oleh tahap

penyaringan pipeline menjadi data abstrak visualisasi, operasi penyaringan yang

umum adalah denoising oleh konvolusi dengan filter kernel atau perbaikan data

dengan segmentasi, tahap berikutnya adalah pemetaan visualisasi, yang

membangun pencitraan dari data visualisasi, representasi pencitraan memiliki

bagian di ruang dan waktu, dan berisi atribut yang bisa terdiri dari geometri

warna, transparansi, refleksi, dan tekstur permukaan.

Visualisasi bisa di klasifikasikan menjadi 3 tipe (Myers, 1990) yang di

(5)

1. Scientific Visualization mengacu pada penerapan aplikasi grafis yang

berorientasi pada data seperti yang di hasilkan oleh simulasi super

komputer dan alat alat ukur yang di gunakan dalam bidang astronomi,

meotorologi, dan medis.

2. Visualisasi Program. Terdiri dari beberapa teknik yang di tentukan dengan

cara yang konvensional dan representatif bergambar di gunakan untuk

ilustrasi aspek yang berbeda dari program. Misalnya dalam

menjalankannya terhadap perhitungan waktu. Visualisasi program

awalnya hanya di gunakan untuk debugging dan pengajaran yang

bertujuan untuk presentasi. Dalam konteks advance computer system,

program visualization di gunakan sebagai salah satu untuk Monitoring dan

tuning.

3. Visual Program adalah sebuah sistem yang di gunakan oleh pengguna

untuk pemrograman satu atau dua ( atau yang lebih tinggi ) dimensi grafis.

2.2.2. Fluida

Fluida yang memiliki jarak molekul yang tidak terlalu rapat seperti pada

benda padat dan gaya antar molekul yang lemah atau kita lebih mengenalnya

dengan sebutan zat cair, zat cair ( air, minyak, dan lain-lain) (Munson et al.,

2004). Dengan kondisi molekul tersebut maka zat cair lebih mudah di deformasi (

tapi tidak mudah di mampatkan). Karena hal tersebut fluida mempunyai sifat bisa

mengalir dan memberikan sedikit hambatan terhadap perubahan bentuk

(kanginan, 2007) temperatur. Tekanan di lambangkan dengan P ( pressure). Dan

(6)

2.2.3. Aliran fluida

a. Aliran satu fase ( single phase )

Aliran fase tunggal hanya mewakili satu gerak fluida saja, yaitu gas

atau cair. Dalam tesis ini, gerak fluida yang di gunakan adalah satu fase cair.

b. Aliran Multi fase (multiphase)

Aliran dalam banyak fase atau atau multi fase sering di jumpai dalam

kehidupan sehari hari, dalam hal ini dua fase yang bagian dari multi fase, bisa

berupa gas-cair, dan gas cair. Kriteria dari dua fase yaitu memiliki perbedaan

kerapatan dan kerapatan pada tiap fase fluidanya. Dalam tesis ini kasus dua fase

adalah mewakili uap air dan air.

2.2.4. Lattice Boltzmann Method (LBM)

Metode LB yang berawal dari sebuah persamaan Boltzman, Di namakan

sesuai dengan penemunya ilmuwan asal Austria, Ludwig Boltzmann. Persamaan

ini merupakan bagian fisika statistik klasik dan menggambarkan perilaku gas

dalam sekala mikroskopis.

LBM merupakan pengembangan cellular automata, yang berarti fluida

terbentuk dari banyak sel sejenis. Semua sel di perbaharui di setiap langkah waktu

dengan aturan sederhana, dengan ikut memperhitungkan sel-sel di sekitarnya.

LBM memodelkan fluida yang tak mampu-mampat (incompressible) di mana

partikel fluida hanya dapat bergerak searah dengan collousionr kecepatan lattice.

LB menjelaskan Model perilaku makroskopik cairan dalam fisika statistik, dan

(7)

⃗ (2.1)

adalah probabilitas fungsi distribusi

⃗⃗ kecepatan partikel

Ω ( ) suku perubahan tumbukan.

Model dalam metode Lattice Boltzmann biasa di lambangkan dengan

DnQm, di mana n menyatakan jumlah dimensi yang di gunakan dan m

menyatakan jumlah arah lattice yang di gunakan. Metode Lattice Boltzmann

menyediakan model-model lattice untuk di gunakan sesuai dengan ruang dimensi

dan kebutuhan seperti model D1Q2 dan D1Q3, D1Q5, D2Q5 dan D2Q4, D2Q9,

D3Q15, dan D3Q19 (Mohamad:2010).

Dalam penelitian ini, akan di bangun model simulasi perambatan

gelombang menggunakan model Lattice Boltzmann D2Q9, yaitu berdimensi 2

dengan 9 arah lattice. Bisa di lihat pada Gambar 2.1, yang menunjukkan kartesian

lattice dan kecepatan eadi mana a = 0, 1,...,8 adalah indeks arah dan e0 = 0 yang

menunjukkan partikel saat diam. Setiap sisi dari sel memiliki panjang 1. Unit

lattice (lu) adalah ukuran panjang dalam Metode Lattice Boltzmann dan selisih

waktu (ts) adalah unit waktu.

(8)

Pada Gambar 2.1 di atas terdapat susunan fungsi fi yaitu f0, f1, f2, f3, f4, f5,

f6, f7,f8. Vektor dengan nomor 0 mempunyai panjang 0 dan menyimpan jumlah

partikel yang berhenti di sel berikutnya. Partikel ini tidak akan bergerak ke

mana-mana di langkah waktu berikutnya, tetapi beberapa di antaranya mungkin akan di

percepat (bergerak) karena tumbukan dengan partikel lain, jadi jumlah partikel

yang diam bisa saja berubah.

Dari Gambar 2.1 di atas, kita juga dapat mendefinisikan sembilan

kecepatan ei dalam model D2Q9 yang di definisikan sebagai berikut :

e0 = (0,0).c, e1 = (1,0).c, e2 = (0,1).c, e3 = (-1,0).c, e4 = (0,-1).c,

e5 = (1,1).c, e6 = (-1,1).c, e7 = (-1,-1).c, e8 = (1,-1).c,

atau bisa juga di defenisikan sebagai berikut :

e0 = (0,0).c, e1,3 = (±1,0).c, e2,4 = (0,±1).c, e5,6,7,8 = (±1, ±1).c,

di mana c = Δx/Δt = Δy/Δt. Di sini, Δt di gunakan untuk melihat selisih

waktu (ts) untuk menghitung jarak gerak antar partikel. Setiap arah memiliki

bobot, bobot arah tersebut adalah 0 = 4/9, 1,2,3,4 = 1/9, 5,6,7,8 = 1/36. Dalam

bentuk persamaan dapat di tulis sebagai berikut :

{

⁄ ⁄

(2.2)

dapat juga di tulis dengan persamaan :

(9)

Fungsi distribusi, ada dua nilai penting yang di hasilkan dengan cara

menjumlah semua (9) fungsi distribusi, di dapatkan kepadatan (massa/volume)

dari sel, dengan asumsi semua partikel mempunyai massa yang sama yaitu 1.

Hasil yang penting lainnya adalah untuk setiap sel di dapat kecepatan dan arah ke

mana partikel akan cenderung bergerak dari setiap sel. Kepadatan momentum

perlu di hitung, yaitu jumlah dari semua fungsi distribusi partikel, tetapi setiap

distribusi harus di kalikan dengan vektor lattice. Sehingga, fungsi distribusi

partikel 0 akan di kalikan dengan vektor (0,0) yang selalu menghasilkan 0, fungsi

distribusi f1 di kalikan dengan (1,0) dan di tambahkan dengan fungsi distribusi f3 di

kalikan dengan vektor (-1,0) dan begitu seterusnya. Dari proses perhitungan di

atas di dapatkan hasil dalam vektor 2 dimensi yang panjangnya di tentukan oleh

kepadatan volume. Cukup dengan membagi momentum kepadatan dengan

kepadatan sehingga di dapatkan vektor kecepatan untuk satu sel. Untuk awal

simulasi, kepadatan di beri nilai 1. Karena LBM di gunakan untuk melakukan

simulasi fluida yang tidak dapat di padatkan, artinya nilai kepadatan di setiap

bagian dari fluida adalah konstan, keterikatan ini merenggang selama proses

simulasi. Dalam simulasi biasanya akan di jumpai perbedaan kepadatan, tetapi

secara keseluruhan masih akan membentuk satu fluida tak mampu mampat.

Di dalam transportasi Lattice Boltzmann dapat di atur oleh fungsi

distribusi yang mewakili partikel di lokasi r (x, y) pada waktu t, dan partikel akan

di gantikan oleh (dx, dy) dalam waktu dt dengan di pengaruhi oleh gaya F pada

(10)

Persamaan yang mengatur fungsi distribusi f (r, c, t) memiliki dua istilah,

langkah aliran (streaming) dan tumbukan (collision) panjang. Di sini, x dan y

adalah koordinat spasial, t adalah waktu, dan c adalah kecepatan discrete lattice

beristirahat, dari nilai tersebut nilai-nilai mikroskopik untuk kepadatan (density)

(2.4) dan kecepatan (velocity) (2.5) bisa di hitung :

(2.4)

(2.5)

Proses simulasi LBM terdiri dari dua tahap yang di ulang setiap langkah

waktu. Yang pertama adalah tahap aliran (streaming) (2.6) di mana perpindahan

sebenarnya dari partikel melalui grid di lakukan. Tahap berikutnya menghitung

tabrakan yang terjadi selama pergerakan itu, sehingga di namakan tahap tabrakan

(collision)( 2.7) di tambahkan sebagai gaya luar misalnya gravitasi (2.8).

̅ ̅ ̅ (2.6)

̅ ̅ ̅ ̅ (2.7) ̅ ̅ ̅ ( ) (2.8)

Proses aliran (streaming), sebagai contoh f1(i,j) bergerak menuju f1(i+1,

j), f2(i,j) bergerak menuju f2(i, j+1), f3(i,j) bergerak menuju f3(i-1, j), f4(i,j)

bergerak menuju f4(i, j-1), f5(i,j) bergerak menuju f5(i+1, j+1), f6(i,j) bergerak

menuju f6(i-1, j+1), f7(i,j) bergerak menuju f7(i-1, j-1), f8(i,j) bergerak menuju

(11)

perubahan pada fungsi distribusi masih di perlukan untuk tahap aliran (streaming)

sel lain. Secara numerik LBM dapat di tuliskan dalam persamaan aliran

(streaming) dalam waktu (t) :

Gambar 2.2 Pengaturan lattice untuk model D2Q9. (Mohamad, 2011, p.63)

Proses tumbukan di lakukan untuk mendapatkan nilai keseimbangan (fi eq).

Tahap tumbukan (collision) tidak mengubah kepadatan atau kecepatan dari sel,

tetapi hanya mengubah distribusi partikel untuk semua fungsi distribusi partikel,

Model tumbukan di dalam Lattice Boltzmann merupakan interaksi tumbukan

antara partikel dalam fluida selama terjadi gerakan, proses tumbukan ini terjadi

dengan adanya relaksasi fungsi distribusi yang dapat di hitung untuk setiap sel

dengan kepadatan dan kecepatan dari persamaan variabel makroskopik. Proses

(12)

(a) (b)

Gambar 2.3 (a) Ilustrasi tumbukan sel tunggal pada Lattice D2Q9 (b) Proses aliran setelah proses tumbukan

Secara numerik persamaan Lattice Boltzmann dapat di tuliskan dengan

menggunakan persamaan (2.9). pada , koefisien di namakan frekuensi

tumbukan dan τ di namakan faktor relaksasi. Fungsi kesetimbangan distribusi

lokal di lambangkan dengan ( feq ) yang merupakan fungsi distribusi

Maxwell-Boltzmann.

⁄ (

) (2.9)

[

⁄ ] (2.10)

Kepadatan dari sel di lambangkan dengan rho dan vektor kecepatan di

lambangkan dengan u = (u1, u2). Vektor kecepatan dari lattice adalah vektor e 0..8,

masing-masing mempunyai bobot i. Untuk tahap tumbukan nilai kesetimbangan

fungsi distribusi perlu di hitung dari kepadatan dan kecepatan. Ketiga skalar dari

vektor kecepatan dan vektor lattice pada persamaan (2.3) dengan mudah dapat di

hitung. Ketiganya perlu di skala dengan sesuai dan kemudian di jumlahkan

(13)

dapat mencapai titik kesetimbangan lebih cepat atau lebih lambat. Fungsi

distribusi partikel yang baru ( 'i f ) dapat di hitung menurut persamaan :

(2.11)

2.2.5. Lattice Boltzmann untuk multi fase

Pada aliran multiphase berubah karena adanya nilai tambahan yaitu gaya

tekanan pada setiap latticenya. Persamaan yang di gunakan adalah persamaan

yang di gunakan Shan & Chen (1993).Persamaan ini sering di gunakan di

sebabkan saat ini adalah metode yang cukup stabil dalam hal menghitung gaya

luar

(Shan & Chen, 1993) (2.12)

G adalah kekuatan interaksi, adalah 1/9 a ={1,2,3,4},di mana 1/36 for

a = adalah potensi interaksi :

( ⁄ ) (2.13)

dan adalah nilai konstan sembarang.

2.2.6. Komputasi paralel

Komputasi paralel merupakan salah satu teknik melakukan komputasi

secara bersamaan dengan memanfaatkan beberapa komputer juga secara

bersamaan. Komputasi paralel di butuhkan saat kapasitas yang di perlukan sangat

(14)

pemrograman paralel untuk dapat merealisasikan komputasi. Pemrograman

paralel memiliki tujuan utama yaitu untuk meningkatkan performa komputasi.

Oleh karena itu semakin banyak hal yang bisa di lakukan secara bersamaan dalam

waktu yang sama, semakin banyak pekerjaan yang bisa di selesaikan.

Ada dua cara untuk mengurangi waktu komputasi, yang pertama dengan

meningkatkan jumlah operasi yang di lakukan setiap detik, dengan menggunakan

prosesor yang lebih cepat, tapi cara ini telah menurun bersamaan dengan

berhentinya perkembangan kecepatan prosesor pada kecepatan 4Ghz di sebabkan

belum mampu mengatasi masalah konsumsi daya dan suhu yang tinggi pada

prosesor (Kirk & Hwu, 2010), cara kedua adalah melakukan komputasi dari

beberapa program secara bersamaan dalam seri paralel. dengan membagi threads

ke beberapa prosesor, sehingga kita dapat mengurangi waktu yang di butuhkan

untuk proses tanpa harus meningkatkan kecepatan prosesor.

Kita dapat melakukan komputasi paralel dengan menggunakan beberapa

perangkat keras sekaligus. Misalnya :

a. Menggunakan banyak CPU dalam satu komputer, contohnya

supercomputer yang memiliki lebih dari satu prosesor (Kirk & Hwu,

2010)

b. Menggunakan beberapa komputer dengan CPu tunggal yang secara

fisik di hubungkan dengan jaringan.

c. Menggunakan beberapa core pada satu CPU.

Pada cara pertama dan kedua bisa kita terapkan pada sebuah laboratorium

(15)

ada pada CPU umumnya di pasaran, maksimal 4 core dalam 1 CPU, sehingga

pilihan lain adalah menggunakan paralel dengan membagi thread pada beberapa

prosesor lain adalah hal ini kita bisa menggunakan prosesor pada GPU.

Pengembangan arsitektur mikroprosesor dari tahun 2003 yaitu,

multicore dan many-core (Kirk & Hwu, 2010). Pada saat ini arsitektur multicore

dari hanya berinti dua telah meningkat menjadi delapan inti pada satu

mikroprosesor. CPU (central proceesing unit) banyak menggunakan arsitektur

multicore tersebut. sedangkan many-core berfokus untuk memaksimalkan kinerja

program untuk bekerja secara paralel. Arsitektur many-core yang banyak di

gunakan GPU memiliki lebih banyak unit pemroses daripada arsitektur multicore.

Dalam Gambar 2.4 terlihat perbandingan kecepatan antara CPU dan GPU.

(16)

Perbedaan kecepatan antara GPU dan CPU di sebabkan karena GPU di

khususkan untuk perhitungan intensif dan perhitungan paralel, dan untuk di

rancang sedemikian rupa sehingga lebih banyak transistor yang di khususkan

untuk pengolahan data bukan untuk cache atau flow-control (Nvidia, 2012) tidak

seperti pada CPU yang memiliki cache besar seperti terlihat pada Gambar 2.5 di

bawah ini.

Gambar 2.5 GPU lebih banyak transistor ke pengolahan data. (nvidia, 2012)

GPU tidak bisa menggantikan CPU sepenuhnya karena GPU di desain

untuk melakukan kalkulasi numerik dan untuk memproses secara paralel saja,

bukan untuk perhitungan sekuensial.

2.2.7. CUDA ( Compute Unified Device Architecture )

CUDA ™ adalah platform komputasi paralel dan model

pemrograman yang memungkinkan peningkatan dramatis dalam kinerja

komputasi dengan memanfaatkan kekuatan dari graphics processing unit (GPU)

(Nvidia, 2012). Sejak di perkenalkan pada 2006, CUDA telah banyak di sebarkan

(17)

oleh dasar terinstal lebih dari 300 juta CUDA-enabled GPU di notebook,

workstation, menghitung cluster dan super-computer. (Nvidia, 2012).

Cuda juga di lengkapi dengan lingkungan perangkat lunak yang

memungkinkan pengembang menggunakan bahasa C sebagai bahasa

pemrogramannya (nvidia, 2012). Pada Gambar 2.6 di ilustrasikan bahasa

pemrograman lain yang bisa di gunakan dalam CUDA dan implementasi

pemrograman interface.

GPU Computing Application

Libraries and Middleware cuFFT cuBLAS cuRAND cuSPASE LAPACK CULA MAGMA Thrust NPP cuDPP VSIPL SVM OpencCurrent PhysX OptiX Iray RealityServer MATALAB Mathematica

C C++ Fotran

Java Python Wrappers

Di rect

Compute OpenCL tm

Di rectives (e.g.

OpenACC) NVIDIA GPU

Whit the CUDA Parallel Computing Architecture

Fermi Architecture Geforce 400

series Quadro Fermi Series Tesla 20 Series

Tesla Architecture

Geforce 200 series

Geforce 9 series Geforce 8 series

Quadro FX series Quadro Plex series Quadro NVX Series

Tesla 10 series

Gambar 2.6 CUDA untuk bahasa pemrograman dan aplikasi program interface. (nvidia, 2012)

Model pemrograman CUDA adalah membagi pekerjaan yang akan di

(18)

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 di sebut sebagai blok dalam blok memiliki satu memori tersendiri yang

bisa di gunakan thread dalam blok tersebut. Media untuk saling berkomunikasi

antar thread di namakan dengan Share memori. Setiap blok akan di kelompokkan

lagi menjadi sebuah grid yang menjadi sekumpulan block yang di gunakan dalam

komputasi. Ilustrasi seperti terlihat pada Gambar 2.7.

Gambar 2.7 Struktur unit pemroses pada CUDA (nvidia, 2012)

CPU dalam CUDA di sebut dengan istilah Host, dan GPU di sebut dengan

istilah Device. Ada 2 bagian pada pemrograman CUDA yaitu fungsi yang di

jalankan pada CPU dan fungsi yang di jalankan pada GPU, kernel adalah sebutan

untuk program CUDA yang berjalan pada GPU. Pada saat fungsi ini berjalan,

pemrogram harus memberikan informasi pada GPU untuk memesan berapa

(19)

Perangkat CUDA menggunakan spasi memori yang memiliki karakteristik

yang berbeda yang menunjukkan yang berbeda dalam aplikasi Cuda. Ruang ruang

memori pada CUDA seperti terlihat pada Gambar 2.8

Gambar 2.8. Model memori perangkat CUDA

Jumlah memori yang tersedia di setiap ruang memori pada setiap tingkat

kemampuan menghitung Global, Constant dan memory texture memiliki latency

yang terbesar, di ikuti oleh memori konstan, register dan shared memori, ciri tiap

memori bisa terlihat pada Tabel 2.1 di bawah.

Tabel 2.1 Fitur memorydevice

Memory Location on/off chip

Cached Access Scope Lifetime

Register On - R/W 1 thread Thread

Local Off + R/W 1 Thread Thread

Shared On n/a R/W All thread in block Block

(20)

Tabel 2.2 Beberapa perintah untuk pemrograman CUDA.

Syntaxs Write in program Fungsi Keterangan

cudaGetDeviceCount(). cudaGetDeviceCount(). Device management

cudaGetDeviceProperties(). cudaGetDeviceProperties(). Device management

cudaMalloc() cudaMalloc() Device

memory management

cudaFree () cudaFree ()

cudaMemcpy () cudaMemcpy ()

cudaBindTexture () cudaBindTexture () Texture management

cudaBindTextureToArray () cudaBindTextureToArray ()

cudaGLMapBufferObject () cudaGLMapBufferObject () Graphics interoperability

cudaD3D9MapVertexBuffer ()

cudaD3D9MapVertexBuffer ()

__global__ Void MyKernel(){} Function

qualifiers

Cal from host, execute on GPU

__device__ Float MyDeviceFunc() {} Function qualifiers

Cal from GPU, execute on GPU

__host__ Int HostFunc() {} Function

qualifiers

Cal from host, execute on host

__device__ Float MyGPUArray[32]; Variable qualifiers

In GPU memory space

__constant__ Float MyConstArray[32]; Variable qualifiers

Write by host; read by GPU

__shared__ Float MySharedArray[32]; Variable qualifiers Shared within thread block Int1, int2… Float1, float2… Double, double2..etc Built-in vector types

<<< >>> <<< Grid, Block >>> Excution configuration

Launch kernel

gridDdi m Di m3 gridDdi m; Variable and

function valid in device code

Grid dimension

blockDi m Di m3 blockDi m Variable and

function valid in device code

Block dimension

blockIdx Di m3 blockIdx Variable and

function valid in device code

Block index

Threadi dx Di m3 Threadi dx Variable and

function valid in device code

Thread index

__sycthreads() Void __sycthreads() Variable and function valid in device code

(21)

Bahasa pemrograman yang di gunakan oleh CUDA adalah bahasa C/C++

yang di beri ekstensi fungsi-fungsi dan syntaxs yang di gunakan khusus untuk

CUDA untuk manajemen perangkat CUDA. Syntaxs khusus pada pemrograman

CUDA memiliki fungsi fungsi yang berbeda dan tujuan yang berbeda tiap

syntaxsnya. Seperti terlihat pada Tabel 2.2 di atas.

2.2.8. OpenGL

OpenGL terdiri dari tiga perpustakaan : Graphics Library (GL) Graphics

Library Utilitas (Glu), dan Graphics Library Utilities Toolkit (GLUT). Nama

fungsi di mulai dengan gl, glu, atau Glut, tergantung pada perpustakaan mereka

miliki.

OpenGL (Open Graphics Library) adalah spesifikasi standar yang

mendefinisikan sebuah lintas-bahasa, lintas platform API untuk mengembangkan

aplikasi yang menghasilkan grafis komputer 2D maupun 3D. Antarmuka terdiri

dari lebih dari 250 panggilan fungsi yang berbeda yang dapat di gunakan untuk

menggambar tiga dimensi yang adegan-adegan kompleks dari bentuk-bentuk

primitif sederhana. OpenGL di kembangkan oleh Silicon Graphics Inc (SGI) pada

tahun 1992 (Shreiner, 2010) dan secara luas di gunakan dalam CAD, realitas

maya, visualisasi ilmiah, visualisasi informasi, dan simulasi penerbangan. Hal ini

juga di gunakan dalam video game, di mana bersaing dengan Direct3D on

Microsoft Windows platform. Singkatnya OpenGL adalah source program yang

di gunakan untuk menampilkan output dari input data setelah pengolahan grafis

(22)

Gambar 2.9. Alur kerja OpenGL

Pada dasarnya openGL adalah pemrograman dengan menggambarkan

objek objek dasar atau sering di sebut objek primitif, yaitu, titik, garis, dan

lingkaran, setiap fungsi untuk penggambaran lain hanya menggunakan kombinasi

dari fungsi penggambaran primitif, seperti halnya untuk membuat sebuah elips

maka hanya menggunakan algoritma untuk membangun dari fungsi lingkaran

dengan sedikit modifikasi pada jari-jarinya.

Perintah dan fungsi di openGL mempunyai format yang sama ini

memudahkan ahli program untuk membaca bagaimana jalannya fungsi ini, lihat

Tabel 2.3, dan pada Tabel 2.4 di bawah menunjukkan beberapa contoh perintah

openGL.

Tabel 2.3 Format fungsi openGL

Suffix Tipe Data C++ atau C OpenGL

b Integer 8-bit Signed char GLbyte

s Integer 16-bit Short GLshort

i Integer 32-bit Int atau long GLint, GLsizei

f Float 32-bit Float GLfloat

(23)

Tabel 2.4 Contoh perintah openGL

Perintah Arti Keterangan

glVertex2i(x, y); Lokasi titik berada (x, y) Tipe argumennya adalah integer dan 2D (x, y)

glVertex2f(x, y); Lokasi titik berada (x, y) Tipe argumennya adalah float

dan 2D (x, y)

glVertex3i(x, y, z); Lokasi titik berada (x, y,

z)

Tipe argumennya adalah integer dan 3D (x, y, z)

glVertex3f(x, y, z); Lokasi titik berada (x, y,

z)

Tipe argumennya adalah float dan 3D (x, y, z)

glClearColour(R, G, B, ); Warna latar belakang Empat komponen warna RGBA

glColor3f(R, G, B) Warna latar muka Tiga komponen warna (RGB)

glColor4f(R, G, B, ) Warna latar muka Empat komponen warna

(RGBA)

glBegin(GL_POINTS); Titik Objek primitif

glBegin(GL_LINES); Garis Objek primitif

glBegin(GL_LINE_STRIP); Poligaris Objek primitif

glBegin(GL_LINE_LOOP); Poligaris tertutup Objek primitif

glBegin(GL_TRIANGLES); Segitiga Objek primitif

glBegin(GL_TRIANGLE_STRIP); Segitiga Objek primitif

glBegin(GL_TRIANGLE_FAN); Segitiga Objek primitif

glBegin(GL_QUADS); Segiempat Objek primitif

glBegin(GL_QUADS_STRIP); Segiempat Objek primitif

glBegin(GL_LINE_STIPPLE); Garis putus-putus Objek primitif

glBegin(GL_POLY_STIPPLE); Poligon dengan pola

Gambar

Gambar 2.1 Visualisasi arah gerakan  lattice D2Q9
Gambar 2.2 Pengaturan  lattice untuk model D2Q9. (Mohamad, 2011, p.63)
Gambar 2.3 (a) Ilustrasi tumbukan sel tunggal pada Lattice D2Q9 (b) Proses aliran setelah proses tumbukan
Gambar 2.4 Perbandingan performa GPU dan CPU (Nvidia, 2012)
+7

Referensi

Dokumen terkait

• Memenuhi keb anggota kelg • Membantu anak u/ sosialisasi • Beradaptasi dg anak ke 2.. • Pembagian waktu u/ individu,

32 Maka, dengan memperkenalkan sebuah kegiatan yang menggunakan strategi kewirausahaan dapat menjadi sebuah usaha dalam memberikan kemampuan memorik bagi santri yang

Kondisi kesenjangan kasus gangguan jiwa yang sedikit ditemui di Puskes- mas seperti yang disebutkan WHO mungkin dise- babkan kriteria diagnostik yang sangat ketat sehing- ga dokter

Hasil dari penelitian menunjukkan bahwa pengawasan internal, pengawasan oleh kreditur, dan pengawasan oleh auditor independen dari sudut pandang kompetensi

[r]

LARAS ALDI DIANA MINARTI SAHRUL.

Salah satu manipulasi pakan yang bisa diterapkan dan diharapkan mempunyai nilai tambah pada produk telur lokal yaitu dengan penggunaan suplemen omega9 (Cherian et al., 2002),

Eksploitasi perikanan pukat cincin  terhadap populasi ibn  pelagis keeil telah berkembang ke  lepas pantai Laut Jawa hingga Selat Makassar sejalan dengan dinamika