Parallel Computation
#AlfanCandraSetiawan
#4IA19
#ParallelComputation
#PengantarKomputasiModern
A.
Parallelism Concept
Paralelisme
(parallelism) lahir dari pendekatan yang biasa dipergunakan oleh para perancang
sistem untuk menerapkan konsep pemrosesan konkuren. Teknik ini meningkatkan
kecepatan proses dengan cara memperbanyak jumlah modul perangkat keras yang
dapat beroperasi secara simultan disertai dengan membentuk beberapa proses yang
bekerja secara simultan pada modul-modul perangkat keras tersebut. Secara
formal, pemrosesan paralel adalah sebuah bentuk efisien pemrosesan informasi
yang menekankan pada eksploitasi dari konkurensi kejadian-kejadian dalam proses
komputasi.Pemrosesan paralel dapat terjadi pada beberapa tingkatan (level)
proses. Tingkatan tertinggi pemrosesan paralel terjadi pada proses di antara
banyak job (pekerjaan) atau pada program yang menggunakan multiprogramming,
time sharing, dan multiprocessing. Multiprogramming kemampuan eksekusi terhadap
beberapa proses perangkat lunak dalam sebuah system secara serentak, jika
dibandingkan dengan sebuah proses dalam satu waktu, dan timesharing berarti
menyediakan pembagian selang waktu yang tetap atau berubah-ubah untuk banyak
program. Multiprocessing adalah dukungan sebuah sistem untuk mendukung lebih
dari satu prosesor dan mengalokasikan tugas kepada prosesor-prosesor tersebut.
Multiprocessing sering diimplementasikan dalam perangkat keras (dengan
menggunakan beberapa CPU sekaligus), sementara multiprogramming sering
digunakan dalam perangkat lunak. Sebuah sistem mungkin dapat memiliki dua
kemampuan tersebut, salah satu di antaranya, atau tidak sama sekali. Pemrosesan
paralel dapat juga terjadi pada proses di antara prosedurprosedur atau perintah
perintah (segmen program) pada sebuah program. Untuk meningkatkan kecepatan
proses komputasi, dapat ditempuh dua cara :
- Peningkatan kecepatan perangkat keras
Komponen
utama perangkat keras komputer adalah processor. Meskipun kecepatan processor
dapat ditingkatkan terus, namun karena keterbatasan materi pembuatnya, tentu
ada suatu batas kecepatan yang tak mungkin lagi dapat dilewati. Karena itu
timbul ide pembuatan komputer multiprocessor. Dengan adanya banyak processor
dalam satu komputer, pekerjaan bisa dibagi-bagi kepada masing-masing processor.
Dengan demikian lebih banyak proses dapat dikerjakan dalam satu saat.
Peningkatan kecepatan setiap proses bisa dicapai melalui peningkatan kecepatan
perangkat lunak. Kecepatan perangkat lunak sangat ditentukan oleh algoritmanya.
- Peningkatan kecepatan perangkat lunak
Program
komputer untuk komputer sekuensial harus menyediakan sederetan operasi untuk
dikerjakan oleh prosesor tunggal. Program komputer untuk komputer paralel harus
menyediakan sederetan operasi untuk beberapa prosesor untuk dikerjakan secara
paralel, termasuk operasi untuk mengatur dan mengitegrasikan prosesor-prosesor
yang terpisah tersebut mengerjakan suatu komputasi yang koheren. Kebutuhan akan
pembuatan dan pengaturan berbagai aktivitas komputasi paralel menambah dimensi
baru proses dari pemrograman komputer. Algoritma untuk problem yang spesifik
harus diformulasikan sedemikian rupa, agar menghasilkan aliran operasi paralel
yang kemudian akan dieksekusi di prosesor yang berbeda. Karena itu, meskipun
arsitektur multiprosesor dan multikomputer mempunyai pontensi yang tinggi untuk
meningkatkan kemampuan komputasi, potensi ini akan tercapai melalui pengertian
yang baik mengenai bahasa pemrograman paralel dan perancangan algoritma
paralel.
- Tingkat Paralelisme
Berdasarkan
tingkat paralelismenya prosesor paralel dapat dibagi menjadi beberapa tingkat
sebagai berikut :
1.
Komputer Array :
a.
Prosesor array : beberapa prosesor yang bekerja sama untuk mengolah set
instruksi yang sama dan data yang berbeda – beda atau biasa disebut SIMD
(Single Instruction-stream Multiple Data)
b.
Prosesor vektor : beberapa prosesor yang disusun seperti pipeline.
2.
Multiprosesor, yaitu sebuah sistem yang memiliki 2 prosesor atau lebih yang
saling berbagi memori.
3.
Multikomputer, yaitu sebuah sistem yang memiliki 2 prosesor atau lebih yang
masing-masing prosesor memiliki memori sendiri.
- Jenis-Jenis Pemrosesan Paralel
Pemrosesan
paralel dapat dibagi ke dalam beberapa klasifikasi, sebagai berikut :
1.
Berdasarkan simetri penjadwalannya, pemrosesan parallel dapat dibagi dalam
beberapa jenis:
a)
Asymmetric Multiprocessing (ASMP)
b)
Symmetric Multiprocessing (SMP)
c)
ClusteringPoliteknik Telkom Sistem Komputer
2.
Berdasarkan aliran instruksi dan datanya, pemrosesan parallel dapat dibagi
dalam beberapa jenis:
a)
SISD (Single Instruction on Single Data Stream)
b)
SIMD (Single Instruction on Multiple Data Stream)
c)
MISD (Multiple Instruction on Single Data Stream)
d)
MIMD (Multiple Instruction on Multiple Data Stream)
3.
Berdasarkan kedekatan antar prosesor, pemrosesan parallel dapat dibagi dalam
beberapa jenis:
a)
Multikomputer (Loosely Coupled/ local memory) dengan memori yang terdistribusi
b)
Multiprosesor (Tightly Coupled/ global memory) dengan memori yang dapat digunakan
bersama (shared memory)
B. Distributed Processing
Mengerjakan
semua proses pengolahan data secara bersama antara komputer 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 yang lain akan mengambil alih tugasnya.
C. Architectural Parallel Computer
- SISD
Yang
merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya
yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya
digunakan 1 processor saja. Oleh karena itu model ini bisa 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.
- SIMD
Yang merupakan singkatan dari Single
Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi
yang sama, namun setiap processor mengolah data yang berbeda. 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).
- MISD
Yang merupakan singkatan dari Multiple
Instruction, Single Data. MISD menggunakan banyak processor dengan setiap
processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal
ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan
kasus yang sama pada contoh model SIMD namun cara penyelesaian 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.
- MIMD
Yang merupakan singkatan dari Multiple
Instruction, Multiple Data. MIMD 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.
Singkatnya
untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa
digambarkan pada gambar di bawah ini:
Dari
perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi
paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang
banyak daripada komputasi tunggal.
Dari
penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan
kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi
paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus
mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika
kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah
kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.
D. Pengantar 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. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar
atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari
network. Threading dibagi menjadi 2 :
- 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.
- 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.
Sumber Materi:
Sumber Materi:
- http://chachados.blogspot.co.id/2013/07/parallel-computation.html
- http://robbyfahlevi.blogspot.com/2016/05/parallel-computation-1.html
- https://dpamudji.wordpress.com/2011/04/01/komputasi-paralel/
- https://en.wikipedia.org/wiki/Parallel_computing
Komentar
Posting Komentar