Pengantar Thread Programming
Threading /
Thread adalah sebuah alur kontrol dari sebuah proses. Konsep threading adalah
menjalankan 2 proses ( proses yang sama atau proses yang berbeda ) dalam satu
waktu. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar
atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari
network. Threading dibagi menjadi 2 :
- Static Threading
Teknik ini
biasa digunakan untuk komputer dengan chip multiprocessors dan jenis komputer
shared-memory lainnya. Teknik ini memungkinkan thread berbagi memori yang
tersedia, menggunakan program counter dan mengeksekusi program secara
independen. Sistem operasi menempatkan satu thread pada prosesor dan menukarnya
dengan thread lain yang hendak menggunakan prosesor itu.
- Dynamic Multithreading
Teknik ini
merupakan pengembangan dari teknik sebelumnya yang bertujuan untuk kemudahan
karena dengannya programmer tidak harus pusing dengan protokol komunikasi, load
balancing, dan kerumitan lain yang ada pada static threading. Concurrency
platform ini menyediakan scheduler yang melakukan load balacing secara
otomatis. Walaupun platformnya masih dalam pengembangan namun secara umum
mendukung dua fitur : nested parallelism dan parallel loops.
Message Passing
Massage
Passing merupkan suatu teknik bagaimana mengatur suatu alur komunikasi
messaging terhadap proses pada system. Message passing dalam ilmu komputer
adalah suatu bentuk komunikasi yang digunakan dalam komputasi paralel,
pemrograman-berorientasi objek, dan komunikasi interprocess. Dalam model ini,
proses atau benda dapat mengirim dan menerima pesan yang terdiri dari nol atau
lebih byte, struktur data yang kompleks, atau bahkan segmen kode ke proses
lainnya dan dapat melakukan sinkronisasi. Paradigma Message passing yaitu :
1.
Banyak contoh dari paradigma sekuensial dipertimbangkan
bersama-sama.
2.
Programmer membayangkan beberapa prosesor, masing-masing dengan
memori, dan menulis sebuah program untuk berjalan pada setiap prosesor.
3.
Proses berkomunikasi dengan mengirimkan pesan satu sama lain.
Terdapat beberapa metode
dalam pengiriman pesan yaitu :
·
Synchronous Message Passing
Pengirim
menunggu untuk mengirim pesan sampai penerima siap untuk menerima pesan. Oleh
karena itu tidak ada buffering. Selain itu Pengirim tidak bisa mengirim pesan
untuk dirinya sendiri.
·
Ansynchronous Message Passing
Pengirim
akan mengirim pesan kapanpun dia mau. Pengirim tidak peduli ketika penerima
belum siap untuk menerima pesan. Oleh karena itu diperlukan buffering untuk
menampung pesan sementara sampai penerima siap menerima pesan. Selain itu
pengirim dapat pesan untuk dirinya sendiri.
OpenMP (Open Multiprocessing)
OpenMP
adalah Application Programing Interface (API) yang mendukung
pemrograman multiprosesing shared memory dalam bahasa C/C++ dan fortran
pada berbagai arsitektur dan sistem operasi diantaranya: Solaris, AIX,
HP-UX,GNU/Linux, Mac OS X, dan Windows.
OpenMP
adalah model portabel dan skalabel yang memberikan interface sederhana dan
fleksibel bagi programer shared memory dalam membangun aplikasi
paralel. Program multithread dapat ditulis dalam berbagai cara. Beberapa
diantaranya memungkinkan untuk melakukan interaksi yang kompleks antar thread.
OpenMP mencoba untuk memberikan kemudahan pemrograman serta membantu dalam
menghindari kesalahan program, melalui pendekatan terstruktur. Pendekatan ini
dikenal sebagai model pemrograman fork-join.
OpenMP
bekerja berdasarkan model shared memory, maka secara default data dibagi
diantara thread-thread dan dapat terlihat dari setiap thread. Terkadang
program akan membutuhkan variabel dengan nilai thread spesifik. Jika
setiap thread memiliki variabel duplikat akan sangat berpotensi memiliki
nilai yang berbeda-beda pada setiap variabel duplikat tersebut.
Sinkronisasi
(pengkoordinasian) aksi dari thread adalah sesuatu yang sangat penting
untuk menjamin data yang harus dibagi dan untuk mencegah terjadinya data race
condition. Secara default OpenMP telah menyediakan mekanisme untuk menunggu
thread dalam suatu tim thread sehingga semua thread menyelesaikan
tugasnya dalam region, kemudian dapat melanjutkan ke proses selanjutnya.
Mekanisme ini dikenal sebagai barrier.
CUDA merupakan teknologi anyar dari produsen kartu grafis Nvidia, dan mungkin belum banyak digunakan orang secara umum. Kartu grafis lebih banyak digunakan untuk menjalankan aplikasi game, namun dengan teknologi CUDA ini kartu grafis dapat digunakan lebih optimal ketika menjalankan sebuah software aplikasi. Fungsi kartu grafis Nvidia digunakan untuk membantu Processor (CPU) dalam melakukan kalkulasi dalam proses data.
CUDA merupakan singkatan dari Compute Unified Device Architecture, didefinisikan sebagai sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dan lain sebagainya. VGA – VGA dari Nvidia yang sudah menggunakan teknologi CUDA antara lain : Nvidia GeForce GTX 280, GTX 260,9800 GX2, 9800 GTX+,9800 GTX,9800 GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400 mGPU,9300 mGPU,8800 Ultra,8800 GTX,8800 GTS,8800 GT,8800 GS,8600 GTS,8600 GT,8500 GT,8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri sejenis untuk kelas mobile ( VGA notebook ).
ingkatnya, CUDA dapat memberikan proses dengan pendekatan bahasa C, sehingga programmer atau pengembang software dapat lebih cepat menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi seperti teknologi ilmu pengetahuan yang spesifik. CUDA sekarang bisa dimanfaatkan untuk aplikasi multimedia. Misalnya meng-edit film dan melakukan filter gambar. Sebagai contoh dengan aplikasi multimedia, sudah mengunakan teknologi CUDA. Software TMPGenc 4.0 misalnya membuat aplikasi editing dengan mengambil sebagian proces dari GPU dan CPU. VGA yang dapat memanfaatkan CUDA hanya versi 8000 atau lebih tinggi.


0 comments:
Post a Comment