1.
PENDAHULUAN
Dalam ilmu
komputer, sebuah algoritma paralel atau algoritma bersamaan, sebagai lawan
berurutan (atau serial) algoritma tradisional, merupakan algoritma yang dapat
dieksekusi sepotong pada waktu pada banyak perangkat pengolahan yang berbeda,
dan kemudian digabungkan bersama-sama lagi pada akhir untuk mendapatkan hasil
yang benar.
Sebagian
besar algoritma yang tersedia untuk menghitung pi (π), di sisi lain, tidak
dapat dengan mudah dibagi menjadi bagian-bagian paralel. Mereka membutuhkan
hasil dari langkah sebelumnya untuk secara efektif melanjutkan dengan langkah
berikutnya. Masalah seperti ini disebut masalah inheren serial. Iteratif metode
numerik, seperti metode Newton atau masalah tiga-badan, juga algoritma yang
secara inheren serial. Beberapa masalah yang sangat sulit untuk memparalelkan,
meskipun mereka rekursif. Salah satu contohnya adalah pencarian
mendalam-pertama grafik.
Algoritma
paralel berharga karena perbaikan substansial dalam sistem multiprocessing dan
munculnya prosesor multi-core. Secara umum, lebih mudah untuk membangun
komputer dengan prosesor cepat tunggal dari satu dengan banyak prosesor lambat
dengan throughput yang sama. Tapi kecepatan prosesor meningkat terutama dengan
mengecilkan sirkuit, dan prosesor modern yang mendorong ukuran fisik dan batas
panas. Hambatan kembar telah membalik persamaan, membuat multiprocessing
praktis bahkan untuk sistem kecil.
2.
TEORI
Dalam beberapa kasus, algoritma
sekuensial dengan mudah dapat diadaptasi ke dalam lingkungan paralel. Namun
dalam kebanyakan kasus, problem komputasi harus dianalisa ulang dan
menghasilkan algoritma paralel yang baru. Terdapat beberapa penelitian mengenai
perancangan algoritma paralel untuk problem-problem praktis seperti pengurutan,
pemrosesan geraf, solusi untuk persamaan lanjar, solusi untuk persamaan
diferensial, dan untuk simulasi. Teknik pembangunan algoritma paralel dapat
dibedakan sebagai berikut :
Paralisme Data
Paralisme Data
Teknik paralelisme data merupakan
teknik yang paling banyak digunakan dalam program paralel. Teknik ini lahir
dari penelitian bahwa aplikasi utama komputasi paralel adalah dalam bidang sain
dan engineer, yang umumnya melibatkan array multi-dimensi yang sangat besar.
Dalam program sekuensial biasa, array ini dimanipulasi dengan mempergunakan
perulangan bersarang untuk mendapatkan hasil. Kebanyakan program paralel
dibentuk dengan mengatur ulang algoritma sekuensial agar perulangan bersarang
tersebut dapat dilaksanakan secara paralel. Paralelisme data menunjukkan bahwa
basis data dipergunakan sebagai dasar untuk membentuk aktifitas paralel, dimana
bagian yang berbeda dari basis data akan diproses secara paralel. Dengan kata
lain paralelisme dalam program ini dibentuk dari penerapan operasi-operasi yang
sama ke bagian array data yang berbeda. Prinsip paralelisme data ini berlaku
untuk pemrograman multiprosesor dan multikomputer.
Partisi Data
Merupakan teknik khusus dari
Paralelisme Data, dimana data disebar ke dalam memori-memori lokal
multikomputer. Sebuah proses paralel kemudian ditugaskan untuk mengoperasikan
masingmasing bagian data. Proses tersebut harus terdapat dalam lokal memori
yang sama dengan bagian data, karena itu proses dapat mengakses data tersebut
secara lokal. Untuk memperoleh kinerja yang baik, setiap proses harus
memperhatikan variabel-variabel dan data-data lokalnya masing-masing. Jika
suatu proses membutuhkan akses data yang terdapat dalam remote memori, maka hal
ini dapat dilakukan melalui jaringan message passing yang menghubungkan
prosesor-prosesor. Karena komunikasi antar prosesor ini menyebabkan terjadinya
waktu tunda, maka messsage passing ini sebaiknya dilakukan dalam frekuensi yang
relatif kecil. Dapat disimpulkan bahwa tujuan dari partisi data adalah untuk
mereduksi waktu tunda yang diakibatkan komunikasi messsage passing antar
prosesor. Algoritma paralel mengatur agar setiap proses dapat melakukan
komputasi dengan local data masing-masing.
Algoritma
Relaksasi
Pada algoritma ini, setiap proses
tidak membutuhkan sinkronisasi dan komunikasi antar proses. Meskipun prosesor
mengakses data yang sama, setiap prosesor dapat melakukan komputasi sendiri
tanpa tergantung pada data antara yang dihasilkan oleh proses lain. Contoh
algoritma relaksasi adalah algoritma perkalian matrik, pengurutan dengan
mengunakan metode ranksort dan lain sebagainya.
Paralelisme
Sinkron
Aplikasi praktis dari komputasi
paralel adalah untuk problem yang melibatkan array multi-dimensi yang sangat
besar. Problem tersebut mempunyai peluang yang baik untuk paralelisme data
karena elemen yang berbeda dalam array dapat diproses secara paralel. Teknik
komputasi numerik pada array ini biasanya iteratif, dan setiap iterasi akan
mempengaruhi iterasi berikutnya untuk menuju solusi akhir. Misalnya saja untuk
solusi persamaan numerik pada sistem yang besar. Umumnya, setiap iterasi
mempergunakan data yang dihasilkan oleh iterasi sebelumnya dan program akhirnya
menuju suatu solusi dengan akurasi yang dibutuhkan. Algoritma iterasi ini
mempunyai peluang paralelisme pada setiap iterasinya. Beberapa proses parallel
dapat dibentuk untuk bekerja pada array bagian yang berbeda. Namun setelah
setiap iterasi, prosesproses harus disinkronkan, karena hasil yang diproduksi
oleh satu proses dipergunakan oleh prosesproses lain pada iterasi berikutnya.
Teknik pemrograman paralel seperti ini disebut paralelisme sinkron. Contohnya
adalah perhitungan numerik pada Metode Eliminasi Gauss. Pada paralelisme
sinkron ini, struktur umum programnya biasanya terdiri dari perulangan FORALL
yang akan membentuk sejumlah besar proses paralel untuk dioperasikan pada
bagian array data yang berbeda. Setiap proses diulang dan disinkronkan pada
akhir iterasi. Tujuan dari sinkronisasi ini adalah untuk meyakinkan bahwa
seluruh proses telah menyelesaikan iterasi yang sedang berlangsung, sebelum terdapat
suatu proses yang memulai iterasi berikutnya.
Komputasi Pipeline
Komputasi Pipeline
Pada komputasi pipeline, data
dialirkan melalui seluruh struktur proses, dimana masing-masing proses
membentuk tahap-tahap tertentu dari keseluruhan komputasi . Algoritma ini dapat
berjalan dengan baik pada multikomputer, karena adanya aliran data dan tidak
banyak memerlukan akses ke data bersama. Contoh komputasi pipeline adalah
teknik penyulihan mundur yang merupakan bagian dari metoda Eliminasi.
Dalam merancang suatu algoritma paralel kita harus mempertimbangkan pula hal-hal yang dapat mengurangi kinerja program paralel. Hal-hal tersebut adalah :
Dalam merancang suatu algoritma paralel kita harus mempertimbangkan pula hal-hal yang dapat mengurangi kinerja program paralel. Hal-hal tersebut adalah :
1. Memory Contention
Eksekusi
prosesor tertunda ketika prosesor menunggu hak ases ke sel memori yang sedang
dipergunakan oleh prosesor lain. Problem ini muncul pada arsitektur
multiprosesor dengan memori bersama.
2. Excessive
Seqential Code
Pada
beberapa algoritma paralel, akan terdapat kode sekuensial murni dimana tipe
tertentu dari operasi pusat dibentuk, seperti misalnya pada proses
inisialisasi. Dalam beberapa algoritma, kode sekuensial ini dapat mengurangi
keseluruhan speedup yang dapat dicapai. Process Creation Time Pembentukan
proses paralel akan membutuhkan waktu eksekusi. Jika proses yang dibentuk relative
berjalan dalam waktu yang relatif lebih singkat dibandingkan dengan waktu
pembentukan proses itu sendiri, maka overhead pembuatan akan lebih besar
dibandingkan dengan waktu eksekusi paralel algoritma. Communication Delay
Overhead ini muncul hanya pada multikomputer. Hal ini disebabkan karena
interaksi antar prosesor melalui jaringan komunikasi. Dalam beberapa kasus,
komunikasi antar dua prosesor mungkin melibatkan beberapa prosesor antara dalam
jaringan komunikasi. Jumlah waktu tunda komunikasi dapat menurunkan kinerja
beberapa algoritma paralel.
Synchronization
Delay
Ketika proses paralel disinkronkan,
berarti bahwa suatu proses akan harus menunggu proses lainnya. Dalam beberapa
program paralel, jumlah waktu tunda ini dapat menyebabkan bottleneck dan mengurangi
speedup keseluruhan. Load Imbalance Dalam beberapa program paralel, tugas
komputasi dibangun secara dinamis dan tidak dapat diperkirakan sebelumnya.
Karena itu harus selalu ditugaskan ke prosesor-prosesor sejalan dengan
pembangunan tugas tersebut. Hal ini dapat menyebabkan suatu prosesor tidak
bekerja (idle), sementara prosesor lainnya tidak dapat mengerjakan task yang
ditugaskannya.
Komputasi
Paralel dengan Parallel Virtual Machine (PVM)
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.
Penggunaan
komputasi parallel prosessing merupakan pilihan yang cukup handal untuk saat
ini untuk pengolahan data yang besar dan banyak, hal ini apabila dibandingkan
dengan membeli suatu super komputer yang harganya sangat mahal maka penggunaan
komputasi parallel prosessing merupakan pilihan yang sangat tepat untuk
pengolahan data tersebut.
Aspek
keamanan merupakan suatu aspek penting dalam sistem parallel prosessing
komputasi ini, karena di dalam sistem akan banyak berkaitan dengan akses data,
hak pengguna, keamanan data, keamanan jaringan terhadap peyerangan sesorang
atau bahkan virus sehingga akan menghambat kinerja dari system komputasi ini.
Komputasi
parallel adalah
melakukan perhitungan
komputasi dengan menggunakan 2 atau lebih CPU/Processor
dalam suatu komputer yang sama atau komputer yang berbeda dimana dalam hal ini
setiap instruksi dibagi kedalam beberapa instruksi kemudian dikirim ke
processor yang terlibat komputasi dan dilakukan secara bersamaan. Untuk proses
pembagian proses komputasi tersebut dilakukan oleh suatu software yang betugas
untuk mengatur komputasi dalam hal makalah ini akan digunakan Parallel Virtual
Machine (PVM).
Pada sistem
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 komputer paralel 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.
Komunikasi
data pada sistem paralel memori terdistribusi, memerlukan alat bantu
komunikasi. Contoh alat bantu yang sering digunakan oleh sistem seperti PC
Jaringan pada saat ini adalah standar PVM (Parallel Virtual Machine) yang
bekerja diatas TCP/IP communication layer. Standar ini memerlukan fungsi remote
access agar dapat menjalankan program pada masing-masing unit prosesor.
Salah satu
protocol yang dipergunakan pada komputasi parallel adalah Network File System
(NFS), NFS adalah protokol yang dapat membagi sumber daya melalui jaringan. NFS
dibuat untuk dapat independent dari jenis mesin, jenis sistem operasi, dan
jenis protokol transport yang digunakan. Hal ini dilakukan dengan menggunakan
RPC. NFS memperbolehkan user yang telah diijinkan untuk mengakses file-file
yang berada di remote host seperti mengakses file
yang berada di lokal. Protokol yang
digunakan protokol mount menentukan host remote dan jenis file sistem
yang akan diakses dan menempatkan di suatu direktori, protokol NFS melakukan
I/O pada remote file system. Protokol mount dan protokol
NFS bekerja dengan menggunakan RPC dan
mengiri dengan protokol TCP dan UDP. Kegunaan dari NFS pada komputasi
parallel adalah untuk melakukan sharing data sehingga setiap node slave dapat
mengakses program yang sama pada node master.
3.
ANALISA
Parameter-parameter
yang akan diukur dalam komputasi paralel ini adalah speedup dan c/c
ratio. Dengan menghitung speedup bisa diketahui efisiensi penggunaan prosesor
dan dengan menghitung c/c ratio dapat diketahui granularitas. Speedup
adalah perbandingan kecepatan eksekusi suatu program yang dijalankan pada
komputer paralel terhadap kecepatan eksekusi program tersebut pada komputer
sekuensial. Efisiensi Penggunaan Prosesor, untuk memperoieh efisiensi yang
tinggi, usahakan agar semua prosesor dalam sistem digunakan secara optimal,
tidak ada prosesor yang idle selama prosesor lain bekerja.
Computation
to communication ratio adalah perbandingan waktu komputasi terhadap waktu
komunikasi dalam komputer MIMD berbasis message passing. c/c ratio adalah
salah satu cara memprediksi kinerja dari komputer paralel.
c/c ratio =
t_komp_par/ t_komu
Granularitas
adalah jumlah operasi yang dilaksanakan sebelum sinkronisasi berlangsung.
Berdasarkan Granularitas, algoritma paralel dikategorikan dalam tiga kelompok
yaitu fine grain (lebih banyak komunikasi dari pada komputasi), medium-grain
(komputasi dan komunikasi seimbang) dan coarse-grain (lebih banyak
komputasi dari pada komunikasi), Ditunjukkan hubungan antara c/c ratio dengan
granularitas. Jika 0<c/cratio<l makafine grain, jika c/cratio=l
maka medium grain, sedang bila c/cratio>l maka coarse grain.
Referensi: