Parallel 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 (di industri keuangan, bioinformatika, dll)
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 (fisika komputasi), kimia (kimia
komputasi), dll. Dalam menyelesaikan suatu masalah, komputasi paralel
memerlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang
dihubungkan dengan jaringan dan mampu bekerja secara paralel.
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. Tidak berarti dengan mesin paralel semua program yang
dijalankan diatasnya otomatis akan diolah secara paralel. Pemrograman paralel
adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah /
operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu
(prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel ) 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 (distributed computing).
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.
Analogi yang paling
gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat
anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan
bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yang
anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.
Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan
kecepatan (speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara
informal, bila anda memotong bawang sendirian membutuhkan waktu 1 jam dan
dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam maka anda
memperoleh peningkatan kecepatan sebanyak 2 kali.
Distributed
Processing
Distributed Processing adalah kemampuan menjalankan semua
proses pengolahan data secara bersama antara komputer yang berfungsi sebagai
pusat dengan beberapa komputer yang lebih kecil dan saling dihubungkan melalui
jalur komunikasi. Setiap komputer tersebut memiliki prosesor mandiri sehingga
mampu mengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi
digabungkan menjadi satu penyelesaian total. Jika salah satu prosesor mengalami
kegagalan atau masalah maka prosesor yang lain akan mengambil alih tugasnya.
Dalam proses distribusi sudah mutlak diperlukan perpaduan yang mendalam antara
teknologi komputer dan telekomunikasi, karena selain proses yang harus
didistribusikan, semua host komputer wajib melayani terminal-terminalnya dalam
satu perintah dari komputer pusat.
Architectural Parallel Computer
Architectural Parallel Computer 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.Michael J.
Flynn menciptakan satu diantara sistem klasifikasi untuk komputer dan
program paralel, yang dikenal dengan sebutan Taksonomi Flynn. Flynn mengelompokkan
komputer dan program berdasarkan banyaknya set instruksi yang dieksekusi dan
banyaknya set data yang digunakan oleh instruksi tersebut.
Berikut adalah taksonomi dari model pemrosesan paralel dibuat
berdasarkan alur instruksi dan alur data yang digunakan:
1.
SISD (Single Instruction stream, Single Data stream)
Komputer
tunggal yang mempunyai satu unit kontrol, satu unit prosesor dan
satuunit memori Instruksi dilaksanakan secara berurut tetapi boleh juga
overlap dalamtahapan eksekusi (overlap) Satu alur instruksi didecode untuk alur
data tunggal.
2.
SIMD (Single Instruction stream, Multiple Data stream)
Komputer
yang mempunyai beberapa unit prosesor di bawah satu supervisi satu unit common
control. Setiap prosesor menerima instruksi yang sama dari unit kontrol, tetapi
beroperasi pada data yang berbeda.
3.
MISD (Multiple Instruction stream, Single Data stream)
Sampai
saat ini struktur ini masih merupakan struktur teoritis dan belum ada komputer
dengan model ini.
4.
MIMD (Multiple Instruction stream, Multiple Data stream)
Organisasi
komputer yang memiliki kemampuan untuk memproses beberapa program dalam waktu
yang sama. Pada umumnya multiprosesor dan multikomputer termasuk dalam
kategori ini.
Pengantar Thread Programming
Dalam
pemrograman komputer, sebuah thread adalah informasi terkait dengan penggunaan
sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan.
Dari program point-of-view, sebuah thread adalah informasi yang dibutuhkan
untuk melayani satu pengguna individu atau permintaan layanan tertentu. Jika
beberapa pengguna menggunakan program atau permintaan bersamaan dari program
lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing
proses. Thread memungkinkan program untuk mengetahui user sedang masuk didalam
program secara bergantian dan akan kembali masuk atas nama pengguna yang
berbeda. Salah satu informasi thread disimpan dengan cara menyimpannya di
daerah data khusus dan menempatkan alamat dari daerah data dalam register.
Sistem operasi selalu menyimpan isi register saat program interrupted dan
restores ketika memberikan program kontrol lagi.
Sebagian
besar komputer hanya dapat mengeksekusi satu instruksi program pada satu waktu,
tetapi karena mereka beroperasi begitu cepat, mereka muncul untuk menjalankan
berbagai program dan melayani banyak pengguna secara bersamaan. Sistem operasi
komputer memberikan setiap program “giliran” pada prosesnya, maka itu
memerlukan untuk menunggu sementara program lain mendapat giliran.
Masing-masing program dipandang oleh sistem operasi sebagai suatu tugas dimana
sumber daya tertentu diidentifikasi dan terus berlangsung. Sistem operasi
mengelola setiap program aplikasi dalam sistem PC (spreadsheet, pengolah kata,
browser Web) sebagai tugas terpisah dan memungkinkan melihat dan mengontrol
item pada daftar tugas. Jika program memulai permintaan I / O, seperti membaca
file atau menulis ke printer, itu menciptakan thread. Data disimpan sebagai
bagian dari thread yang memungkinkan program yang akan masuk kembali di tempat
yang tepat pada saat operasi I / O selesai. Sementara itu, penggunaan bersamaan
dari program diselenggarakan pada thread lainnya. Sebagian besar sistem operasi
saat ini menyediakan dukungan untuk kedua multitasking dan multithreading.
Mereka juga memungkinkan multithreading dalam proses program agar sistem
tersebut disimpan dan menciptakan proses baru untuk setiap thread.
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.
Mekanisme
ini terhitung lambat, karenanya disebut dengan static. Selain itu teknik ini
tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian pekerjaan
yang dinamis di antara thread-thread menyebabkan load balancing-nya cukup
rumit. Untuk memudahkannya programmer harus menggunakan protocol komunikasi
yang kompleks untuk menerapkan scheduler load balancing. Kondisi ini mendorong
pemunculan concurrency platforms yang menyediakan layer untuk mengkoordinasi,
menjadwalkan, dan mengelola sumberdaya komputasi paralel. Sebagian platform
dibangun sebagai runtime libraries atau sebuah bahasa pemrograman paralel
lengkap dengan compiler dan pendukung runtime-nya.
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. Nested
parallelism memungkinkan sebuah subroutine di-spawned (ditelurkan dalam jumlah
banyak seperti telur katak) sehingga program utama tetap berjalan sementara
subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi
for namun memungkinkan iterasi loop dilakukan secara bersamaan.
Referensi :







