Parallel Computation- Kelompok 5
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)
Model
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)
Model
MISD
Karakteristik MISD
:
·
Mutli processor
·
Multi intruksi
·
1 data yang sama
·
Masih belum ada yang menggunakan
Ø Multiple Instruction Stream, Multiple
Data Stream (MIMD)
Model
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 :
1. 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.
2. 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
Massage 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.
Operasi
dasar yang dibutuhkan untuk mendukung paradigma message passing adalah send dan
receive. Operasi pengirim membutuhkan proses pengiriman untuk
menspesifikasikan lokasi data, ukuran,
tipe dan tujuan. Operasi penerima harus melakukan penyesuaian dengan operasi
pengirim. Konsep message passing membuat lebih mudah untuk membangun sistem
yang memodelkan atau mensimulasikan masalah dunia nyata.
Terdapat
dua metode dalam pengiriman pesan yaitu :
1.
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.
2.
Ansynchronous 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 :
Tidak ada komentar:
Posting Komentar