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
1 1. 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).
2 2. 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.
3 3. 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.
4 4. 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 :
1 1. 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.
2 2. 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