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. Parallel computation menggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat programberjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek,seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya, Maksudnya program dijalankan dengan banyak CPU secara bersamaan dengan tujuan untuk membuat program yang lebih baik dan dapat diproses dengan cepat. Dapat diambil kesimpulan bahwa pada parallel processing berbeda dengan istilah multitasking, yaitu satu CPU mengangani atau mengeksekusi beberapa program sekaligus, parallel processing dapat disebut juga dengan istilah parallel computing. 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.
DISTRIBUTED
PROCESSING
Distributed
Processing adalah aktivitas memproses informasi dalam suatu organisasi yang
dijalankan oleh jaringan komputer yang tersambung oleh saluran telekomunikasi
yang terpusat pada fasilitas induk komputer. Proses ini menggunakan pemrosesan
paralel pada beberapa mesin. Misalnya proses transaksi yang terjadi pada
beberapa mesin ATM sebuah bank. Ketika ribuan nasabah menggunakan mesin ATM
pada saat yang bersamaan, bayangkan berapa banyak proses yang harus dikerjakan
jika hanya terdapat 1 komputer server. Oleh karena itu dengan menggunakan
Distributed Processing, beban pemrosesan yang besar dapat di kerjakan oleh
beberapa komputer yang terhubung oleh jaringan dalam waktu yang bersamaan
secara simultan. Beban pemrosesan yang besar itu dipecah menjadi beberapa beban
kecil guna mempercepat proses.
ARCHITECTURAL
PARALLEL COMPUTER
Single
Intruction Stream, Single Data Stream (SISD)
Single Instruction – Single Data.
Komputer jenis ini hanya memiliki satu prosesor ( single processor ). Dimana
semua instruksi di eksekusi secara serial ( terurut satu demi satu ) dan
memungkinkan adanya overlapping di setiap bagian instruksi dalam pelaksanaan
eksekusi. Komputer ini adalah tipe komputer konvensional. Beberapa contoh
komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1
dan PDP 1.
Single
Instruction Stream Multiple Data Stream (SIMD)
Single Instruction – Multiple Data.
Komputer jenis ini hanya dapat mengeksekusi satu instruksi dan memiliki lebih
dari satu prosesor. Satu eksekusi dilakukan secara paralel pada data yang
berbeda pada level lock-step. Komputer vektor adalah salah satu komputer
paralel yang menggunakan arsitektur ini. 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 ).
Multiple
Instruction Stream, Single Data Stream (MISD)
Multiple Instructions – Single Data.
Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk
prototipe untuk penelitian. Teorinya komputer ini memiliki satu prosesor dan
mengeksekusi beberapa instruksi secara paralel tetapi praktiknya tidak ada
komputer yang dibangun dengan arsitektur ini karena sistemnya tidak mudah
dipahami.
Multiple
Instruction Stream, Multiple Data Stream (MIMD)
Multiple Instructions – Multiple
Data. Komputer jenis ini dapat mengeksekusi lebih dari satu instruksi secara
paralel dengan lebih dari satu prosesor. Tipe komputer ini yang paling banyak
digunakan untuk membangun komputer paralel, bahkan banyak supercomputer yang
menerapkan arsitektur ini. 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
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.
PENGANTAR MESSAGE PARSING DAN OPEN
MP
Message Passing Interface (MPI)
MPI adalah sebuah standard
pemrograman yang memungkinkan pemrogram untuk membuat sebuah 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-pertimbangan diantaranya
adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor. MPI
ini merupakan standard yang dikembangkan untuk membuat aplikasi pengirim pesan
secara portable. Sebuah komputasi paralel terdiri dari sejumlah proses, dimana
masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai
variabel lokal, dan tidak ada mekanismesuatu proses yang bisa mengakses secara
langsung memori yang lain. Pembagian data antar proses dilakukan dengan
message passing, yaitu dengan mengirim dan menerima pesan antar proses.
MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan.
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
OpenMP merupakan API yang mendukung
multi-platform berbagi memori multiprocessing pemrograman C , C + + , dan
Fortran , pada kebanyakan arsitektur prosesor dan system operasi , termasuk
Solaris , AIX , HP-UX , GNU / Linux , Mac OS X , dan Windows platform. Ini
terdiri dari satu set perintah kompiler, rutinitas library, dan variable
lingkungan yang mempengaruhi perilaku run-time. 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.
PENGANTAR PEMROGRAMAN CUDA GPU
GPU ( Graphical Processing Unit )
awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering
pada kartu grafik saja, tetapi seiring dengan semakin meningkatnya kebutuhan
rendering, terutama untuk mendekati waktu proses yang realtime, maka meningkat
pula kemampuan prosesor grafik tersebut. akselerasi peningkatan teknologi GPU
ini lebih cepat daripada peningkatan teknologi prosesor sesungguhnya ( CPU ),
dan pada akhirnya GPU menjadi General Purpose, yang artinya tidak lagi hanya
untuk melakukan rendering saja melainkan bisa untuk proses komputasi secara
umum. Penggunaan Multi GPU dapat mempercepat waktu proses dalam mengeksekusi
program karena arsitekturnya yang natively parallel. Selain itu Peningkatan
performa yang terjadi tidak hanya berdasarkan kecepatan hardware GPU saja,
tetapi faktor yang lebih penting adalah cara membuat kode program yang
benarbenar bisa efektif berjalan pada Multi GPU. CUDA merupakan teknologi anyar
dari produsen kartu grafis Nvidia, dan mungkin belum banyak digunakan orang
secara umum. Kartu grafis lebih banyak digunakan untuk menjalankan aplikasi
game, namun dengan teknologi CUDA ini kartu grafis dapat digunakan lebih
optimal ketika menjalankan sebuah software aplikasi. Fungsi kartu grafis Nvidia
digunakan untuk membantu Processor (CPU) dalam melakukan kalkulasi dalam proses
data. CUDA merupakan singkatan dari Compute Unified Device Architecture,
didefinisikan sebagai sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia.
Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar,
video, rendering 3D, dan lain sebagainya. VGA – VGA dari Nvidia yang sudah
menggunakan teknologi CUDA antara lain :
Nvidia GeForce GTX 280, GTX 260,9800
GX2, 9800 GTX+, 9800 GTX, 9800 GT, 9600 GSO, 9600 GT, 9500 GT, 9400 GT, 9400 mGPU, 9300
mGPU, 8800 Ultra, 8800 GTX, 8800 GTS, 8800 GT, 8800 GS, 8600 GTS, 8600 GT, 8500
GT, 8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri sejenis untuk kelas
mobile ( VGA notebook ). Singkatnya, CUDA dapat memberikan proses dengan
pendekatan bahasa C, sehingga programmer atau pengembang software dapat lebih
cepat menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi seperti
teknologi ilmu pengetahuan yang spesifik. CUDA sekarang bisa dimanfaatkan untuk
aplikasi multimedia. Misalnya meng-edit film dan melakukan filter gambar.
Sebagai contoh dengan aplikasi multimedia, sudah mengunakan teknologi CUDA.
Software TMPGenc 4.0 misalnya membuat aplikasi editing dengan mengambil sebagian
proces dari GPU dan CPU. VGA yang dapat memanfaatkan CUDA hanya versi 8000 atau
lebih tinggi.
Sumber :
https://abaihisoftskill3.blogspot.com/2017/06/parallel-computation.html
http://andreasrnt.blogspot.com/2018/03/parallel-computation-kelompok-5-tugas.html
https://mugnimaestra.wordpress.com/2018/07/01/tugas-4-softskill-parallel-computation/
http://okyasha7.blogspot.com/2016/06/tugas-softskill-parallel-computation.html
Komentar
Posting Komentar