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. Kasus kedua umum
ditemui di kalkulasi numerik untuk
menyelesaikan persamaan matematis di
bidang fisika (fisika
komputasi), kimia (kimia komputasi) dll.
Komputasi paralel berkaitan erat dengan
komputasi konkuren — mereka sering digunakan bersama-sama, dan sering digabung,
meskipun keduanya berbeda: dimungkinkan untuk memiliki paralelisme tanpa
konkurensi (seperti paralelisme bit-level), dan konkurensi tanpa paralelisme
(seperti multitasking) oleh pembagian waktu pada CPU single-core). Dalam
komputasi paralel, tugas komputasi biasanya dipecah menjadi beberapa,
seringkali banyak, sub-tugas yang sangat mirip yang dapat diproses secara
independen dan yang hasilnya digabungkan setelah itu, setelah selesai.
Sebaliknya, dalam komputasi serentak, berbagai proses seringkali tidak membahas
tugas terkait; ketika mereka melakukannya, seperti tipikal dalam komputasi
terdistribusi, tugas-tugas yang terpisah mungkin memiliki sifat yang bervariasi
dan seringkali memerlukan beberapa komunikasi antar-proses selama eksekusi.
Konsep
Paralelisme
Banyak perkembangan-perkembangan baru
dalam arsitektur komputer yang didasarkan pada konsep pemrosesan paralel.
Pemrosesan paralel dalam sebuah komputer dapat didefinisikan sebagai
pelaksanaan instruksi-instruksi secara bersamaan waktunya. Hal ini dapat
menyebabkan pelaksanaan kejadian-kejadian dalam interval waktu yang sama, dalam
waktu yang bersamaan atau dalam rentang waktu yang saling tumpang tindih.
Sekalipun didukung oleh teknologi prosesor
yang berkembang sangat pesat, komputer sekuensial tetap akan mengalami
keterbatasan dalam hal kecepatan pemrosesannya. Hal ini menyebabkan lahirnya
konsep keparalelan (parallelism) untuk menangani masalah dan aplikasi yang
membutuhkan kecepatan pemrosesan yang sangat tinggi, seperti misalnya prakiraan
cuaca, simulasi pada reaksi kimia, perhitungan aerodinamika dan lain-lain.
Konsep keparalelan itu sendiri dapat
ditinjau dari aspek design mesin paralel, perkembangan bahasa pemrograman
paralel atau dari aspek pembangunan dan analisis algoritma paralel. Algoritma
paralel itu sendiri lebih banyak difokuskan kepada algoritma untuk
menyelesaikan masalah numerik, karena masalah numerik merupakan salah satu
masalah yang memerlukan kecepatan komputasi yang sangat tinggi.
Pemrosesan
Terdistribusi
Pemrosesan terdistribusi adalah frasa yang
digunakan untuk merujuk ke berbagai sistem
komputer yang menggunakan lebih dari satu komputer (atau prosesor )
untuk menjalankanaplikasi . Ini
termasuk pemrosesan
paralel di mana satu komputer menggunakan lebih
dari satu CPU untuk menjalankan program .
Namun, lebih sering, pemrosesan
terdistribusi mengacu pada jaringan area
lokal (LAN) yang dirancang sehingga satu program
dapat berjalan secara bersamaan di berbagai situs.Sebagian besar sistem pemrosesan terdistribusimengandung perangkat
lunak canggih yang mendeteksi CPU yang menganggur
di jaringan dan
mem-parsing program untuk menggunakannya.
Bentuk lain dari pemrosesan terdistribusi melibatkan database
terdistribusi . Ini adalah basis data di
mana datadisimpan di
dua atau lebih sistem komputer. Sistem database melacak
di mana data berada sehingga sifat database yang terdistribusi tidak terlihat
oleh pengguna .
Arsitektural
Komputer Paralel
Arsitektur Komputer Paralel adalah
sekumpulan elemen pemroses (Processing Elements) yang bekerjasama dalam
menyelesaikan sebuah masalah besar. 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. Untuk
melakukan berbagai jenis komputasi paralel diperlukan infrastruktur mesin
paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan
dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk
digunakan perangkat lunak pendukung yang biasa disebut middleware yang berperan
mengatur distribusi antar titik dalam satu mesin paralel. Selanjutnya pemakai
harus membuat pemrograman paralel untuk merealisasikan komputasi.
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.
Sumber :