Pengertian Algoritma
Paralel
Algoritma
paralel merupakan algoritma yang dapat dieksekusi dalam satu waktu pada banyak
perangkat processing yang berbeda, dan pada akhirnya akan digabungkan kembali
untuk mendapatkan hasil yang benar. Beberapa algoritma mudah untuk dibagi
ke dalam cara ini. Contohnya, memisahkan pekerjaan dengan mengecek semua nomor
dari 1sampai 100000 untuk melihat pernyataan mana yang akan dijadikan
landasan untuk menetapkan subset dari nomor setiap prosesor yang ada, dan
kemudian menaruh data dengan hasil yang akan dkembalikan bersama-sama.
Algoritma ini juga telah diterapkan untuk algoritma seperti rubik kubus dan
dekripsi hash.
Platform
Algoritma Paralel
·
OpenMP
OpenMP yaitu API yang
mendukung multiplatform untuk pemrograman multiprocessing shared memory pada C,
C++, dan Fortran, di semua arsitektur prosesor dan OS termasuk platform
Solaris, AIX, HP-UX, GNU/Linux. Max OS X, dan Windows. Ini terdiri dari
kumpulan compiler directive, library routines, dan environment variable yang
akan membuat run time pada semua keadaan.
·
MPI (Message Passing Interface)
MPI (Message Passing
Interface) yaitu suatu standard dan message passing interface partabel system
yang didesain oleh grup penelitian dari akademi dan industry untuk
mengembangkan fungsi dan macam-macam dari computer parallel. Standar ini
mendifinisikan sintaks dan semantic dari core library routine yang berguna
untuk memperbesar jangkauan kepada user menulis portable program message
passing pada Fortran 77 dan bahasa C, implementasi efisien dari MPI.
·
CUDA (Compute Unified Device
Architecture)
CUDA (Compute Unified
Device Architecture) merupakan platform parallel computing dan model
pemrograman yang telah dibuat oleh NVIDIA dan diimplementasikan oleh
GPU (Graphic Processing Unit). CUDA memberikan akses pengembangan untuk
kumpulan visual instruction dan ingatan dari parallel computasional elemen CUDA
GPU.
Teknik
Pembangunan Algoritma Paralel
·
Paralelisme 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.
·
Partisi Data
Merupakan teknik khusus
dari Paralelisme Data, dimana data disebar ke dalam memori-memori lokal
multikomputer. Sebuah proses paralel dimana ditugaskan untuk
mengoperasikan masing-masing 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.
·
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.
·
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.
·
Synchronization Delay
Ketika proses paralel
disinkronkan, berarti bahwa suatu proses 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.
Jenis-Jenis
Komputer Paralel
Berdasarkan tingkatan perangkat keras yang mendukung
paralelisme, secara umum komputer-komputer paralel dapat diklasifikasikan:
·
Multicore processing
Merupakan prosesor yang
memiliki beberapa unit pengeksekusi. Sebuah prosesor multicore dapat melakukan
beberapa instruksi per siklus dari beberapa aliran instruksi.
·
Symmetric multiprocessing
Merupakan sebuah sistem
komputer dengan beberapa prosesor yang identik, dapat menggunakan struktur
berbagi memori atau memori tersendiri yang saling terhubung melalui bus.
·
Distributed computing
Merupakan sebuah sistem
komputer dengan memori terdistribusi, dimana masing-masing elemen pemrosesan
dihubungkan oleh jaringan.
·
Cluster computing
Merupakan sekumpulan
komputer yang bekerja sama,dihubungkan oleh jaringan, sehingga dapat dipandang
sebagai sebuah kesatuan, cluster komputer ini dikoordinasi oleh sebuah komputer
induk yang bertugas untuk mendistribusikan pekerjaan kepada masing-masing
komputer lainnya.
·
Massive parallel processing
Merupakan sebuah
komputer tunggal dengan banyak prosesor yang terhubung dalam sebuah jaringan.
Di dalam MPP, tiap CPU mempunyai memory tersendiri, sistem operasi dan aplikasi
yang sama. Tiap subsistem berkomunikasi satu dengan yang lainnya melalui
interkoneksi berkecepatan tinggi.
·
Grid computing
Merupakan bentuk
pemrosesan paralel yang paling terdistribusi. Grid computing memanfaatkan
Internet sebagai saluran komunikasi antar komputer untuk menyelesaikan suatu
permasalahan.
·
Specialized parallel computer
Komputer paralel yang dikhususkan untuk
menyelesaikan tugas khusus.
Model
komputasi Paralel
1. Embarasingly
Parallel adalah pemrograman paralel yang digunakan pada masalah-masalah yang
bisa diparalelkan tanpa membutuhkan komunikasi satu sama lain. Sebenarnya
pemrograman ini bisa dibilang sebagai pemrograman paralel yang ideal, karena
tanpa biaya komunikasi, lebih banyak peningkatan kecepatan yang bisa dicapai.
2 Taksonomi
dari model pemrosesan paralel dibuat berdasarkan alur instruksi dan alur data
yang digunakan:
·
SISD (Single Instruction Single
Datapath) merupakan prosesor tunggal, yang bukan paralel. SIMD (Single Instruction
Multiple Datapath)alur instruksi yang sama dijalankan terhadap banyak alur data
yang berbeda. Alur instruksi di sini kalau tidak salah maksudnya ya program
komputer itu. trus datapath itu paling ya inputnya, jadi inputnya lain-lain
tapi program yang digunakan sama.
·
MIMD (Multiple Instruction Multiple
Datapath)alur instruksinya banyak, alur datanya juga banyak, tapi masing-masing
bisa berinteraksi.MISD (Multiple Instruction Single Datapath)alur instruksinya
banyak tapi beroperasi pada data yang sama.
TUJUAN
PARALLEL PROCESSING
Tujuan utama dari
pemrosesan paralel adalah untuk meningkatkan performa komputasi. Semakin banyak
hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin
banyak pekerjaan yang bisa diselesaikan. Komputasi paralel adalah
salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan
beberapa komputer secara bersamaan.
Biasanya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena
harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi
yang banyak.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.
Pemrograman Paralel
sendiri adalah teknik pemrograman komputer yang memungkinkan eksekusi
perintah/operasi secara bersamaan. Bila komputer yang digunakan
secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah
yang terhubung dalam satu jaringan komputer, biasanya disebut sistem
terdistribusi. Bahasa pemrograman yang populer digunakan dalam pemrograman
paralel adalah MPI (Message Passing Interface) dan PVM (Parallel Virtual
Machine).
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.
Tentang
MultiCore
Akhir-akhir ini,
prosesor lebih menekankan pada multiple core. Tetapi hal tersebut belum
termasuk dalam komputasi paralel karena prosesor tersebut masih
menggunakan basic pemrosesan serial. Meskipun bisa dikatakan,
multicore merupakan pendekatan perlahan menuju ke pemrosesan berorientasi
paralel.
Kita lihat saja skema
MultiCore yang dikembangkan Intel maupun AMD. Keduanya masih menggunakan basis
pemrosesan sequensial. Tetapi dengan level atas pemrosesan yang tidak tunggal
seperti pada komputasi PC pada umumnya. Oleh karena itu, mengapa komputasi
multicore masih bisa compatible dengan perangkat lunak yang ada
sebelumnya yang digunakan untuk single core. Begitu juga halnya berlaku untuk
lebar jalur data.
Sedangkan berdasar
wikipedia tetap membagi multicore termasuk dalam komputasi paralel, yang hampir
sama dengan komputer multiprosesor, karena masih dalam satu mesin
komputer. Dalam hal ini wikipedia lebih menekankan pembagian berdasar
penggunaan jaringan atau tidak.
Sumber :