Beranda > Uncategorized > Phisyx and Cuda Graphics Engine

Phisyx and Cuda Graphics Engine

bullet-physics-demo-cuda

NVIDIA® PhysX™ dan CUDA™ adalah sebuah MahaKarya (jika bisa saya bilang begitu) dari para developers Nvidia, yang keduanya merupakan alat optimasi untuk meningkatkan kinerja hardware dari Nvidia, khususnya pada optimasi kinerja GPU (Graphic Processing Unit).

Graphic Processing Unit sendiri merupakan sebuah alat/hardware, yang berfungsi sebagai render grafis terdedikasi dalam kesatuan sistem hardware PC atau Notebook. GPU bisa berada pada Video Card khusus (VGA Card) atau terintegrasi dalam Motherboard berupa Integrated GPU.

GPU berfungsi untuk mengolah dan memanipulasi grafis pada CPU (Central Processing Unit), untuk nantinya ditampilkan dalam bentuk Visual Grafis pada Monitor (output).

Dalam kaitan dengan PhysX dan CUDA pada GPU keluaran Nvidia. Para Developers Nvidia secara simultan menyusun alat-alat khusus, baik berupa software, dan alogaritma dalam perhitungan tertentu, untuk meningkatkan Performa Grafis dari GPU Nvidia yang ada.

Pada dasarnya, PhysX dan CUDA adalah alat/tools yang berbeda, namun dapat bekerjasama dengan baik sebagai optimator grafis GPU Nvidia. PhysX lebih meng-khususkan diri pada optimasi sektor grafis, sedangkan CUDA kepada lebih banyak sektor (termasuk juga sektor grafis, yang bisa dikombinasikan dengan optimasi grafis PhysX).

A. PhysX
PhysX adalah proprietary (closed source) realtime >physics engine< middleware SDK, yang dikembangkan oleh NVIDIA (aslinya oleh AGEIA), untuk mengakselerasi performa PhysX-enabled Video Games.

PhysX sendiri diklaim merupakan “Physics Engine” yang powerfull, sehingga telah di”adopsi” oleh lebih dari 150 Games, digunakan oleh lebih dari 10.000 pengguna (yang terdaftar), dan telah disupport oleh Sony Playstation 3, Xbox 360, Nintendo Wii, serta PC.

Video Games yang telah mendukung/support akselerasi hardware oleh PhysX dapat diakselerasi performa grafisnya, baik oleh PhysX, maupun CUDA-enabled GeForce GPU secara bersamaan.

Akhirnya, perhitungan “physics” dari CPU menjadi lebih cepat, yang kemudian mengijinkan seluruh sistem mampu menyediakan “framerate” yang lebih cepat, sehingga menghasilkan pengalaman gaming yang lebih halus.

Sebagai tambahan, PhysX telah didesain secara spesifik untuk akselerasi hardware dari Processor yang powerful dengan ratusan core (inti). Dikombinasikan dengan kemampuan proses yang luar biasa dari GPU. PhysX akan menyediakan peningkatan eksponensial (perkalian berulang) pada kekuatan proses “physics”.

Peningkatan ini akan membawa kita pada level baru bermain game, yang lebih kaya, “membenamkan” kita lebih dalam pada lingkungan game dengan fitur-fitur:

* Ledakan yang menghasilkan debu dan reruntuhan.
* Karakter yang lebih kompleks secara geometris, untuk gerakan dan interaksi yang lebih hidup.
* Senjata-senjata baru yang spektakuler, dengan efek yang luar biasa.
* Pakaian yang “jatuh” dengan lipatan-lipatan yang lebih natural.
* Kabut dan asap tebal yang tersapu/terkibas disekitar objek yang bergerak.

Agar lebih mudah memahami cara kerja PysX, kita perlu memahami perbedaan “Graphic Processing” (proses grafis) dengan “Physics Processing” (proses physics).

Proses grafis yang dilakukan oleh GPU berlaku secara umum terhadap seluruh pengolahan dan manipulasi grafis yang diperintahkan oleh CPU. Hal ini berarti semua visual grafis yang bisa kita lihat dalam output di monitor, berasal dari proses grafis/Graphic Processing.

Sedangkan proses physics adalah proses simulasi fisika, yang mensimulasikan model fisika dari Newton menggunakan varibel berupa masa, kecepatan, pergesekan, serta tahanan angin.

Proses physics yang diakomodir oleh Physics Engine (seperti PhysX dalam GPU Nvidia), dapat mensimulasi dan memprediksi efek-efek dalam berbagai kondisi pada dunia fantasi, agar dapat menyerupai kondisi real pada dunia nyata. Proses ini biasanya dilakukan pada simulasi ilmiah dan dalam video games.

PRINSIP KERJA PHYSICS ENGINE:
Pada game-game terdahulu (tanpa physics engine), gerakan objek dalam game dilakukan secara langsung, dengan mengubah posisi objek tersebut. Dengan physisc engine, objek tidak lagi digerakkan secara langsung, tetapi dispesifikasikan berdasarkan force berdasarkan input dari pemain, dalam setiap loop pada setiap objek dalam game.

Physics engine bertugas untuk menghitung perkiraan posisi dan orientasi selanjutnya dari objek tersebut.

