Parallel Computation
· Parallel Concept
Parallel
computation adalah salah satu pemrograman komputer yang memungkinkan untuk
melakukan eksekusi perintah secara bersamaan dan berbarengan dalam satu ataupun
banyak prosesor di dalam sebuah CPU. Parallel computation sendiri berguna untuk
meningkatkan performa komputer karena semakin banyak proses yang bisa
dikerjakan secara bersamaan maka akan makin cepat.
Konsep
paralel adalah sebuah kemampuan prosesor untuk melakukan sebuah tugas ataupun
banyak tugas secara simultan ataupun bersamaan, dengan kata lain prosesor mampu
melakukan satu ataupun banyak tugas dalam satu waktu.
· 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.
Menurut
Gustafson proses terdistribusi adalah sebuah komputasi paralel berjalan dengan
menggunakan dua atau lebih mesin untuk mempercepat penyelesaian masalah dengan
memperhatikan faktor eksternal, seperti kemampuan mesin dan kecepatan proses
tiap-tiap mesin yang digunakan.
Contoh
dari proses terdistribusi adalah ketika terdapat macam masalah diberikan pada
satu master, maka dengan menggunakan komputer paralel masalah terseut akan
terpecah menjadi beberapa bagian secara terdistribusi.
· Architectural Parallel Computer
Menurut
seorang Designer Processor, taksonomi Flynn, Arsitektur Komputer dibagi menjadi
4 baguan, yaitu
SISD
(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.
SIMD(Single
Instruction, Multiple Data) 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(Multiple
Instruction, Single Data) 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(
Multiple Instruction, Multiple Data) 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.
· 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.
· Pengantar Massage Passing, 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
membuatsebuah 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 - pertimbangandiantaranya adalah
latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor
OpenMP
(Open Multi-Processing) adalah sebuah antarmuka pemrograman aplikasi (API) yang
mendukung multi processing shared memory pemrograman di C, C++ dan Fortran pada
berbagai arsitektur, termasuk UNix dan Microsoft Windows platform. 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.
· Pengantar Pemograman CUDA GPU
Sebelum
saya membahas tentang CUDA, saya akan membahas 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.