Parallel Computation
A. Paralelism
Concept
Ditulis
oleh : (Dessy Nathalia 52414767)
Sebelum mempelajari lebih jauh
komputasi paralel, maka kita perlu mengetahui dahulu makna dari komputasi
paralel. Komputasi paralel adalah suatu teknik untuk komputasi yang mana proses
komputasinya dilakukan secara bersamaan oleh beberapa komputer (resources) yang
independen. Komputasi ini biasa dipakai untuk suatu keperluan pengolahan data
dalam jumlah yang cukup besar seperti misalnya di industri keuangan,
bioinformastika, dan lain sebagainya. Tidak hanya untuk kasus pengolahan data,
komputasi paralel juga digunakan untuk menyelesaikan kasus kalkulasi numeric
dalam penyelesaian persamaan matematis di bidang fisika, kimia, dan beberapa
bidang ilmu lainnya.
Dalam menyelesaikan suatu permasalahan,
komputasi paralel memerlukan infrastruktur mesin paralel yang terdiri dari
banyak komputer yang akan dihubungkan satu dengan yang lainnya menggunakan
jaringan sehingga mampu bekerja secara paralel. Dan ada perangkat lunak
pendukung untuk menjalankan konsep paralel ini, dan perangkat lunak pendukung
itu sering disebut dengan middleware. Middleware ini berfungsi untuk mengatur
distribusi pekerejaan antar node dalam satu mesin paralel. Lalu langkah
selanjutnya, pemakai juga harus membuat pemrograman paralel untuk
merealisasikan komputasi yang baik. Dimana pemrograman paralel merupakan teknik
pemrogramam komputer yang dibuat untuk mengeksekusi perintah secara bersamaan
yang dilakukan oleh komputer dengan satu atau bahkan ganda dengan mesin
paralel.
Pemakaian komputer secara bersamaan
ini jika dilakukan dengan komputer-komputer secara terpisah yang terhubung
dalam suatu jaringan komputer, maka istilah ini disebut dengan sistem
terdistribusi (distributed computing). Jadi tujuan utama dari pemrograman paralel
yaitu untuk membuat performa komputasi semakin meningkat sehingga semakin
banyak hal yang bisa dilakukan secara bersamaan dalam waktu yang bersamaan
sehingga banyak pekerjaan yang dapat terselesaikan. Pada saat prakteknya,
komputasi paralel ini akan memanfaatkan beberapa CPU untuk memproses operasi
pada perangkat lunak yang telah ditentikan. Perangkat lunak bisa bekerja sangat
lambat ketika ditangani oleh satu CPU karena operasi yang harus diselesaikan
sangat banyak, rumit dan memiliki proses yang banyak. Prosesor dengan satu CPU
tersebut biasa disebut dengan single-core. Kini dengan perkembangan teknologi,
telah muncul penerapan paralel, maka prosesor modern mulai menerapkan multi-core
yang berarti dalam sebuah CPU terdapat lebih dari satu inti, hasilnya
pemrosesan operasi akan semakin lebih cepat. Kecepatan dalam pemrograman
paralel dapat diukur dari seberapa banyak peningkatan kecepatan (speed up) yang
didapat pada saat penggunaan teknik paralel.
Sumber:
b. Distributed Processing
Ditulis
oleh : (Miftah Huda 56414643)
Distributed Processing merupakan
sistem komputer yang menggunakan lebih dari satu komputer (atau prosesor) untuk
menjalankan aplikasi. Distributed Processing ini termasuk pemrosesan paralel
dimana satu komputer menggunakan lebih dari satu CPU untuk menjalankan
program.Perkembangan distributed processing terjadi karena kebutuhan untuk
dapat memecahkan masalah yang besar dan kompleks. Selain itu dengan adanya
distributed processing telah menambahkan kecepatan perangkat komputer dalam
melakukan tugas fungsional.
Suatu contoh permasalahan seperti
transaksi dalam mesin ATM pada sebuah bank. Ketika ribuan atau bahkan ratusan
nasabah menggunakan mesin ATM secara bersamaan, maka bayangkan berapa banyak
proses yang harus dikerjakan jika hanya menggunakan 1 komputer servers saja.
Untuk itu, penggunaan distributed processing ini membuat beban pemrosesan yang
banyak akan dikerjakan oleh beberapa komputer yang sudah terhubung oleh
jaringan dalam waktu yang bersamaan. Beban yang besar akan dipecah menjadi
beberapa beban kecil yang akan diselesaikan oleh komputer lainnya sehingga
proses lebih cepat terselesaikan.
Sumber :
C. Architectural Computer Parallel
Ditulis oleh : (Syafiq Mansawi 5A414559)
Architectural Computer Parallel
(Arsitektur Komputer Paralel) merupakan sekumpulan elemen pemroses (Processing
Elements) yang saling bekerjasama dalam menyelesaikan sebuah masalah besar.
Klasifikasi Arsitektur komputer
menurut Michael Flynn, berdasarkan karakteristiknya adalah sebagai berikut :
Ø Single
Intruction Stream, Single Data Stream (SISD)
model SISD |
Karakteristik SISD :
·
1 processor
·
1 intruksi
·
1 data yang sama
·
komputasi tunggal
·
serial. Konvensional
·
UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1
Ø Single
Instruction Stream Multiple Data Stream (SIMD)
Karakteristik
SIMD :
·
Multi processor
·
1 intruksi
·
Berbeda data
· ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP,
Thingking Machine CM-2 dan Cell Processor (GPU).
Ø Multiple
Instruction Stream, Single Data Stream (MISD)
Karakteristik
MISD :
·
Mutli processor
·
Multi intruksi
·
1 data yang sama
·
Masih belum ada yang menggunakan
Ø Multiple
Instruction Stream, Multiple Data Stream (MIMD)
Karakteristik
MIMD :
·
Mutli processor
·
Multi intruksi
·
Berbeda data
· IBM POWER5, HP/Compaq AlphaServer, Intel IA32,
AMD Opteron, Cray XT3 dan IBM BG/L.
Sumber :
D. Pengantar Thread Programming
Ditulis
oleh : (Hafizh Asy’ari 54414683)
Thread adalah urutan instruksi
terprogram terkecil yang dapat dikelola secara independen oleh scheduler yang
biasanya merupakan bagian dari sistem operasi. Thread hampir sama dengan
proses, namun dalam kebanyakan kasus, sebuah thread adalah komponen dari suatu
proses.
Threading dibagi menjadi 2, yaitu :
·
Static Threading
Static Threading merupakan teknik yang
memungkinkan thread berbagi memori di komputer shared memory dan mengeksekusi
program secara independen. Dalam sistem operasi, jika terdapat banyak thread
yang akan dijalankan, thread tersebut akan di tempatkan pada processor dan
dijalankan secara bergantian.
·
Dynamic Multithreading
Dynamic Multithreading merupakan pengembangan
dari teknik Static Threading yang bertujuan untuk mengoptimasi dan memberikan
kemudahan serta memperbaiki kekurangan dari teknik sebelumnya. Teknik ini
menyediakan scheduler yang bertugas melakukan load balancing secara otomatis.
Dari gambar diatas menunjukkan
ilustrasi dari sebuah proses yang berjalan, di dalamnya terdapat dua eksekusi
thread yang berjalan pada satu processor.
Dalam thread programming, antarmuka
standar untuk implementasi thread adalah POSIX Threads (Pthreads) yang
merupakan kumpulan panggilan library C-Function. Dalam model pemrograman
seperti CUDA yang dirancang untuk parallel computation, sebuah array dari
thread menjalankan kode yang sama secara paralel hanya dengan menggunakan
ID-nya untuk menemukan datanya di memori. Intinya, aplikasi harus dirancang
agar setiap thread melakukan operasi yang sama pada segmen memori yang berbeda
sehingga bisa beroperasi secara paralel dan menggunakan arsitektur GPU.
Sumber:
E. Pengantar Message Passing, OpenMP
Ditulis
oleh : (Putu Safnalita 58414639)
Message
Passing
Message passing adalah proses
pengiriman data, dimana data dari suatu memori disalin ke memori pada prosesor
lain. Karena proses pengiriman datanya antar memori lokal maka teknik message
passing biasanya digunakan untuk model
komputasi paralel dengan memori terdistribusi. Dalam model ini, proses atau
objek dapat mengirim dan menerima pesan (sinyal, fungsi, struktur data
kompleks, atau paket data) ke proses atau objek lain.
Terdapat dua metode dalam pengiriman pesan
yaitu :
·
Synchronous Message Passing
Sistem pengiriman pesan secara sinkron
mengharuskan pengirim dan penerima untuk menunggu satu sama lain saat mentransfer
pesan. Pengirim menunggu untuk mengirim pesan sampai penerima siap untuk
menerima pesan. Oleh karena itu tidak ada buffering. Selain itu pengirim tidak
bisa mengirim pesan untuk dirinya sendiri.
·
Asynchronous Message Passing
Sedangkan dalam komunikasi asinkron pengirim
dan penerima tidak saling menunggu dan dapat melakukan perhitungan sendiri saat
pengiriman pesan sedang dilakukan. Pengirim akan mengirim pesan kapanpun dia
mau. Pengirim tidak peduli ketika penerima belum siap untuk menerima pesan. Oleh
karena itu diperlukan buffering untuk menampung pesan sementara sampai penerima
siap menerima pesan. Selain itu pengirim dapat pesan untuk dirinya sendiri.
Selain berdasarkan metode pengiriman
pesan diatas, pengiriman pesan (message passing) dapat dibedakan berdasarkan
jumlah penerima pesan yaitu: Point to Point dan Broadcast. Perbedaan mendasar
keduanya adalah jumlah penerima yang menerima pesan. Pada Point to Point
penerimanya tunggal sedangkan pada broadcast jumlah penerimanya banyak.
OpenMP
(Open Multiprocessing)
OpenMP merupakan standar yang
digunakan untuk pemrograman paralel multithreading pada
arsitektur shared memory. OpenMP adalah sebuah antarmuka pemrograman
aplikasi (API) untuk menulis aplikasi multithread, berupa satu set
direktif compiler dan library untuk pemrograman aplikasi
paralel yang menyederhanakan penulisan program multithread pada C, C++, dan
Fortran pada berbagai arsitektur, termasuk Unix dan Microsoft Windows platform.
Program multithread dapat ditulis dalam berbagai cara. Beberapa diantaranya
memungkinkan untuk melakukan interaksi yang kompleks antar thread. OpenMP
mencoba untuk memberikan kemudahan pemrograman serta membantu dalam menghindari
kesalahan program, melalui pendekatan terstruktur. Pendekatan ini dikenal
sebagai model pemrograman fork-join. OpenMP dikelola oleh nirlaba teknologi
konsorsium OpenMP Arsitektur Review Board (ARB atau OpenMP), bersama-sama
didefinisikan oleh sekelompok perangkat keras komputer utama dan vendor
perangkat lunak, termasuk AMD, IBM, Intel, Cray, HP, Fujitsu, Nvidia, NEC,
Microsoft, Texas Instruments, Oracle Corporation, dan banyak lagi.
Sumber:
f. PENGANTAR PEMROGRAMAN CUDA – GPU
Ditulis
oleh : (Andreas Rinanto 51414134)
CUDA (Compute Unified Device
Architecture) merupakan platform model pemrograman dan komputasi paralel pada
GPU (Graphical Processing Unit) yang dikembangkan oleh NVIDIA. CUDA mampu
berkomunikasi langsung dengan GPU sehingga pengembang dapat mempercepat aplikasi
komputasi untuk segala multi-threading parallel execution dengan mengoptimalkan
bagian sekuensial dari beban kerja yang berjalan pada CPU. Hal ini tentunya
dapat membantu pengembang dalam menyelesaikan perhitungan dan algoritma
pemrograman yang kompleks.
CUDA didesain untuk program pengembang
dalam bahasa pemrograman seperti C, C++, Python, Fortran, dan MATLAB dengan
memanggil library yang sudah tersedia pada Bahasa pemrograman tersebut. Selain
itu, aksesibilitas yang dimiliki CUDA memudahkan pengembang dalam pemrograman
parallel untuk menggunakan GPU Source. CUDA juga mendukung beberapa framework
pemrograman seperti OpenACC dan OpenCL.
Selain itu, CUDA juga dapat digunakan
untuk beberapa aplikasi non-graphical programming seperti Kriptografi ataupun
Biologi Komputasi untuk pengembangan aplikasi analitis, model matematika, dan
simulasi komputasi teknik.
Sumber :
Komentar
Posting Komentar