Kamis, 11 Juni 2015

Komputasi Paralel

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan.

Konsep komputasi Parallel Processing



Gambar diatas merupakan contoh dari sebuah komputasi paralel, dimana pada gambar diatas terdapat sebuah masalah, dari masalah tersebut dibagi lagi menjadi beberapa bagian agar sebuah masalah dapat dengan cepat diatasi. Tujuan Komputasi Paralel. 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. Formula komputasi paralel yang diajukan pada hukum Amdahl.

Arsitektur Komputer Parallel
Sesuai taksonomi Flynn, seorang Designer Processor, Organisasi Prosesor dibagi menjadi 4 :
A.    SISD (Single Instruction Single Data Stream)
Arus Instruksi Tunggal dan Data Tunggal
B.    SIMD (Single Instruction Multiple Data Stream)
Arus Instruksi Tunggal dan Multiple Data
C.    MISD (Multiple Instruction Single Data Stream)
Arus Multiple Instruksi dan Data Tunggal
D.    MIMD (Multiple Instruction Multiple Data Stream)
Arus Multiple Instruksi dan Multiple Data

Organisasi Prosesor SISD
Prosesor tunggal
Aliran instruksi tunggal
Data disimpan dalam memori tunggal
Uni-processor
Keterangan:
CU      : Control Unit
IS        : Instruction Stream (Arus Instruksi)
PU      : Processing Unit (Unit Pengolah yang biasa disebut ALU)
DS      : Data Stream (Arus Data)
MU     : Memory Unit (Unit Memori)

2.   Single Instruction, Multiple Data Stream – SIMD
- Single machine instruction
- Mengontrol eksekusi secara simultan
- sejumlah elemen-elemen pengolahan
- Berdasarkan Lock-step
- Setiap pengolahan elemen memiliki hubungan dengan memori data
- Setiap instruksi dieksekusi pada kumpulan data yang berbeda oleh prosesor yang berbeda
- Prosesor Vector and array

3.   Multiple Instruction, Single Data Stream – MISD
- Rangkaian dari data
- Dikirimkan ke kumpulan prosesor
- Setiap prosesor mengeksekusi urutan instruksi yang berbeda
- Belum pernah diimplementasikan (komesial)

4.   Multiple Instruction, Multiple Data Stream- MIMD
- Kumpulan/sejumlah prosesor
- Mengeksekusi secara simultan urutan instruksi yang berbeda
- Kumpulan data yang berbeda
- SMP, Cluster and sistem NUMA

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.

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.

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.

Pengantar Message Passing, Open MP
Message passing merupakan sebuah teknik cara mengatur suatu alur komunikasi messaging terhadap proses pada sistem. Message passing dalam ilmu komputer adalah bentuk komunikasi digunakan dalam komputasi parallel, pemrograman berorientasi objek dan komunikasi interproses, 

Paradigma Message Passing:
1.     Banyak contoh dari paradima 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 prsan satu sama lain.
OpenMP merupakan API yang mendukung multi-platform berbagai memori multiprosesing pemrograman C, C++ dan Fortran, kebanyakan arsitektur prosesor dan sistem operasi seperti Linux, Mac, Solaris, AIX, HP-UX. OpenMP dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur Review Board (ARB/OpenMP).

Pengantar Pemrograman CUDA, GPU

CUDA erat kaitannya dengan GPU atau Graphics Processing Unit. GPU adalah sebuah processor khusus yang dirancang untuk mempercepat, memanipulasi dan mengubah memori yang berfungsi mempercepat pemuatan gambar.
CUDA merupakan suatu cara yang dibuat oleh NVIDIA agar GPU yang ada tidak hanya untuk mengolah  grafis melainkan juga dapat untuk tujuan umum. CUDA sendiri mendukung pemrogrman bahasa C yang dimana dapat terhubung langsung dengan GPU.  untuk melihatnya dapat membuka www.nvidia.com/cuda .

sumber :
http://bramantyadwicahyadi.blogspot.com/2015/05/komputasi-paralel.html