Ada dua proses utama dalam Physics Engine; yang pertama adalah melakukan “collision detection”. Output dari modul ini kemudian diberikan pada komponen kedua, yaitu “simulation system” (sering disebut “integrator”), untuk melakukan perhitungan berdasarkan rumus fisika. Simulation system kemudian akan memberikan update properti dari objek yang disimulasikan.

B. CUDA
CUDA adalah singkatan dari Compute-Unified-Device-Architecture. Secara sederhana, CUDA adalah kumpulan program-program yang menerjemahkan teks dalam bentuk bahasa komputer (computer language) berupa source language/source code, ke dalam bentuk bahasa komputer yang lain (target language/object code).

NVIDIA CUDA technology merupakan suatu lingkup bahasa pemrograman “C” yang membuka akses kekuatan prosesing dari GPU, untuk memecahkan hampir seluruh tantangan intensif dari komputasi / perhitungan yang kompleks dari proses GPU tersebut.

Nvidia GeForce 9100M G pada ACER Aspier 4530
merupakan GPU yang sudah suport arsitektur CUDA

Arsitektur CUDA memungkinkan GPU (yang telah support CUDA) menjadi arsitektur terbuka seperti layaknya CPU (Central Processing Unit a.k.a Processor). Hanya, tidak seperti CPU, GPU memiliki arsitektur banyak-inti yang pararel.

Setiap inti memiliki kemampuan untuk menjalankan ribuan “thread” secara simultan. Jika aplikasi yang dijalankan sesuai dengan arsitektur ini, GPU dapat menyediakan keuntungan yang lebih besar dari segi performa proses aplikasi tersebut.

KEUNGGULAN ARSITEKTUR CUDA:

* CUDA menggunakan bahasa “C” standar, dengan beberapa ekstensi yang simpel.
* Scattered writes (penyebaran penulisan) – kode dapat ditulis pada tujuan-tujuan yang tersebar dalam memori.
* Shared memory – CUDA menyingkapkan wilayah memory yang cepat (berukuran 16 KB) yang dapat di bagi diantara thread-thread yang ada. Hal ini dapat digunakan sebagai user-managed-cache, sehingga mengaktifkan bandwitdth yang lebih besar (dari besaran bandwidth yang dimungkinkan), menggunakan texture loops.
* Proses download dan readbacks yang lebih cepat, dari dan ke GPU.
* Support penuh terhadap operasi integer dan bitwise.

Keterbatasan CUDA (terutama di sektor grafis) adalah; CUDA tidak support texture rendering, Bus Bandwidth dan latensi antara CPU dengan GPU bisa jadi bottleneck (tidak imbang), serta CUDA hanya terdapat pada GPU Nvidia :)

NVIDIA’s CUDA development tools terbagi atas 3 komponen kunci yaitu:
1. CUDA driver
2. A complete CUDA toolkit
3. CUDA SDK code samples

CUDA Toolkit adalah pengembangan lingkunan bahasa “C” untuk CUDA-enabled GPU. Ruang lingkup pengembangan CUDA termasuk:

* NVCC “C” compiler
* CUDA FFT and BLAS libraries for the GPU* Profiler* gdb debugger for the GPU
* CUDA runtime driver (also available in the standard NVIDIA GPU driver)
* CUDA programming manual

Sedangkan contoh kode CUDA SDK adalah contoh source code yang dikembangkan oleh para developer CUDA, untuk menolong kita dalam memulai penggunaan CUDA. Contoh kode CUDA SDK termasuk:

* Parallel bitonic sort
* Matrix multiplication
* Matrix transpose
* Performance profiling using timers
* Parallel prefix sum (scan) of large arrays
* Image convolution
* 1D DWT using Haar wavelet
* OpenGL and Direct3D graphics interoperation examples
* CUDA BLAS and FFT library usage examples
* CPU-GPU C- and C++-code integration
* Binomial Option Pricing
* Black-Scholes Option Pricing
* Monte-Carlo Option Pricing
* Parallel Mersenne Twister (random number generation)
* Parallel Histogram
* Image Denoising
* Sobel Edge Detection Filter

Dengan pembahasan di atas, kita dapat mengetahui bahwa baik PhysX maupun CUDA memang merupakan alat optimasi GPU untuk performa yang lebih prima. Keduanya murni merupakan software / alogaritma / source code / dan bukan perangkat keras (hardware tambahan).

Tapi tetap saja, keduanya merupakan sebuah (lagi-lagi saya sebut) mahakarya dari para developers Nvidia (juga AGEIA) yang sangat cemerlang.

Dengan menggabungkan kedua fitur tersebut, GPU Nvidia yang sudah support PhysX dan CUDA bisa mendapatkan performa terbaiknya sebagai sebuah Graphic Processing Unit yang powerfull. Akhirnya, kita sebagai pelanggan yang diuntungkan.

Dompet tetap terjaga tapi performa akan terus meningkat seiring terus berkembang dan semakin barunya PhysX dan CUDA yang disediakan.

Selain itu, jika menginginkan performa grafis yang lebih memuaskan, kocek memang harus digali lebih dalam. Harga mungkin tidak pernah berbohong, tapi kita bisa “bermain cerdas” atas kecerdasan para developers Nvidia bukan?

Kategori:Uncategorized
  1. Belum ada komentar.
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: