Parallel computing adalah penggunakan lebih dari satu CPU
untuk menjalankan sebuah program secara simultan. Idealnya, parallel
processing membuat program berjalan lebih cepat karena semakin banyak CPU yang
digunakan, berbeda dengan komputasi tunggal yang hanya menggunakan satu CPU
saja. Tetapi dalam prakteknya seringkali sulit membagi program sehingga dapat
dieksekusi oleh CPU yang berbeda-beda tanpa berkaitan di antaranya, Maksudnya
program dijalankan dengan banyak CPU secara bersamaan dengan tujuan untuk
membuat program yang lebih baik dan dapat diproses dengan cepat. Dapat diambil
kesimpulan bahwa pada parallel processing berbeda dengan istilah multitasking,
yaitu satu CPU mengangani atau mengeksekusi beberapa program sekaligus, parallel
processing dapat disebut juga dengan istilah parallel computing. Kemudian untuk perbedaan
antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar
di bawah ini:
Gambar 1 Penyelesaian Sebuah
Masalah pada Komputasi Tunggal
Gambar 2 Penyelesaian Sebuah
Masalah pada Komputasi Paralel
Jenis-Jenis
Komputer Paralel
Berdasarkan
tingkatan perangkat keras yang mendukung paralelisme, secara umum
komputer-komputer paralel dapat diklasifikasikan:
1.
Multicore
processing
Merupakan
prosesor yang memiliki beberapa unit pengeksekusi. Sebuah prosesor multicore
dapat melakukan beberapa instruksi per siklus dari beberapa aliran instruksi.
2.
Symmetric
multiprocessing
Merupakan
sebuah sistem komputer dengan beberapa prosesor yang identik, dapat menggunakan
struktur berbagi memori atau memori tersendiri yang saling terhubung melalui
bus.
3.
Distributed
computing
Merupakan
sebuah sistem komputer dengan memori terdistribusi, dimana masing-masing elemen
pemrosesan dihubungkan oleh jaringan.
4.
Cluster
computing
Merupakan
sekumpulan komputer yang bekerja sama yang dihubungkan oleh jaringan, sehingga
dapat dilihat sebagai sebuah kesatuan, cluster komputer ini dikoordinasi oleh
sebuah komputer induk yang bertugas untuk mendistribusikan pekerjaan kepada
masing-masing komputer lainnya.
5.
Massive
parallel processing
Merupakan
sebuah komputer tunggal dengan banyak prosesor yang terhubung dalam sebuah
jaringan. Di dalam MPP tiap CPU mempunyai memory, sistem operasi dan aplikasi
yang sama. Tiap subsistem berkomunikasi satu dengan yang lainnya melalui
interkoneksi berkecepatan tinggi.
6.
Grid
computing
Grid
computing memanfaatkan Internet dalam berkomunikasi antar komputer untuk
menyelesaikan suatu permasalahan dan merupakan paralel yang paling
terdistribusi.
7.
Specialized
parallel computer Komputer paralel yang berfungsi untuk
menyelesaikan tugas khusus.
A. Parallelism
Concept
Komputasi
paralel merupakan salah satu teknik komputasi, dimana proses komputasinya
dilakukan oleh beberapa resources (komputer) yang independen
secara bersamaan. Komputasi paralel biasanya diperlukan pada saat terjadinya
pengolahan data dalam jumlah besar atau dalam memenuhi proses komputasi yang
sangat banyak. Selanjutnya, komputasi paralel ini juga dapat ditemui dalam
kasus kalkulasi numerik dalam penyelesaian persamaan matematis di bidang fisika
kimia dll. Dalam menyelesaikan suatu masalah, komputasi paralel memerlukan
infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan
dengan jaringan dan mampu bekerja secara pararel, untuk itu diperlukan
perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan
untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel.
kemudian
pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Hal
ini disebabkan karena komputer-komputer tersebut tidak dapat berjalan secara
otomatis, namun harus ada program/instruksi yang menjalankannya. Pemrograman
paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi
secara bersamaan, baik dalam komputer dengan satu ataupun banyak 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. 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.
Contoh
penggunaan konsep ini pada kehidupan sehari-hari adalah pada pintu masuk/keluar
jalan tol (jalan raya bebas hambatan). Biasanya pada pintu masuk/keluar jalan
tol yang sepi gardu tol cenderung lebih sedikit dibandingkan pintu masuk/keluar
jalan tol yang ramai, hal ini di maksudkan untuk mengurangi jumlah antrian
kendaraan yang ingin melewati gardu tol tersebut, karena jika dalam satu waktu
banyak kendaraan bisa di layani, maka akan mengurangi waktu antrian kendaraan.
B. Distributed Processing
Pemrosesan terdistribusi merupakan proses
pendistribusian pengolahan paralel dalam pemrosesan paralel menggunakan
beberapa mesin. Jadi, bisa di bilang kemampuan dari suatu komputer-komputer
yang dijalankan secara bersamaan untuk memecahkan suatu masalah dengan proses
yang cepat.
Didistribusikan pengolahan paralel menggunakan pemrosesan
paralel pada beberapa mesin. Salah satu contoh dari hal ini adalah bagaimana
beberapa komunitas memungkinkan pengguna untuk mendaftar dan mendedikasikan
komputer mereka sendiri untuk memproses beberapa data set yang diberikan kepada
mereka oleh server. Ketika ribuan pengguna mendaftar untuk ini, banyak data
dapat diproses dalam jumlah yang sangat singkat.
C. Architectural Parallel Computer
1.
Single
Instruction Single Data Stream (SISD)
Pada model ini hanya
digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai
model untuk komputasi tunggal. Pada computer jenis ini semua instruksi
dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping
(tumpang tindih fungsi yang digunakan) dalam eksekusi setiap bagian instruksi
(pipelining). Pada umumnya computer SISD berupa computer yang terdiri atas satu
buah pemroses (single processor). Namun computer SISD juga mungkin memiliki
lebih dari satu unit fungsional (modul memori, unit pemroses, dan lain-lain),
selama seluruh unit fungsional tersebut berada dalam kendali sebuah unit
pengendali. Contoh mesin SISD adalah PC tradisional atau mainframe yang tua.
2.
Single
Instruction Multiple Data Stream (SIMD)
Pada computer 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. Contoh dari
SIMD adalah prosesor larik (array processor) atau GPU.
3.
Multiple
Instruction Single Data Stream (MISD)
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 computer
jenis ini kecuali dalam bentuk prototype untuk penelitian dan tidak pernah
dirilis secara massal.
4.
Multiple
Instruction Multiple Data Stream (MIMD)
Pada sistem computer MIMD murni terdapat
interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran data dari
dank e memori berasal dari space data yang sama bagi semua pemroses. Komputer
MIMD bersifat tightly coupled (global memory) jika tingkat interaksi antara
pemroses tinggi dan disebut loosely couple jika tingkat interaksi antara
pemroses rendah. Komputer ini memiliki beberapa prosesor yang bersifat otonomus
yang mampu melakukan instruksi yang berbeda pada data yang berbeda. Sistem
terdistribusi umumnya dikenal sebagi MIMD, entah itu menggunakan satu ruangan
memori secara bersama-sama atau sebuah ruangan memori yang terdistribusi.
D. Pengantar
Thread Programming
Sebuah thread di dalam pemrograman komputer
adalah sebuah informasi terkait tentang penggunaan sebuah program tunggal yang
dapat menangani beberapa pengguna secara bersamaan.Thread ini memungkinkan
program untuk mengetahui bagaimana user masuk ke dalam program secara
bergantian dan user akan masuk kembali menggunakan user yang berbeda. Multiple
thread dapat berjalan bersamaan dengan proses lainnya membagi sumberdaya
menjadi memori, disaat proses lain tidak membaginya.. Thread programming di
bagi menjadi 2 yaitu:
1. Static Threading
Teknik
ini biasa digunakan untuk komputer dengan chip multiprocessors 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.
2.
Dynamic
Multithreading
Teknik
ini 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.
E. Pengantar Message Pasing, Open MP
Message Passing
merupakan sebuah bentuk dari komunikasi yang digunakan di komputasi paralel,
OOT (Object Oriented Programming) atau Pemrograman Berbasis Objek dan
komunikasi interproses. MPI adalah sebuah standard pemrograman yang
memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan
secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk
dikirimkan ke masing–masing compute node yang kemudian masing–masing compute
node tersebut mengolah dan mengembalikan hasilnya ke komputer head node.
Kegunaan
MPI yang lain adalah :
1.
menulis kode paralel secara
portable
2.
mendapatkan performa yang
tinggi dalam pemrograman parallel
3.
menghadapi permasalahan
yang melibatkan hubungan data irregular atau dinamis yang tidak begitu
cocok dengan model data paralel.
OpenMP
Terdiri dari satu set perintah kompiler, perpustakaan rutinitas, dan variabel
lingkungan yang mempengaruhi run-time. Banyak Aplikasi dibangun dengan model
hibrida pemrograman paralel dapat
dijalankan pada komputer cluster dengan menggunakan OpenMP dan Message Passing
Interface (MPI), atau lebih transparan dengan menggunakan ekstensi OpenMP
non-shared memory systems.
F. Pengantar Pemograman CUDA GPU
Sebelum masuk
pada pembahasan CUDA kita harus mempelajari GPU terlebih dahulu. GPU dalah
sebuah processor khusus untuk memepercepat dan mengubah memori untuk
mempercepat pemrosesan gambar. GPU ini sendiri biasanya berada di dalam graphic
card komputer ataupun laptop.
CUDA
(Compute Unified Device Architecture) adalah suatu skema yang dibuat oleh
NVIDIA agar NVIDIA selaku GPU (Graphic Processing Unit) mampu melakukan
komputasi tidak hanya untuk pengolahan grafis namun juga untuk tujuan umum.
Jadi dengan adanya CUDA kita dapat memanfaatkan banyak prosesor dari NVIDIA
untuk melakukan proses perhitungan ataunpun komputasi yang banyak.
Sumber referensi:
http://chachados.blogspot.co.id/2013/07/parallel-computation.html