Parallel
Computing
Parallel computing atau komputasi parallel adalah salah satu teknik komputasi yang dilakukan bersamaan dengan memanfaatkan beberapa komputer. teknik ini pada umumnya digunakan pada saat kapasistas yang diperlukan besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntunan proses komputasi yang banyak, berbeda dengan serial computing yang proses nya dilakukan satu persatu, parallel computing akan memecah problem - problem yang ada kemudian akan diantrikan kedalam processor yang berbeda.
Why parallel computing ?
Alasan utama dalam penggunaan parallel
computing ini yaitu dapat menghemat waktu dan memangkas biaya, parallel
computing dapat dianalogikan seperti sebuah antrian dengan kasir yang banyak
dan antrian tersebut dapat selesai dengan waktu yang cepat, berbeda jika hanya
memiliki kasir satu buah saja maka akan memakan waktu yang cukup lama, belum
lagi data transaksi nya yang cukup besar, tentu saja itu akan menjadi sebuah
nightmare karena perlu menunggu waktu yang cukup lama.
Parallel computing adalah komputasi
yang future proof dimana dalam 20 tahun terakhir dapat diamati bahwa kebutuhan
internet cepat, distributed system, dan multi processor computer sangat
dibutuhkan. bahkan pada smartphone kita saja sudah menggunakan multi core yang
memang diperuntungkan untuk kecepatan performa komputasi yang dilakukan.
The history
Parallel computation merupakan salah
satu teknologi paling menarik sejak ditemukannya komputer pada tahun 1940-an.
Terobosan dalam pemrosesan parallel selalu berkembang dan mendapatkan tempat
disamping teknologi - teknologi lainnya sejak era kebangkitan (1950-an), era
mainframe (1960-an), era minis(1970-an), era pc(1980-an) dan era komputer
parallel(1990-an). Dengan berbagai pengaruh atas perkembangan teknologi
lainnya, dan bagaimana teknologi ini mengubah persepsi terhadap komputer dapat
dimengerti betapa pentingnya parallel computing. Inti dari parallel computingl
yaitu hardware, software dan aplikasinya. Parallel processing merupakan suatu
pemrosesan informasi yang lebih mendekatkan pada manipuasi rata - rata dari
elemen data terhadap satu atau lebih penyelesaian proses dari sebuah problem.
Untuk melakukan perhitungan komputasi dengan menggunakan 2 atau lebih
CPU/Processor dalam suatu komputer yang sama atau komputer yang berbeda dimana
dalam hal ini setiap instruksi dibagi kedalam beberapa instruksi kemudian
dikirim ke processor yang terlibat dalam proses dan dilakukan secara bersamaan
disebut dengan parallel computation. Software yang bertugas untuk pembagian
proses komputasi digunakan Message Parsing Interfae(MPI).
Arsitektur komputer
parallel
Komputer SISD (Single
Instruction stream-Single Data stream)
Pada komputer jenis ini semua instruksi
dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping
dalam eksekusi setiap bagian instruksi (pipelining).
Pada umumnya komputer SISD berupa
komputer yang terdiri atas satu buah pemroses (single processor). Namun
komputer 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. Oleh karena itu model ini
dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya
merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa
contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600,
Cray 1 dan PDP 1.
Komputer SIMD (Single
Instruction stream-Multiple Data stream)
Pada komputer 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.
Sebagai contoh kita ingin mencari
angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5
processor. Pada setiap processor kita menggunakan algoritma atau perintah yang
sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari
deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari
urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain.
Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar,
Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
Komputer MISD (Multiple
Instuction stream-Single Data stream)
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 komputer jenis ini kecuali
dalam bentuk prototipe untuk penelitian.
Sebagai contoh, dengan menggunakan
kasus yang sama pada contoh model SIMD namun cara untuk menyelesaikannya yang
berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan
kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang
digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat
ini belum ada komputer yang menggunakan model MISD.
Komputer MIMD (Multiple
Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni
terdapat interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran dari
dan ke memori berasal dari space data yang sama bagi semua pemroses. Komputer
MIMD bersifat tightly coupled jika tingkat interaksi antara pemroses tinggi dan
disebut loosely coupled jika tingkat interaksi antara pemroses rendah.
Pada Multiple Instruction, Multiple
Data biasanya menggunakan banyak processor dengan setiap processor memiliki
instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer
yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa
komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer,
Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
Arsitektur memori
parallel computation
Shared memory
Arsitektur ini menyediakan global
addressing sehingga berbagai prosesor mempunyai cara pengaksesan memori yang
seragam. Setiap perubahan pada suatu lokasi memori oleh suatu prosesor akan
selalu terlihat oleh prosesor lain. Kelebihan dari arsitektur ini antara lain
adalah pengaksesan memori yang user friendly dan performansi yang baik dalam
penggunaan data bersama antar task. Sedangkan kekurangannya antara lain adalah
kurangnya skalabilitas ketika terjadi penambahan prosesor, di mana akan terjadi
peningkatan traffic antara prosesor ke shared memory dan antara cache coherent
system dengan memori sebenarnya.
Berdasarkan
frekuensi akses, ada dua jenis shared memory :
·
Uniform
Memory Access (UMA). Setiap prosesor memiliki hak pengaksesan yang seragam
dengan prosesor lain
·
Non
Uniform Memory Access (NUMA). Tidak semua prosesor memiliki hak yang sama dalam
mengakses memori
Distributed memory
Arsitektur ini mempunyai
karakteristik di mana setiap prosesor memiliki memorinya masing-masing,
sehingga eksekusi instruksi dapat berjalan secara independen antara satu
prosesor dengan yang lain. Prosesor akan menggunakan jaringan ketika membutuhkan
akses ke memori non lokal. Akses ini sepenuhnya menjadi tanggung jawab penulis program. Kelebihan dari arsitektur
ini adalah terjaganya skalabilitas ketika terjadi penambahan prosesor. Sedangkan kekurangannya
adalah penulis program harus berurusan dengan detail komunikasi data antara
prosesor dan memori non lokal.
Distributed Processing atau
Distributed Computing System adalah sekumpulan peralatan pemrosesan yang saling
terhubung melalui jaringan komputer dan saling bekerjasama untuk mengerjakan
tugas-tugas tertentu. Yang dimaksud dengan peralatan pemrosesan dataadalah
peralatan komputasi yang dapat mengeksekusi sendiri sebuah program.
Sekumpulan peralatan yang saling
terhubung akan mendistribusikan berbagai macam hal, dianataranya adalah:
·
Processing
Logic / Pemrosesan secara logis
·
Fungsi.
Beberapa fungsi sistem komputer dapat didelegasikan ke beberapa hardware atau
software
·
Data
·
Kontrol
Kriteria Distributed
Processing
Pemrosesan terdistribusi
(Distributed Processing) dapat dikelompokkan berdasarkan beberapa kriteria,
yaitu:
·
Degree
of Computing / tingkat hubungan : Tinggi atau rendah ? Jumlah data yang saling
digunakan dibandingkan dengan jumlah pemrosesan lokal.
·
Struktur
antar hubungan : kuat atau lemah ? Jika komponen di Share dikatakan kuat ?
·
Kesalingtergantungan
komponen-komponen : Kuat atau lemah dalam mengekseskusi proses.
·
Keselarasan
antar komponen : selaras atau tidak selaras ?
·
Thread Programming
Threading / Thread adalah sebuah
alur kontrol dari sebuah proses. Konsep threading adalah menjalankan 2 proses (
proses yang sama atau proses yang berbeda ) dalam satu waktu.
Contoh:
Sebuah web browser mempunyai thread
untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi
sebagai penerima data dari network.
Threading
dibagi menjadi 2, yaitu :
1. Static Threading. Teknik ini biasa
digunakan untuk komputer dengan chip multi processors 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. 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).
MPI (Message Passing
Interface)
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. Untuk merancang aplikasi paralel tentu membutuhkan banyak
pertimbangan – pertimbangan diantaranya adalah latensi dari jaringan dan lama
sebuah tugas dieksekusi oleh prosesor.MPI ini merupakan standard yang
dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah
komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja
pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada
mekanisme suatu proses yang bisa mengakses secara langsung memori yang lain.
Pembagian data antar proses dilakukan dengan message passing, yaitu dengan
mengirim dan menerima pesan antar proses.
MPI
menyediakan fungsi-fungsi untuk menukarkan antar pesan. Kegunaan MPI yang lain
adalah
·
Menulis
kode paralel secara portable,
·
Mendapatkan
performa yang tinggi dalam pemrograman paralel, dan
·
Menghadapi
permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak
begitu cocok dengan model data paralel.
Tidak ada komentar:
Posting Komentar