Pengertian
Teknologi
komputasi paralel sudah berkembang lebih dari dua dekade, penggunaannya semakin
beragam mulai dari kebutuhan perhitungan di laboratorium fisika nuklir,
simulasi pesawat luar angkasa, hingga perkiraan cuaca. Komputasi paralel didefinisikan sebagai penggunaan sekumpulan
sumberdaya komputer secara simultan untuk menyelesaikan permasalahan komputasi.
Secara prinsip komputer paralel membagi permasalahan sehingga menjadi lebih
kecil untuk dikerjakan oleh setiap prosesor (CPU) dalam waktu yang
bersamaan/simultan (concurrent). Prinsip ini disebut Paralelisme.
Paralelisme dalam komputasi paralel
merupakan hal yang diciptakan dan dimanfaatkan. Sebernarnya prinsip paralelisme
juga sudah diterapkan dalam komputer serial misal dengan pipelining dan superscalar-nya
namun demikian tidak memberikan solusi terbaik dalam hal meningkatkan
performansi dikarenakan terbatasnya kemampuan untuk menambah kecepatan prosesor
dan fenomena memory bottleneck.
Paralelisme lainnya yang juga berkembang
dalam komputasi paralel adalah paralelisme data dan paralelisme fungsi (task). Perkembangan
teknologi prosesor singlecore
superscalar, chip multiprocessor, prosesor multicore, hingga prosesor cell memberikan kontribusi terhadap
peningkatan performansi komputer paralel. Supercomputer
seperti Roadrunner misalnya
menggunakan teknologi multiprosesor, prosesor cell, atau gabungan dari
keduanya (hybrid system). Jumlah prosesor yang dipakai HPC juga semakin tidak
terbatas sehingga arsitekturnya disebut Massively Parallel Processing (MPP).
Namun demikian penggunaan cluster PC
menjadi tren dalam komputasi paralel karena faktor biaya dan skalabilitas.
Arsitektur Komputer Paralel
Berdasarkan
jumlah dan prinsip kerja prosesor pada komputer paralel, A.J.Van der Steen dan
J. Donggara menyebutkan terdapat empat arsitektur utama komputer paralel
menurut Flynn (1972) yaitu :
- SISD (Single Instruction – Single Data). Komputer ini memiliki hanya satu prosesor dan satu instruksi yang dieksekusi secara serial. Komputer ini adalah tipe komputer konvensional. Menurut mereka tipe komputer ini tidak ada dalam praktik komputer paralel karena bahkan mainframe pun tidak lagi menggunakan satu prosesor.
- SIMD ( Single Instruction – Multiple Data). Komputer ini memiliki lebih dari atu prosesor, tetapi hanya mengeksekusi satu intruksi satu instruksi secara paralel pada data yang berbeda pada level lock-step. Komputer vektor adalah salah satu komputer paralel yang menggunakan arsitektur ini.
- MISD (Multiple Instructions – Single Data). Teorinya komputer ini memiliki satu prosesor dan mengeksekusi beberapa instruksi secara paralel tetapi praktiknya tidak ada komputer yang dibangun dengan arsitektur ini karena sistemnya tidak mudah dipahami.
- MIMD (Multiple Instructions – Multiple Data). Komputer ini memiliki lebih dari satu prosesor dan mengeksekusi lebih dari satu instruksi secara paralel. Tipe komputer ini yang paling banyak digunakan untuk membangun komputer paralel, bahkan banyak supercomputer yang menerapkan arsitektur ini.
Sistem komputer paralel dibedakan dari
cara kerja memorinya menjadi shared
memory dan distributed memory. Shared memory berarti memori tunggal
diakses oleh satu atau lebih prosesor untuk menjalankan instruksi sedangkan distributed memory berarti setiap
prosesor memiliki memori sendiri untuk menjalankan instruksi.
Algoritma Paralel
Komputasi paralel digunakan untuk
menyelesaikan permasalahan komputasi yang besar atau komplek. Program paralel
dibuat khusus atau dimodifikasi dari program serial. Algoritma paralel
digunakan untuk menggantikan algoritma serial menyesuaikan arsitektur komputer
yang digunakan. Berdasarkan klasifikasi arsitektur komputer paralel di atas
komputer paralel shared memory dan distributed memory tentu saja
menggunakan algoritma paralel yang berbeda.
Algoritma paralel menjelaskan
langkah-langkah yang ditempuh oleh komputer paralel dalam menyelesaikan
permasalahan. Hal-hal yang ada dalam algoritma paralel meliputi :
- Identifikasi terhadap beban permasalahan yang akan dikerjakan secara paralel.
- Pemetaan porsi pekerjaan yang dibebankan kepada tiap-tiap proses.
- Distribusi data input, output dan perantara yang terkait dengan program.
- Pengaturan data yang diakses bersamaan oleh beberapa prosesor.
- Menyelaraskan fungsi prosesor pada setiap langkah pekerjaan.