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 (di industri keuangan, bioinformatika, dll) 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. 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. Tidak berarti dengan mesin paralel semua
program yang dijalankan diatasnya otomatis akan diolah secara parallel.
Di dalam komputasi parallel ada yang dinamakan dengan pemrograman parallel.
Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi
perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu
(prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer
yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang
terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem
terdistribusi (distributed computing).
Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi.
Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin
banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang adalah, bila anda dapat
merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda
butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan
(serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan
berdua.
Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan
(speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda
memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua
anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak
2 kali.
Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa
program sekaligus. Parallel processing disebut juga parallel computing. Pada system komputasi
parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik yang
berbeda untuk mengakses data di unit memori, yaitu shared memory address dan message
passing. Berdasarkan cara mengorganisasikan memori ini computer parallel dibedakan menjadi
shared memory parallel machine dan distributed memory parallel machine.
Prosesor dan memori ini didalam mesin paralel dapat dihubungkan (interkoneksi) secara
statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory system
(sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk
menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk
menghubungkan antar prosesor dan memori.
Yang perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian
multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara
bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan
bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses
penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas
secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi
paralel menggunakan beberapa processor atau komputer. Selain itu komputasi paralel tidak
menggunakan arsitektur Von Neumann.
Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal
(menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka
kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model
komputasi yang digunakan, yaitu:
1. SISD (Single Instruction, Single Data) adalah satu-satunya yang menggunakan arsitektur Von
Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu
model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model
lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh
komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan
PDP 1.
2. SIMD(Single Instruction, Multiple Data) menggunakan banyak processor dengan instruksi yang
sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari
angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor.
Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang
diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga
urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk
processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD
adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell
Processor (GPU).
3. MISD(Multiple Instruction, Single Data) menggunakan banyak processor dengan setiap processor
menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan
kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh
model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama,
kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun
algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini
belum ada komputer yang menggunakan model MISD.
4. MIMD( Multiple Instruction, Multiple Data) menggunakan banyak processor dengan setiap
processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak
komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD.
Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq
AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
Berikut ini adalah gambar perbedaa antara komputasi tunggal dengan parallel komputasi :
a) komputasi tunggal/serial
b) komputasi parallel
Distributed Processing
adalah sekumpulan peralatan
Distributed Processing atau Distributed Computing System
pemrosesan yang saling terhubung melalui jaringan komputer dan saling
bekerjasama untuk mengerjakan tugas-tugas tertentu. Yang dimaksud
dengan peralatan pemrosesan dataadalah peralatan komputasi yang dapat
mengeksekusi sendiri sebuah program.
Sekumpulan peralatan yang saling terhubung akan mendistribusikan berbagai
macam hal, dianataranya adalah:
Processing Logic / Pemrosesan secara logis
Fungsi. Beberapa fungsi sistem komputer dapat didelegasikan ke beberapa hardware atau
software
Data
Kontrol
Kriteria Distributed Processing
Pemrosesan terdistribusi (Distributed Processing) dapat dikelompokkan
berdasarkan beberapa kriteria, yaitu:
Degree of Computing / tingkat hubungan : Tinggi atau rendah ? Jumlah data yang saling
digunakan dibandingkan dengan jumlah pemrosesan lokal
Struktur antar hubungan : kuat atau lemah ? Jika komponen di Share dikatakan kuat ?
Kesalingtergantungan komponen-komponen : Kuat atau lemah dalam mengekseskusi
proses.
Keselarasan antar komponen : selaras atau tidak selaras ?
Dalam taksonomi arsitektur paralel ada dua keluarga arsitektur paralel yang
banyak diterapkan adalah
Single Instruction Single Data (SISD)
Thread Programming
Threading / adalah sebuah alur kontrol dari sebuah proses.
Thread
Konsep threading adalah menjalankan 2 proses ( proses yang sama atau
proses yang berbeda ) dalam satu waktu.
Contoh:
Sebuah web browser mempunyai thread untuk menampilkan gambar atau
tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari
network.
Threading dibagi menjadi 2, yaitu :
Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multi processors 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
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).