PARALLEL COMPUTATION
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.
REFERENSI :
http://chachados.blogspot.co.id/2013/07/parallel-computation.html
Komentar
Posting Komentar