Jumat, 30 Mei 2014

PARALLEL COMPUTING

Apa itu Parallel Computing?
Parallel Computing merupakan cara untuk mengolah informasi yang menekankan pada manipulasi data-data elemen secara simultan. Tujuannya adalah untuk mempercepat komputasi dari sistem komputer dan menambah jumlah keluaran yang dapat dihasilkan dalam jangka waktu tertentu.

Kenapa harus dengan proses paralel?

  1. Karena komputasi secara paralel memiliki kecepatan untuk memproses suatu tugas, ini berguna untuk pemrosesan dalam bidang sains, analisis, geografis dan lain-lain.
  2. Penggunaan arsitektur sekuensial dirasa sangat lambat dalam hal pemrosesan, sehingga munculah arsitektur paralel.
  3. Pengembangan pada teknologi jaringannya bisa dipakai untuk komputasi heterogen

Parallelism Concept

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. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. 

Distributed Processing
Mengerjakan semua proses pengolahan data secara bersama antara komputer pusat dengan beberapa komputer yang lebih kecil dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut memiliki prosesor mandiri sehingga mampu mengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total. Jika salah satu prosesor mengalami kegagalan atau masalah yang lain akan mengambil alih tugasnya.

Dalam komputasi paralel terdapat hardware arsitektur, yaitu ;

1. Single Instruction Single Data (SISD)
- Satu CPU mengeksekusi instruksi satu persatu
- Satu CPU memanggil atau menyimpan data satu persatu

2. Single Instruction Multiple Data (SIMD)
- Satu Control Unit mengeksekusi aliran tunggal instruksi
- Terdapat lebih dari satu instruksi

3. Multiple Instruction Single Data (MISD)
- Terdapat beberapa processing unit yang mengeksekusi instruksi berbeda dengan data yang sama
- Data mengalir ke processing unit serial

4. Multiple Instruction Multiple Data (MIMD)
- Multiprocessor
- Terdapat lebih dari satu instruksi yang dapat dieksekusi terhadap data masing-masing

Pengantar Thread Programming
Dalam ilmu komputer, diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan (dieksekusi) secara sejajar dengan ulir lainnya, dengan menggunakan cara time slice (ketika satu CPU melakukan perpindahan antara satu ulir ke ulir lainnya) atau multiprocess (ketika ulir-ulir tersebut dilaksanakan oleh CPU yang berbeda dalam satu sistem).
Thread Programming pada Java : 
Thread merupakan kemampuan yang disediakan oleh Java untuk membuat aplikasi yang tangguh, karena thread dalam program memiliki fungsi dan tugas tersendiri. Dengan adanya thread, dapat membuat program yang lebih efisien dalam hal kecepatan maupun penggunaan sumber daya, karena kita dapat membagi proses dalam aplikasi kita pada waktu yang sama. Thread umumnya digunakan untuk pemrograman multitasking, networking, yang melibatkan pengaksesan ke sumber daya secara konkuren.

Pengantar Massage Passing, OpenMP
Message Passing di ilmu komputer adalah suatu bentuk komunikasi yang digunakan dalam komputasi paralel, pemrograman berorientasi obyek , dan komunikasi antar . 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. Dengan menunggu pesan, proses juga dapat melakukan sinkronisasi. OpenMP yaitu API yang mendukung multiplatform untuk pemrograman multiprocessing shared memory pada C, C++, dan Fortran, di semua arsitektur prosesor dan OS termasuk platform Solaris, AIX, HP-UX, GNU/Linux. Max OS X, dan Windows.

Pengantar Pemrograman CUDA GPU
CUDA (Computer-Unified-Device-Architecture) adalah arsitektur komputasi paralel yang dikembangkan oleh NVIDIA. CUDA adalah mesin komputasi dalam pemrosesan grafis NVIDIA unit (GPU) yang dapat diakses oleh pengembang perangkat lunak melalui varian dari bahasa pemrograman standar industri. CUDA merupakan 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).GPU (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).
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.

Sumber :