Komputasi paralel adalah satu teknik untuk 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) 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) dan lain sebagainya.
Pada dasarnya komputasi paralel digunakan untuk menyelesaikan suatu permasalahan besar, dengan memecah-mecah permasalahan tersebut menjadi bagian- bagian dari permasalahan yang lebih kecil (sub-masalah). Kemudian sub-masalah tersebut di selesaikan oleh kumpulan-kumpulan dari prosesor (multi-processors) yang nantinya terlibat dalam pengeksekusian masalah tersebut. Dimana setiap bagian dari sub-masalah di selesaikan oleh satu prosesor (single-processor).
Sehingga dapat disimpulkan apabila sebuah masalah yang diselesaikan oleh satu prosesor membutuhkan berapa banyak sub-masalah dan berapa lama waktu yang dihutuhkan oleh prosesor tersebut. Kemudian dilakukan perbandingan dengan masalah yang sama, jika masalah tersebut diselesaikan oleh banyak prosesor.
Tujuan utama komputasi paralel yakni untuk mempersingkat waktu eksekusi program yang menggunakan komputasi serial. Beberapa alasan lain yang menjadikan suatu program mcnggunakan komputasi paralel antara lain:
a. Untuk komputasi yang sangat kompleks, terkadang sumber daya (resource) yang ada sekarang belum cukup mampu untuk mendukung penyelesaian terhadap permasalahan secara cepat.
b. Adanya keterbatasan memori pada mesin untuk komputasi serial.
c. Adanya sumber daya non-lokal yang dapat digunakan melalui jaringan lokal atau internet.
d. Penghematan biaya pengadaan perangkat keras, dengan menggunakan beberapa mesin yang murah sebagai alternatif penggunaan satu mesin yang bagus tetapi mahal, walaupun menggunakan P-Processor (Multicore).
Penggunaan komputasi paralel sebagai solusi untuk mempersingkat waktu yang dibutuhkan, namun untuk eksekusi program mempunyai beberapa hambatan.
Hambatan-hambatan tersebut antara lain adalah:
1. Hukum Amdahl, yaitu percepatan waktu eksekusi program dengan menggunakan komputasi paralel tidak akan pernah mencapai kesempurnaan karena selalu ada bagian program yang harus dieksekusi secara serial.
2. Hambatan yang diakibatkan karena beban jaringan, dalam eksekusi program secara paralel, prosesor yang berada di mesin yang berbeda memerlukan pertukaran data melalui jaringan. Untuk program yang dibagi menjadi task-task membutuhkan sinkronisasi, network latency (keterlambatan jaringan) menjadi masalah utama. Permasalahan ini muncul karena ketika suatu task membutuhkan data dari task yang lain, bagian ini dikirimkan melalui jaringan dimana kecepatan transfer data kurang dari kecepatan prosesor yang mengeksekusi instruksi task tersebut. Hal ini menyebabkan task tersebut harus menunggu sampai data tiba terlebih dahulu, sebelum mengeksekusi instruksi selanjutnya.
3. Hambatan yang terkait dengan beban waktu untuk inisialisasi task, terminasi task, dan sinkronisasi.
Pada komputasi paralel membutuhkan:
a. Algoritma
b. Bahasa pemrograman
c. Compiler
Pemrograman Paralel merupakan teknik pemrograman komputer yang memungkinkan eksekusi perintah atau operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU.
Bahasa Pemrograman yang digunakan pada Pemrograman Paralel
A. MPI (Message Passing Interface)
Sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Suatu standar protokol yang digunakan untuk pemrograman paralel dan terdistribusi.
Kegunaan MPI:
1. Menyediakan fungsi-fungsi untuk menukar pesan.
2. Menulis kode paralel secara portable.
3. Mendapatkan performa yang tinggi dalam pemrograman paralel.
4. Menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang
tidak begitu cocok dengan model data paralel.
B. PVM (Private Virtual Machine)
Perangkat lunak yang memungkinkan sekumpulan komputer yang heterogen terlihat seperti satu sistem komputer paralel dan dapat digunakan sebagai sebuah sumber daya komputasi yang koheren. Istilah virtual machine mengacu pada konfigurasi komputer dengan memori tersebar, sedangkan istilah host ditujukan untuk komputer yang merupakan anggota dari virtual machine. Host dapat terdiri dari komputer yang berbeda-beda dan terpisah lokasinya secara fisik.
Komponen PVM:
a. PVM daemon
Daemon dari PVM, atau disebut PVM daemon (pvmd). Daemon merupakan semacam program yang berjalan di “belakang” dan biasanya menangani program dari klien. Komponen ini berada pada setiap komputer yang terhubung dalam virtual machine. PVM Berguna untuk membentuk konfigurasi host dalam PVM dan mengkoordinir komunikasi antar host.
b. PVM libraries
Komponen ini berisi rutin-rutin antarmuka pemakai PVM untuk melakukan pengiriman pesan, pembuatan proses, koordinasi proses dan modifikasi virtual machine.Pustaka PVM ini memungkinkan adanya interaksi antar task, yang bisa dilakukan dengan menggunakan fungsi packing dan unpacking pesan.
Arsitektur Komputasi Paralel
A. Berdasarkan simetrinya, multiprocessing dapat dibagi ke dalam:
1. Asymmetric Multiprocessing (ASMP).
2. Symmetric Multiprocessing (SMP).
3. Non-uniform memory access (NUMA) multiprocessing.
4. Clustering
B. Berdasarkan jumlah instruksi dan datanya, dapat dibagi ke dalam (lihat Taksonomi Flynn)
Taksonomi Flynn dan model pemrosesan paralel
Keempat kelompok komputer tersebut adalah:
1. Komputer SISD (Single Instruction stream-Single Data stream)
Komputer ini memiliki hanya satu prosesor dan satu instruksi yang dieksekusi secara serial. Komputer ini adalah tipe komputer konvensional.
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, namun melakukan operasi terhadap himpunan data yang berbeda yang berasal dari aliran data yang berbeda pula.
3. Komputer MISD (Multiple Instruction stream-Single Data stream)
Komputer jenis ini memiliki n 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. Keluaran dari satu pemroses menjadi masukan bagi pemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk prototipe untuk penelitian.
4. Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran dari dan ke memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD bersifat tightly coupled jika tingkat interaksi antara pemroses tinggi dan disebut loosely coupled jika tingkat interaksi antara pemroses rendah.
Kesimpulan:
Pemrosesan paralel digunakan untuk memudahkan user dalam berinteraksi dari satu sistem ke sistem yang lainnya dengan tujuan untuk membagi beban yang terdapat pada suatu sistem sehingga satu masalah dapat dipecahkan secara bersamaan. Dan keberhasilan pemrosesan paralel itu dapat dilihat dari kecepatan (speed up) yang diperoleh dari teknik paralel yang digunakan.
Referensi:
https://id.wikipedia.org/wiki/Komputasi_paralel
https://www.scribd.com/doc/32982265/Parallel-Processing
https://www.scribd.com/doc/40938360/Makalah-Arkom-Paralel-Processing
https://www.scribd.com/doc/102097439/Pengertian-Pemrosesan-Paralel
http://ajuarna.staff.gunadarma.ac.id/Downloads/files/9254/ArtikelEpilog.pdf