Rabu, 12 Juni 2013

PARALLEL COMPUTATION

Parallelism Concept

Paralel Processing adalah kemampuan menjalankan tugas atau aplikasi lebih dari satu aplikasi dan dijalankan secara simultan atau bersamaan pada sebuah komputer. Secara umum, ini adalah sebuah teknik dimana sebuah masalah dibagi dalam beberapa masalah kecil untuk mempercepat proses penyelesaian masalah.

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dll.

Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Maka diperlukan perangkat lunak pendukung yang disebut middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.

Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU.

Tujuan dari komputasi paralel adalah meningkatkan kinerja komputer dalam menyelesaikan berbagai masalah. Dengan membagi sebuah masalah besar ke dalam beberapa masalah kecil, membuat kinerja menjadi cepat.


Distributed Processing

Didistribusikan pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Salah satu contoh dari hal ini adalah bagaimana beberapa komunitas memungkinkan pengguna untuk mendaftar dan mendedikasikan komputer mereka sendiri untuk memproses beberapa data set yang diberikan kepada mereka oleh server. Ketika ribuan pengguna mendaftar untuk ini, banyak data dapat diproses dalam jumlah yang sangat singkat.

Parallel distributed computing dapat dibentuk dari :
•             Ada : digunakan konsep pertemuan yang menggabungkan fitur RPC dan monitor.
•             PVM (Parallel Virtual Machine) untuk mendukung workstation clusters
•             MPI (Message-Passing Interface) programming GUI untuk parallel computers.


Architectural Parallel Computer

a.     Komputer SISD (Single Instruction stream-Single Data stream)
Pada komputer jenis ini semua instruksi dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping dalam eksekusi setiap bagian instruksi (pipelining).

b.    Komputer SIMD (Single Instruction stream-Multiple Data stream)
Pada komputer SIMD terdapat lebih dari satu elemen pemrosesan yang dikendalikan oleh sebuah unit pengendali yang sama. Seluruh elemen pemrosesan menerima dan menjalankan instruksi yang sama yang dikirimkan unit pengendali.

c.     Komputer MISD (Multiple Instruction stream-Single Data stream)
Komputer jenis ini memiliki unit pemroses yang masing-masing menerima dan mengoperasikan instruksi yang berbeda terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit pengendali yang berbeda.

d.     Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat interaksi di antara pemroses. Hal ini disebabkan seluruh aliran dari dan ke memori berasal dari space data yang sama bagi semua pemroses.



Pengantar Thread Programming

Dalam pemrograman komputer, sebuah thread adalah informasi terkait dengan penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan. Dari program point-of-view, sebuah thread adalah informasi yang dibutuhkan untuk melayani satu pengguna individu atau permintaan layanan tertentu. Jika beberapa pengguna menggunakan program atau permintaan bersamaan dari program lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing proses. Thread memungkinkan program untuk mengetahui user sedang masuk didalam program secara bergantian dan akan kembali masuk atas nama pengguna yang berbeda. Salah satu informasi thread disimpan dengan cara menyimpannya di daerah data khusus dan menempatkan alamat dari daerah data dalam register. Sistem operasi selalu menyimpan isi register saat program interrupted dan restores ketika memberikan program kontrol lagi.

Terdapat 2 buah teknik pada thread, yaitu :
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.


Pengantar Massage Passing, OpenMP

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 :
•    Banyak contoh dari paradigma sekuensial dipertimbangkan bersama-sama.
•    Programmer membayangkan beberapa prosesor, masing-masing dengan memori, dan menulis sebuah program untuk berjalan pada setiap prosesor.
•    Proses berkomunikasi dengan mengirimkan pesan satu sama lain.

OpenMP merupakan API yang mendukung multi-platform berbagi memori multiprocessing pemrograman C , C + + , dan Fortran , pada kebanyakan arsitektur prosesor dan system operasi , termasuk Solaris , AIX , HP-UX , GNU / Linux , Mac OS X , dan Windows platform. Ini terdiri dari satu set perintah kompiler, rutinitas library, dan variable lingkungan yang mempengaruhi perilaku run-time. OpenMP dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur Review Board (ARB atau OpenMP), bersama-sama didefinisikan oleh sekelompok perangkat keras komputer utama dan vendor perangkat lunak, termasuk AMD , IBM , Intel , Cray , HP , Fujitsu , Nvidia , NEC , Microsoft , Texas Instruments , Oracle Corporation , dan banyak lagi.



PengantarPemrograman CUDA GPU

CUDA (Compute Unified Device Architecture) merupakan suatu framework dari bahasa pemrograman yang mendukung bahas C , dimana mampu berkomunikasi langsung dengan GPU dan sangat mudah bekerjasama untuk segala multi-threading  parallel execution hampir diseluruh prosesor pada GPU. CUDA menggukan konsep nvcc sebagai ORM dalam object programmingnya. CUDA merupakan produk dari NVIDIA sebagai produsen graphic komputer ternama.

GPU (Graphics Processing Unit) merupakan prosesor yang didedikasikan untuk render cepat dalam pemrosesan polygon baik itu texturing dan shading. Terdiri atas banyak core namun masih menggunakan arsitektur yang sederhana, sehingga harganya relative murah dan di produksi secara masal untuk berbagai keperluan misalnya peneilitian/ilmuah.

Dalam permainan komputer industri, GPU yang digunakan tidak hanya untuk rendering grafis tetapi juga dalam perhitungan fisika permainan (efek fisik seperti puing-puing, asap, api, cairan). CUDA juga telah digunakan untuk mempercepat aplikasi non-grafis dalam biologi komputasi , kriptografi dan bidang lainnya oleh urutan besarnya atau lebih.



Referensi
http://lenzoo.blogspot.com/2012/04/pengenalan-komputasi-paralel.html
http://andri102.wordpress.com/game/soft-skill/konsep-komputasi-parallel-processing/
http://seto.citravision.com