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 :
- 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
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 :
- 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.
- 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 :
0 komentar:
Posting Komentar